From e49dfb2570c689f3b2eb918f93267dc8a650c549 Mon Sep 17 00:00:00 2001 From: Madhav Soni Date: Wed, 17 Dec 2025 10:28:31 +0530 Subject: [PATCH] oatpp backend --- CMakeLists.txt | 24 + Dockerfile | 0 LICENSE | 201 -- README.md | 21 +- build/CMakeCache.txt | 380 ++++ build/CMakeFiles/4.2.1/CMakeCCompiler.cmake | 84 + build/CMakeFiles/4.2.1/CMakeCXXCompiler.cmake | 104 ++ .../4.2.1/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 33560 bytes .../4.2.1/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 33560 bytes build/CMakeFiles/4.2.1/CMakeSystem.cmake | 15 + .../4.2.1/CompilerIdC/CMakeCCompilerId.c | 934 +++++++++ build/CMakeFiles/4.2.1/CompilerIdC/a.out | Bin 0 -> 33736 bytes .../CMakeFiles/4.2.1/CompilerIdC/apple-sdk.c | 1 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 949 ++++++++++ build/CMakeFiles/4.2.1/CompilerIdCXX/a.out | Bin 0 -> 33736 bytes .../4.2.1/CompilerIdCXX/apple-sdk.cpp | 1 + build/CMakeFiles/CMakeConfigureLog.yaml | 1661 +++++++++++++++++ .../CMakeDirectoryInformation.cmake | 16 + build/CMakeFiles/InstallScripts.json | 7 + build/CMakeFiles/Makefile.cmake | 152 ++ build/CMakeFiles/Makefile2 | 122 ++ build/CMakeFiles/TargetDirectories.txt | 3 + build/CMakeFiles/cmake.check_cache | 1 + .../oatpp-showcase-exe.dir/DependInfo.cmake | 23 + .../oatpp-showcase-exe.dir/build.make | 114 ++ .../oatpp-showcase-exe.dir/cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../oatpp-showcase-exe.dir/compiler_depend.ts | 2 + .../oatpp-showcase-exe.dir/depend.make | 2 + .../oatpp-showcase-exe.dir/flags.make | 12 + .../oatpp-showcase-exe.dir/link.txt | 1 + .../oatpp-showcase-exe.dir/progress.make | 3 + .../oatpp-showcase-exe.dir/src/App.cpp.o | Bin 0 -> 1475336 bytes .../oatpp-showcase-exe.dir/src/App.cpp.o.d | 993 ++++++++++ build/CMakeFiles/progress.marks | 1 + build/Makefile | 181 ++ build/cmake_install.cmake | 61 + build/oatpp-showcase-exe | Bin 0 -> 1379248 bytes docker-compose.yml | 29 + docs/.vuepress/components/contributors.vue | 60 - docs/.vuepress/components/maintainers.vue | 53 - docs/.vuepress/components/seo.vue | 15 - docs/.vuepress/components/users.vue | 60 - docs/.vuepress/config.js | 145 -- docs/.vuepress/dist/404.html | 19 - docs/.vuepress/dist/about/index.html | 40 - docs/.vuepress/dist/api/latest/index.html | 41 - .../api/latest/oatpp-consul/Client/index.html | 72 - .../oatpp-consul/rest/Client/index.html | 44 - .../latest/oatpp-consul/rest/DTOs/index.html | 122 -- .../oatpp-curl/RequestExecutor/index.html | 65 - .../oatpp-curl/io/BodyDecoder/index.html | 52 - .../oatpp-curl/io/BodyInputStream/index.html | 49 - .../oatpp-curl/io/BodyOutputStream/index.html | 49 - .../api/latest/oatpp-curl/io/Curl/index.html | 55 - .../oatpp-curl/io/CurlBodyReader/index.html | 48 - .../oatpp-curl/io/CurlBodyWriter/index.html | 47 - .../io/CurlHeadersReader/index.html | 51 - .../oatpp-libressl/Callbacks/index.html | 46 - .../latest/oatpp-libressl/Config/index.html | 50 - .../oatpp-libressl/Connection/index.html | 58 - .../oatpp-libressl/TLSObject/index.html | 60 - .../client/ConnectionProvider/index.html | 52 - .../server/ConnectionProvider/index.html | 55 - .../latest/oatpp-mbedtls/Config/index.html | 56 - .../oatpp-mbedtls/Connection/index.html | 57 - .../client/ConnectionProvider/index.html | 52 - .../server/ConnectionProvider/index.html | 55 - .../latest/oatpp-mongo/bson/Types/index.html | 70 - .../latest/oatpp-mongo/bson/Utils/index.html | 44 - .../bson/mapping/Deserializer/index.html | 57 - .../bson/mapping/ObjectMapper/index.html | 58 - .../bson/mapping/Serializer/index.html | 58 - .../oatpp-mongo/bson/type/ObjectId/index.html | 51 - .../driver/command/Command/index.html | 44 - .../driver/command/Delete/index.html | 44 - .../driver/command/Find/index.html | 44 - .../driver/command/Insert/index.html | 44 - .../driver/command/Miscellaneous/index.html | 41 - .../driver/command/Update/index.html | 44 - .../driver/wire/Connection/index.html | 44 - .../driver/wire/Message/index.html | 44 - .../oatpp-mongo/driver/wire/OpMsg/index.html | 47 - .../latest/oatpp-openssl/Config/index.html | 53 - .../oatpp-openssl/Connection/index.html | 55 - .../client/ConnectionProvider/index.html | 53 - .../CertificateChainFile/index.html | 45 - .../configurer/CertificateFile/index.html | 45 - .../configurer/ContextConfigurer/index.html | 46 - .../configurer/PrivateKeyFile/index.html | 45 - .../server/ConnectionProvider/index.html | 55 - .../oatpp-postgresql/Connection/index.html | 45 - .../ConnectionProvider/index.html | 53 - .../oatpp-postgresql/Executor/index.html | 44 - .../oatpp-postgresql/QueryResult/index.html | 44 - .../latest/oatpp-postgresql/Types/index.html | 42 - .../mapping/Deserializer/index.html | 44 - .../oatpp-postgresql/mapping/Oid/index.html | 41 - .../mapping/PgArray/index.html | 41 - .../mapping/ResultMapper/index.html | 62 - .../mapping/Serializer/index.html | 44 - .../mapping/type/Uuid/index.html | 42 - .../latest/oatpp-postgresql/orm/index.html | 46 - .../ql_template/Parser/index.html | 55 - .../TemplateValueProvider/index.html | 44 - .../latest/oatpp-protobuf/Object/index.html | 46 - .../reflection/DynamicObject/index.html | 66 - .../reflection/Utils/index.html | 41 - .../latest/oatpp-sqlite/Connection/index.html | 45 - .../ConnectionProvider/index.html | 53 - .../latest/oatpp-sqlite/Executor/index.html | 44 - .../oatpp-sqlite/QueryResult/index.html | 44 - .../api/latest/oatpp-sqlite/Types/index.html | 42 - .../api/latest/oatpp-sqlite/Utils/index.html | 45 - .../mapping/Deserializer/index.html | 44 - .../mapping/ResultMapper/index.html | 64 - .../mapping/Serializer/index.html | 44 - .../oatpp-sqlite/mapping/type/Blob/index.html | 42 - .../api/latest/oatpp-sqlite/orm/index.html | 47 - .../ql_template/Parser/index.html | 54 - .../TemplateValueProvider/index.html | 44 - .../SimpleSsdpUdpStreamProvider/index.html | 47 - .../SimpleUdpStreamProvider/index.html | 48 - .../latest/oatpp-ssdp/SsdpMessage/index.html | 55 - .../oatpp-ssdp/SsdpStreamHandler/index.html | 55 - .../latest/oatpp-ssdp/UdpStream/index.html | 54 - .../oatpp-swagger/AsyncController/index.html | 47 - .../oatpp-swagger/Controller/index.html | 47 - .../latest/oatpp-swagger/Generator/index.html | 47 - .../api/latest/oatpp-swagger/Model/index.html | 158 -- .../latest/oatpp-swagger/Resources/index.html | 50 - .../api/latest/oatpp-swagger/Types/index.html | 47 - .../oatpp-swagger/oas3/Model/index.html | 186 -- .../api/latest/oatpp-test/Checker/index.html | 52 - .../api/latest/oatpp-test/UnitTest/index.html | 55 - .../web/ClientServerTestRunner/index.html | 50 - .../AsyncConnectionHandler/index.html | 61 - .../oatpp-websocket/AsyncWebSocket/index.html | 78 - .../latest/oatpp-websocket/Config/index.html | 46 - .../ConnectionHandler/index.html | 58 - .../oatpp-websocket/Connector/index.html | 51 - .../latest/oatpp-websocket/Frame/index.html | 65 - .../oatpp-websocket/Handshaker/index.html | 53 - .../latest/oatpp-websocket/SHA1/index.html | 49 - .../latest/oatpp-websocket/Utils/index.html | 46 - .../oatpp-websocket/WebSocket/index.html | 77 - .../oatpp-zlib/EncoderProvider/index.html | 61 - .../latest/oatpp-zlib/Processor/index.html | 49 - .../api/latest/oatpp/algorithm/CRC/index.html | 47 - .../oatpp/codegen/ApiClient_define/index.html | 51 - .../oatpp/codegen/ApiClient_undef/index.html | 47 - .../codegen/ApiController_define/index.html | 47 - .../codegen/ApiController_undef/index.html | 47 - .../oatpp/codegen/DTO_define/index.html | 47 - .../latest/oatpp/codegen/DTO_undef/index.html | 47 - .../oatpp/codegen/DbClient_define/index.html | 41 - .../oatpp/codegen/DbClient_undef/index.html | 41 - .../api_controller/auth_define/index.html | 41 - .../api_controller/auth_undef/index.html | 41 - .../api_controller/base_define/index.html | 46 - .../api_controller/base_undef/index.html | 41 - .../api_controller/bundle_define/index.html | 41 - .../api_controller/bundle_undef/index.html | 41 - .../api_controller/cors_define/index.html | 41 - .../api_controller/cors_undef/index.html | 41 - .../oatpp/codegen/dto/base_define/index.html | 43 - .../oatpp/codegen/dto/base_undef/index.html | 41 - .../oatpp/codegen/dto/enum_define/index.html | 43 - .../oatpp/codegen/dto/enum_undef/index.html | 41 - .../oatpp/core/IODefinitions/index.html | 63 - .../api/latest/oatpp/core/Types/index.html | 84 - .../oatpp/core/async/Coroutine/index.html | 153 -- .../core/async/CoroutineWaitList/index.html | 58 - .../latest/oatpp/core/async/Error/index.html | 49 - .../oatpp/core/async/Executor/index.html | 59 - .../latest/oatpp/core/async/Lock/index.html | 62 - .../oatpp/core/async/Processor/index.html | 53 - .../core/async/utils/FastQueue/index.html | 41 - .../async/worker/IOEventWorker/index.html | 62 - .../core/async/worker/IOWorker/index.html | 51 - .../core/async/worker/TimerWorker/index.html | 51 - .../oatpp/core/async/worker/Worker/index.html | 59 - .../core/base/CommandLineArguments/index.html | 59 - .../latest/oatpp/core/base/Config/index.html | 41 - .../oatpp/core/base/Countable/index.html | 47 - .../oatpp/core/base/Environment/index.html | 134 -- .../oatpp/core/base/ObjectHandle/index.html | 41 - .../core/concurrency/SpinLock/index.html | 48 - .../oatpp/core/concurrency/Thread/index.html | 44 - .../latest/oatpp/core/data/Bundle/index.html | 50 - .../core/data/buffer/FIFOBuffer/index.html | 70 - .../core/data/buffer/IOBuffer/index.html | 50 - .../core/data/buffer/Processor/index.html | 86 - .../core/data/mapping/ObjectMapper/index.html | 61 - .../core/data/mapping/TypeResolver/index.html | 67 - .../core/data/mapping/type/Any/index.html | 61 - .../data/mapping/type/Collection/index.html | 64 - .../core/data/mapping/type/Enum/index.html | 97 - .../core/data/mapping/type/List/index.html | 51 - .../core/data/mapping/type/Map/index.html | 66 - .../core/data/mapping/type/Object/index.html | 101 - .../data/mapping/type/PairList/index.html | 51 - .../data/mapping/type/Primitive/index.html | 67 - .../core/data/mapping/type/Type/index.html | 96 - .../data/mapping/type/UnorderedMap/index.html | 51 - .../data/mapping/type/UnorderedSet/index.html | 51 - .../core/data/mapping/type/Vector/index.html | 51 - .../oatpp/core/data/resource/File/index.html | 52 - .../data/resource/InMemoryData/index.html | 41 - .../core/data/resource/Resource/index.html | 50 - .../data/resource/TemporaryFile/index.html | 53 - .../core/data/share/LazyStringMap/index.html | 67 - .../core/data/share/MemoryLabel/index.html | 74 - .../core/data/share/StringTemplate/index.html | 87 - .../core/data/stream/BufferStream/index.html | 85 - .../core/data/stream/FIFOStream/index.html | 61 - .../core/data/stream/FileStream/index.html | 67 - .../oatpp/core/data/stream/Stream/index.html | 144 -- .../stream/StreamBufferedProxy/index.html | 41 - .../latest/oatpp/core/macro/basic/index.html | 41 - .../oatpp/core/macro/codegen/index.html | 42 - .../oatpp/core/macro/component/index.html | 46 - .../latest/oatpp/core/parser/Caret/index.html | 114 -- .../oatpp/core/parser/ParsingError/index.html | 48 - .../core/provider/Invalidator/index.html | 47 - .../oatpp/core/provider/Pool/index.html | 66 - .../oatpp/core/provider/Provider/index.html | 84 - .../latest/oatpp/core/utils/Binary/index.html | 45 - .../core/utils/ConversionUtils/index.html | 87 - .../latest/oatpp/core/utils/Random/index.html | 45 - .../latest/oatpp/core/utils/String/index.html | 48 - .../latest/oatpp/encoding/Base64/index.html | 64 - .../api/latest/oatpp/encoding/Hex/index.html | 61 - .../latest/oatpp/encoding/Unicode/index.html | 50 - .../latest/oatpp/network/Address/index.html | 54 - .../network/ConnectionHandler/index.html | 50 - .../oatpp/network/ConnectionPool/index.html | 44 - .../network/ConnectionProvider/index.html | 52 - .../ConnectionProviderSwitch/index.html | 50 - .../latest/oatpp/network/Server/index.html | 57 - .../api/latest/oatpp/network/Url/index.html | 72 - .../ConnectionInactivityChecker/index.html | 46 - .../ConnectionMaxAgeChecker/index.html | 45 - .../monitor/ConnectionMonitor/index.html | 46 - .../network/monitor/MetricsChecker/index.html | 48 - .../network/monitor/StatCollector/index.html | 61 - .../oatpp/network/tcp/Connection/index.html | 56 - .../tcp/client/ConnectionProvider/index.html | 50 - .../tcp/server/ConnectionProvider/index.html | 59 - .../network/virtual_/Interface/index.html | 70 - .../oatpp/network/virtual_/Pipe/index.html | 72 - .../oatpp/network/virtual_/Socket/index.html | 57 - .../client/ConnectionProvider/index.html | 50 - .../server/ConnectionProvider/index.html | 50 - .../latest/oatpp/orm/Connection/index.html | 45 - .../api/latest/oatpp/orm/DbClient/index.html | 60 - .../api/latest/oatpp/orm/Executor/index.html | 70 - .../latest/oatpp/orm/QueryResult/index.html | 54 - .../oatpp/orm/SchemaMigration/index.html | 49 - .../latest/oatpp/orm/Transaction/index.html | 51 - .../oatpp/parser/json/Beautifier/index.html | 49 - .../latest/oatpp/parser/json/Utils/index.html | 52 - .../json/mapping/Deserializer/index.html | 64 - .../json/mapping/ObjectMapper/index.html | 58 - .../parser/json/mapping/Serializer/index.html | 58 - .../oatpp/web/client/ApiClient/index.html | 64 - .../web/client/HttpRequestExecutor/index.html | 72 - .../web/client/RequestExecutor/index.html | 95 - .../oatpp/web/client/RetryPolicy/index.html | 54 - .../mime/multipart/FileProvider/index.html | 43 - .../multipart/InMemoryDataProvider/index.html | 43 - .../web/mime/multipart/Multipart/index.html | 54 - .../oatpp/web/mime/multipart/Part/index.html | 59 - .../web/mime/multipart/PartList/index.html | 52 - .../web/mime/multipart/PartReader/index.html | 72 - .../web/mime/multipart/Reader/index.html | 63 - .../mime/multipart/StatefulParser/index.html | 68 - .../TemporaryFileProvider/index.html | 47 - .../protocol/CommunicationError/index.html | 78 - .../oatpp/web/protocol/http/Http/index.html | 178 -- .../protocol/http/encoding/Chunked/index.html | 62 - .../http/encoding/EncoderProvider/index.html | 47 - .../encoding/ProviderCollection/index.html | 47 - .../http/incoming/BodyDecoder/index.html | 71 - .../protocol/http/incoming/Request/index.html | 78 - .../incoming/RequestHeadersReader/index.html | 60 - .../http/incoming/Response/index.html | 81 - .../incoming/ResponseHeadersReader/index.html | 59 - .../incoming/SimpleBodyDecoder/index.html | 53 - .../protocol/http/outgoing/Body/index.html | 48 - .../http/outgoing/BufferBody/index.html | 50 - .../http/outgoing/MultipartBody/index.html | 41 - .../protocol/http/outgoing/Request/index.html | 71 - .../http/outgoing/Response/index.html | 73 - .../http/outgoing/ResponseFactory/index.html | 48 - .../http/outgoing/StreamingBody/index.html | 49 - .../http/utils/CommunicationUtils/index.html | 47 - .../AsyncHttpConnectionHandler/index.html | 62 - .../server/HttpConnectionHandler/index.html | 58 - .../oatpp/web/server/HttpProcessor/index.html | 99 - .../web/server/HttpRequestHandler/index.html | 56 - .../oatpp/web/server/HttpRouter/index.html | 58 - .../web/server/api/ApiController/index.html | 73 - .../oatpp/web/server/api/Endpoint/index.html | 102 - .../handler/AuthorizationHandler/index.html | 78 - .../server/handler/ErrorHandler/index.html | 57 - .../interceptor/AllowCorsGlobal/index.html | 41 - .../interceptor/RequestInterceptor/index.html | 48 - .../ResponseInterceptor/index.html | 49 - .../oatpp/web/url/mapping/Pattern/index.html | 41 - .../oatpp/web/url/mapping/Router/index.html | 64 - .../dist/assets/css/0.styles.5f58b113.css | 1 - .../dist/assets/img/search.83621669.svg | 1 - docs/.vuepress/dist/assets/js/1.f59b7db0.js | 8 - docs/.vuepress/dist/assets/js/10.6621798c.js | 1 - docs/.vuepress/dist/assets/js/100.d65cf70b.js | 1 - docs/.vuepress/dist/assets/js/101.841b3a95.js | 1 - docs/.vuepress/dist/assets/js/102.218d638e.js | 1 - docs/.vuepress/dist/assets/js/103.66fb9c79.js | 1 - docs/.vuepress/dist/assets/js/104.10866143.js | 1 - docs/.vuepress/dist/assets/js/105.e2afaa9b.js | 1 - docs/.vuepress/dist/assets/js/106.f0f07181.js | 1 - docs/.vuepress/dist/assets/js/107.95ab863f.js | 1 - docs/.vuepress/dist/assets/js/108.c0ee52fa.js | 1 - docs/.vuepress/dist/assets/js/109.6604970f.js | 1 - docs/.vuepress/dist/assets/js/11.4a14f5f9.js | 1 - docs/.vuepress/dist/assets/js/110.095c82d4.js | 1 - docs/.vuepress/dist/assets/js/111.166ef8eb.js | 1 - docs/.vuepress/dist/assets/js/112.dfef3aec.js | 1 - docs/.vuepress/dist/assets/js/113.2d228da9.js | 1 - docs/.vuepress/dist/assets/js/114.0a81abda.js | 1 - docs/.vuepress/dist/assets/js/115.60f6c992.js | 1 - docs/.vuepress/dist/assets/js/116.3bfaaf9c.js | 1 - docs/.vuepress/dist/assets/js/117.f6469c6b.js | 1 - docs/.vuepress/dist/assets/js/118.4c8183f5.js | 1 - docs/.vuepress/dist/assets/js/119.35784bb9.js | 1 - docs/.vuepress/dist/assets/js/12.47c52dff.js | 1 - docs/.vuepress/dist/assets/js/120.a992a201.js | 1 - docs/.vuepress/dist/assets/js/121.077b599d.js | 1 - docs/.vuepress/dist/assets/js/122.b1dbc1d0.js | 1 - docs/.vuepress/dist/assets/js/123.ef39cf0b.js | 1 - docs/.vuepress/dist/assets/js/124.a5a9b6db.js | 1 - docs/.vuepress/dist/assets/js/125.3877d1f2.js | 1 - docs/.vuepress/dist/assets/js/126.a46bb3ce.js | 1 - docs/.vuepress/dist/assets/js/127.ff6a31ba.js | 1 - docs/.vuepress/dist/assets/js/128.789dab63.js | 1 - docs/.vuepress/dist/assets/js/129.e8a0daa5.js | 1 - docs/.vuepress/dist/assets/js/13.4decfee8.js | 1 - docs/.vuepress/dist/assets/js/130.b74ecc2e.js | 1 - docs/.vuepress/dist/assets/js/131.dda7c1c3.js | 1 - docs/.vuepress/dist/assets/js/132.3e80d470.js | 1 - docs/.vuepress/dist/assets/js/133.c7b4b612.js | 1 - docs/.vuepress/dist/assets/js/134.43ef1fd6.js | 1 - docs/.vuepress/dist/assets/js/135.8854cffa.js | 1 - docs/.vuepress/dist/assets/js/136.282c5c6e.js | 1 - docs/.vuepress/dist/assets/js/137.e6a7db53.js | 1 - docs/.vuepress/dist/assets/js/138.c783f20f.js | 1 - docs/.vuepress/dist/assets/js/139.664b50bd.js | 1 - docs/.vuepress/dist/assets/js/14.0d8a7fd1.js | 1 - docs/.vuepress/dist/assets/js/140.0db40956.js | 1 - docs/.vuepress/dist/assets/js/141.34f300d9.js | 1 - docs/.vuepress/dist/assets/js/142.c82f9ca4.js | 1 - docs/.vuepress/dist/assets/js/143.3f2714a9.js | 1 - docs/.vuepress/dist/assets/js/144.89c2bae1.js | 1 - docs/.vuepress/dist/assets/js/145.00ef72c6.js | 1 - docs/.vuepress/dist/assets/js/146.aadfee59.js | 1 - docs/.vuepress/dist/assets/js/147.21142741.js | 1 - docs/.vuepress/dist/assets/js/148.bbb814c0.js | 1 - docs/.vuepress/dist/assets/js/149.8e963ef8.js | 1 - docs/.vuepress/dist/assets/js/15.75c83c3b.js | 1 - docs/.vuepress/dist/assets/js/150.1a1807df.js | 1 - docs/.vuepress/dist/assets/js/151.047cdba4.js | 1 - docs/.vuepress/dist/assets/js/152.efa7f300.js | 1 - docs/.vuepress/dist/assets/js/153.dfcfafd2.js | 1 - docs/.vuepress/dist/assets/js/154.e5c2450b.js | 1 - docs/.vuepress/dist/assets/js/155.4b04dcee.js | 1 - docs/.vuepress/dist/assets/js/156.6599211c.js | 1 - docs/.vuepress/dist/assets/js/157.306be6b2.js | 1 - docs/.vuepress/dist/assets/js/158.cd919c82.js | 1 - docs/.vuepress/dist/assets/js/159.d0f19644.js | 1 - docs/.vuepress/dist/assets/js/16.7daf2742.js | 1 - docs/.vuepress/dist/assets/js/160.9d422b02.js | 1 - docs/.vuepress/dist/assets/js/161.d95eeb96.js | 1 - docs/.vuepress/dist/assets/js/162.7b6c4a8d.js | 1 - docs/.vuepress/dist/assets/js/163.94281788.js | 1 - docs/.vuepress/dist/assets/js/164.25ad724b.js | 1 - docs/.vuepress/dist/assets/js/165.0b0db87e.js | 1 - docs/.vuepress/dist/assets/js/166.0d81cc06.js | 1 - docs/.vuepress/dist/assets/js/167.b22b4acd.js | 1 - docs/.vuepress/dist/assets/js/168.6a1492ec.js | 1 - docs/.vuepress/dist/assets/js/169.cc795164.js | 1 - docs/.vuepress/dist/assets/js/17.d8b3c38c.js | 1 - docs/.vuepress/dist/assets/js/170.ec298b0f.js | 1 - docs/.vuepress/dist/assets/js/171.278103b8.js | 1 - docs/.vuepress/dist/assets/js/172.fa73b902.js | 1 - docs/.vuepress/dist/assets/js/173.6c840575.js | 1 - docs/.vuepress/dist/assets/js/174.8559ebfb.js | 1 - docs/.vuepress/dist/assets/js/175.938c449b.js | 1 - docs/.vuepress/dist/assets/js/176.c576a22b.js | 1 - docs/.vuepress/dist/assets/js/177.76aa47ff.js | 1 - docs/.vuepress/dist/assets/js/178.208d5c86.js | 1 - docs/.vuepress/dist/assets/js/179.88668f14.js | 1 - docs/.vuepress/dist/assets/js/18.72369f4f.js | 1 - docs/.vuepress/dist/assets/js/180.a07a11de.js | 1 - docs/.vuepress/dist/assets/js/181.80fd5c2d.js | 1 - docs/.vuepress/dist/assets/js/182.e55740b6.js | 1 - docs/.vuepress/dist/assets/js/183.0dbd9c33.js | 1 - docs/.vuepress/dist/assets/js/184.67e04988.js | 1 - docs/.vuepress/dist/assets/js/185.0d872dd1.js | 1 - docs/.vuepress/dist/assets/js/186.f91825a1.js | 1 - docs/.vuepress/dist/assets/js/187.34968043.js | 1 - docs/.vuepress/dist/assets/js/188.ecb1ce26.js | 1 - docs/.vuepress/dist/assets/js/189.2c38b7e0.js | 1 - docs/.vuepress/dist/assets/js/19.07abd983.js | 1 - docs/.vuepress/dist/assets/js/190.100a2690.js | 1 - docs/.vuepress/dist/assets/js/191.e83dfd97.js | 1 - docs/.vuepress/dist/assets/js/192.3a5707f1.js | 1 - docs/.vuepress/dist/assets/js/193.6b0babce.js | 1 - docs/.vuepress/dist/assets/js/194.db26a154.js | 1 - docs/.vuepress/dist/assets/js/195.e094c797.js | 1 - docs/.vuepress/dist/assets/js/196.5aeced80.js | 1 - docs/.vuepress/dist/assets/js/197.ed90b37f.js | 1 - docs/.vuepress/dist/assets/js/198.65babdac.js | 1 - docs/.vuepress/dist/assets/js/199.9d6095ba.js | 1 - docs/.vuepress/dist/assets/js/20.203d15cc.js | 1 - docs/.vuepress/dist/assets/js/200.dbbe5fed.js | 1 - docs/.vuepress/dist/assets/js/201.0d6a7152.js | 1 - docs/.vuepress/dist/assets/js/202.79c3cc5e.js | 1 - docs/.vuepress/dist/assets/js/203.49b797b8.js | 1 - docs/.vuepress/dist/assets/js/204.9b2e8396.js | 1 - docs/.vuepress/dist/assets/js/205.5e2d84e6.js | 1 - docs/.vuepress/dist/assets/js/206.bac8bb77.js | 1 - docs/.vuepress/dist/assets/js/207.69288777.js | 1 - docs/.vuepress/dist/assets/js/208.f1589bc6.js | 1 - docs/.vuepress/dist/assets/js/209.6c3de31c.js | 1 - docs/.vuepress/dist/assets/js/21.60f4c92f.js | 1 - docs/.vuepress/dist/assets/js/210.30202064.js | 1 - docs/.vuepress/dist/assets/js/211.d16992f2.js | 1 - docs/.vuepress/dist/assets/js/212.961724e7.js | 1 - docs/.vuepress/dist/assets/js/213.309b5652.js | 1 - docs/.vuepress/dist/assets/js/214.50c8ab4a.js | 1 - docs/.vuepress/dist/assets/js/215.d60e68b0.js | 1 - docs/.vuepress/dist/assets/js/216.783cd245.js | 1 - docs/.vuepress/dist/assets/js/217.b7ee3395.js | 1 - docs/.vuepress/dist/assets/js/218.1376d30d.js | 1 - docs/.vuepress/dist/assets/js/219.e05ba04f.js | 1 - docs/.vuepress/dist/assets/js/22.123befab.js | 1 - docs/.vuepress/dist/assets/js/220.d52377d0.js | 1 - docs/.vuepress/dist/assets/js/221.a07164fb.js | 1 - docs/.vuepress/dist/assets/js/222.c6e39856.js | 1 - docs/.vuepress/dist/assets/js/223.08736ec2.js | 1 - docs/.vuepress/dist/assets/js/224.7f7a42f2.js | 1 - docs/.vuepress/dist/assets/js/225.de69f3b4.js | 1 - docs/.vuepress/dist/assets/js/226.17926877.js | 1 - docs/.vuepress/dist/assets/js/227.c1a8d398.js | 1 - docs/.vuepress/dist/assets/js/228.32876dc3.js | 1 - docs/.vuepress/dist/assets/js/229.b875a2fb.js | 1 - docs/.vuepress/dist/assets/js/23.c993db9d.js | 1 - docs/.vuepress/dist/assets/js/230.81965674.js | 1 - docs/.vuepress/dist/assets/js/231.72079c57.js | 1 - docs/.vuepress/dist/assets/js/232.f0be7c32.js | 1 - docs/.vuepress/dist/assets/js/233.11343c2f.js | 1 - docs/.vuepress/dist/assets/js/234.22540412.js | 1 - docs/.vuepress/dist/assets/js/235.116d09ed.js | 1 - docs/.vuepress/dist/assets/js/236.c061926f.js | 1 - docs/.vuepress/dist/assets/js/237.1586c1f1.js | 1 - docs/.vuepress/dist/assets/js/238.0cef5cb6.js | 1 - docs/.vuepress/dist/assets/js/239.e5dacf08.js | 1 - docs/.vuepress/dist/assets/js/24.d4736476.js | 1 - docs/.vuepress/dist/assets/js/240.bff91134.js | 1 - docs/.vuepress/dist/assets/js/241.e3c07be4.js | 1 - docs/.vuepress/dist/assets/js/242.3e954990.js | 1 - docs/.vuepress/dist/assets/js/243.a3eb8daa.js | 1 - docs/.vuepress/dist/assets/js/244.b0e077b9.js | 1 - docs/.vuepress/dist/assets/js/245.da01df92.js | 1 - docs/.vuepress/dist/assets/js/246.2507e9ae.js | 1 - docs/.vuepress/dist/assets/js/247.a2463965.js | 1 - docs/.vuepress/dist/assets/js/248.7c85387b.js | 1 - docs/.vuepress/dist/assets/js/249.e8d5d2c5.js | 1 - docs/.vuepress/dist/assets/js/25.981d08ff.js | 1 - docs/.vuepress/dist/assets/js/250.ab412a63.js | 1 - docs/.vuepress/dist/assets/js/251.813aeadf.js | 1 - docs/.vuepress/dist/assets/js/252.ed5e1fa1.js | 1 - docs/.vuepress/dist/assets/js/253.deb0ab07.js | 1 - docs/.vuepress/dist/assets/js/254.ec7e88ef.js | 1 - docs/.vuepress/dist/assets/js/255.1d4d43ae.js | 1 - docs/.vuepress/dist/assets/js/256.81cf2eab.js | 1 - docs/.vuepress/dist/assets/js/257.3f82a676.js | 1 - docs/.vuepress/dist/assets/js/258.0702cbbc.js | 1 - docs/.vuepress/dist/assets/js/259.9f2a596c.js | 1 - docs/.vuepress/dist/assets/js/26.8e8a82d0.js | 1 - docs/.vuepress/dist/assets/js/260.4169ed63.js | 1 - docs/.vuepress/dist/assets/js/261.da41a171.js | 1 - docs/.vuepress/dist/assets/js/262.40b8de08.js | 1 - docs/.vuepress/dist/assets/js/263.15c602ab.js | 1 - docs/.vuepress/dist/assets/js/264.74d2cc93.js | 1 - docs/.vuepress/dist/assets/js/265.be4944a4.js | 1 - docs/.vuepress/dist/assets/js/266.c7488105.js | 1 - docs/.vuepress/dist/assets/js/267.d8c064fb.js | 1 - docs/.vuepress/dist/assets/js/268.98f93047.js | 1 - docs/.vuepress/dist/assets/js/269.e801e5df.js | 1 - docs/.vuepress/dist/assets/js/27.bd67960f.js | 1 - docs/.vuepress/dist/assets/js/270.c386b494.js | 1 - docs/.vuepress/dist/assets/js/271.1e56369c.js | 1 - docs/.vuepress/dist/assets/js/272.eaacb1f0.js | 1 - docs/.vuepress/dist/assets/js/273.472240ba.js | 1 - docs/.vuepress/dist/assets/js/274.4cc578ff.js | 1 - docs/.vuepress/dist/assets/js/275.37cb5698.js | 1 - docs/.vuepress/dist/assets/js/276.ad25f25e.js | 1 - docs/.vuepress/dist/assets/js/277.80e0c7f4.js | 1 - docs/.vuepress/dist/assets/js/278.8b340efd.js | 1 - docs/.vuepress/dist/assets/js/279.204fb37b.js | 1 - docs/.vuepress/dist/assets/js/28.3376969a.js | 1 - docs/.vuepress/dist/assets/js/280.ed9047a2.js | 1 - docs/.vuepress/dist/assets/js/281.9a96aaf1.js | 1 - docs/.vuepress/dist/assets/js/282.3f32df3a.js | 1 - docs/.vuepress/dist/assets/js/283.75ead362.js | 1 - docs/.vuepress/dist/assets/js/284.74074c2c.js | 1 - docs/.vuepress/dist/assets/js/285.b79dde59.js | 1 - docs/.vuepress/dist/assets/js/286.dd6bf1be.js | 1 - docs/.vuepress/dist/assets/js/287.f3b97935.js | 1 - docs/.vuepress/dist/assets/js/288.03a96eed.js | 1 - docs/.vuepress/dist/assets/js/289.34237cda.js | 1 - docs/.vuepress/dist/assets/js/29.1098080f.js | 1 - docs/.vuepress/dist/assets/js/290.c60be499.js | 1 - docs/.vuepress/dist/assets/js/291.4f8a89f0.js | 1 - docs/.vuepress/dist/assets/js/292.93e660d3.js | 1 - docs/.vuepress/dist/assets/js/293.06e168dc.js | 1 - docs/.vuepress/dist/assets/js/294.6155b1ef.js | 1 - docs/.vuepress/dist/assets/js/295.13f50213.js | 1 - docs/.vuepress/dist/assets/js/296.c089aaef.js | 1 - docs/.vuepress/dist/assets/js/297.b9740bb6.js | 1 - docs/.vuepress/dist/assets/js/298.d5f86bff.js | 1 - docs/.vuepress/dist/assets/js/299.738d6520.js | 1 - docs/.vuepress/dist/assets/js/3.0e791e97.js | 1 - docs/.vuepress/dist/assets/js/30.a0a09080.js | 1 - docs/.vuepress/dist/assets/js/300.1f21ae11.js | 1 - docs/.vuepress/dist/assets/js/301.39a9efd1.js | 1 - docs/.vuepress/dist/assets/js/302.4562e961.js | 1 - docs/.vuepress/dist/assets/js/303.d89100d8.js | 1 - docs/.vuepress/dist/assets/js/304.f76b3241.js | 1 - docs/.vuepress/dist/assets/js/305.66f18528.js | 1 - docs/.vuepress/dist/assets/js/306.dcea9ec2.js | 1 - docs/.vuepress/dist/assets/js/307.ec9a8bbc.js | 1 - docs/.vuepress/dist/assets/js/308.1aba5b3b.js | 1 - docs/.vuepress/dist/assets/js/309.4e4d8802.js | 1 - docs/.vuepress/dist/assets/js/31.a2dcdd79.js | 1 - docs/.vuepress/dist/assets/js/310.7343a5c4.js | 1 - docs/.vuepress/dist/assets/js/311.46b84629.js | 1 - docs/.vuepress/dist/assets/js/312.a1bce297.js | 1 - docs/.vuepress/dist/assets/js/313.e0f7f2fa.js | 1 - docs/.vuepress/dist/assets/js/314.1cfbdb8b.js | 1 - docs/.vuepress/dist/assets/js/315.2386c97a.js | 1 - docs/.vuepress/dist/assets/js/316.8f6d10a1.js | 1 - docs/.vuepress/dist/assets/js/317.b11b448f.js | 1 - docs/.vuepress/dist/assets/js/318.a2a4531f.js | 1 - docs/.vuepress/dist/assets/js/319.f9e50f61.js | 1 - docs/.vuepress/dist/assets/js/32.391d14e5.js | 1 - docs/.vuepress/dist/assets/js/320.3387cf4c.js | 1 - docs/.vuepress/dist/assets/js/321.cc3ab086.js | 1 - docs/.vuepress/dist/assets/js/322.3dbb666f.js | 1 - docs/.vuepress/dist/assets/js/323.a7aeac6c.js | 1 - docs/.vuepress/dist/assets/js/324.0f180d67.js | 1 - docs/.vuepress/dist/assets/js/325.2eefe7c8.js | 1 - docs/.vuepress/dist/assets/js/326.c8bb8cc8.js | 1 - docs/.vuepress/dist/assets/js/327.6c1a4328.js | 1 - docs/.vuepress/dist/assets/js/328.da69ec74.js | 1 - docs/.vuepress/dist/assets/js/329.3c37af2f.js | 1 - docs/.vuepress/dist/assets/js/33.7a077396.js | 1 - docs/.vuepress/dist/assets/js/34.0fe15197.js | 1 - docs/.vuepress/dist/assets/js/35.0565050b.js | 1 - docs/.vuepress/dist/assets/js/36.a73f0155.js | 1 - docs/.vuepress/dist/assets/js/37.14b0a466.js | 1 - docs/.vuepress/dist/assets/js/38.8b7c370b.js | 1 - docs/.vuepress/dist/assets/js/39.51941110.js | 1 - docs/.vuepress/dist/assets/js/4.0e06b581.js | 1 - docs/.vuepress/dist/assets/js/40.0d7e270a.js | 1 - docs/.vuepress/dist/assets/js/41.33ec57e6.js | 1 - docs/.vuepress/dist/assets/js/42.6c303ff4.js | 1 - docs/.vuepress/dist/assets/js/43.a8c7c141.js | 1 - docs/.vuepress/dist/assets/js/44.0650fc33.js | 1 - docs/.vuepress/dist/assets/js/45.4f0204bb.js | 1 - docs/.vuepress/dist/assets/js/46.a1a6403d.js | 1 - docs/.vuepress/dist/assets/js/47.426c85c5.js | 1 - docs/.vuepress/dist/assets/js/48.298f6c01.js | 1 - docs/.vuepress/dist/assets/js/49.ec327870.js | 1 - docs/.vuepress/dist/assets/js/5.2e5733ab.js | 1 - docs/.vuepress/dist/assets/js/50.02ff9ee2.js | 1 - docs/.vuepress/dist/assets/js/51.50db9f2c.js | 1 - docs/.vuepress/dist/assets/js/52.ba28c3e4.js | 1 - docs/.vuepress/dist/assets/js/53.5e34c368.js | 1 - docs/.vuepress/dist/assets/js/54.65ba6dc6.js | 1 - docs/.vuepress/dist/assets/js/55.5941ad74.js | 1 - docs/.vuepress/dist/assets/js/56.fd40c399.js | 1 - docs/.vuepress/dist/assets/js/57.181ed1ea.js | 1 - docs/.vuepress/dist/assets/js/58.53c72c67.js | 1 - docs/.vuepress/dist/assets/js/59.e7f5b7ff.js | 1 - docs/.vuepress/dist/assets/js/6.5e3ae59f.js | 1 - docs/.vuepress/dist/assets/js/60.48dc6a85.js | 1 - docs/.vuepress/dist/assets/js/61.6b4694c3.js | 1 - docs/.vuepress/dist/assets/js/62.cdd1c99c.js | 1 - docs/.vuepress/dist/assets/js/63.dbd40f34.js | 1 - docs/.vuepress/dist/assets/js/64.cee33c13.js | 1 - docs/.vuepress/dist/assets/js/65.531f971b.js | 1 - docs/.vuepress/dist/assets/js/66.5da03a97.js | 1 - docs/.vuepress/dist/assets/js/67.7f43a2fa.js | 1 - docs/.vuepress/dist/assets/js/68.608e4382.js | 1 - docs/.vuepress/dist/assets/js/69.8133e7c7.js | 1 - docs/.vuepress/dist/assets/js/7.a7c042c4.js | 1 - docs/.vuepress/dist/assets/js/70.740e8ffe.js | 1 - docs/.vuepress/dist/assets/js/71.359a2382.js | 1 - docs/.vuepress/dist/assets/js/72.f8c8a0e8.js | 1 - docs/.vuepress/dist/assets/js/73.35664005.js | 1 - docs/.vuepress/dist/assets/js/74.baa84873.js | 1 - docs/.vuepress/dist/assets/js/75.f7d31c83.js | 1 - docs/.vuepress/dist/assets/js/76.0760c053.js | 1 - docs/.vuepress/dist/assets/js/77.a03b71bd.js | 1 - docs/.vuepress/dist/assets/js/78.6ce094f7.js | 1 - docs/.vuepress/dist/assets/js/79.12c31010.js | 1 - docs/.vuepress/dist/assets/js/8.04b8a29e.js | 1 - docs/.vuepress/dist/assets/js/80.a156d20d.js | 1 - docs/.vuepress/dist/assets/js/81.228a563f.js | 1 - docs/.vuepress/dist/assets/js/82.f03685e0.js | 1 - docs/.vuepress/dist/assets/js/83.3c651be3.js | 1 - docs/.vuepress/dist/assets/js/84.d516215b.js | 1 - docs/.vuepress/dist/assets/js/85.ef01ccb6.js | 1 - docs/.vuepress/dist/assets/js/86.a278c4f0.js | 1 - docs/.vuepress/dist/assets/js/87.16886e7f.js | 1 - docs/.vuepress/dist/assets/js/88.4b6fce32.js | 1 - docs/.vuepress/dist/assets/js/89.1633b31d.js | 1 - docs/.vuepress/dist/assets/js/9.0d780adb.js | 1 - docs/.vuepress/dist/assets/js/90.01716fb8.js | 1 - docs/.vuepress/dist/assets/js/91.ecc03ed1.js | 1 - docs/.vuepress/dist/assets/js/92.4fae9df5.js | 1 - docs/.vuepress/dist/assets/js/93.4efd9c4a.js | 1 - docs/.vuepress/dist/assets/js/94.296ccab8.js | 1 - docs/.vuepress/dist/assets/js/95.c372d9bb.js | 1 - docs/.vuepress/dist/assets/js/96.0f98f6d1.js | 1 - docs/.vuepress/dist/assets/js/97.e030ec5b.js | 1 - docs/.vuepress/dist/assets/js/98.d3130ffd.js | 1 - docs/.vuepress/dist/assets/js/99.66250b64.js | 1 - docs/.vuepress/dist/assets/js/app.b3fafb4a.js | 13 - docs/.vuepress/dist/benchmark/aws/index.html | 34 - .../dist/benchmark/digital-ocean/index.html | 33 - docs/.vuepress/dist/benchmark/info/index.html | 33 - .../benchmark/websocket/2-million/index.html | 74 - .../benchmark/websocket/5-million/index.html | 90 - docs/.vuepress/dist/contact/index.html | 41 - docs/.vuepress/dist/contributing/index.html | 44 - docs/.vuepress/dist/docs/async/index.html | 44 - .../docs/components/api-client/index.html | 141 -- .../docs/components/api-controller/index.html | 362 ---- .../dist/docs/components/dto/index.html | 235 --- .../dist/docs/components/orm/index.html | 331 ---- .../dist/docs/features/upload-file/index.html | 353 ---- .../dist/docs/installation/conan/index.html | 46 - .../docs/installation/unix-linux/index.html | 67 - .../dist/docs/installation/vcpkg/index.html | 41 - .../dist/docs/installation/windows/index.html | 48 - .../dist/docs/modules/oatpp-consul/index.html | 99 - .../dist/docs/modules/oatpp-curl/index.html | 84 - .../docs/modules/oatpp-libressl/index.html | 78 - .../docs/modules/oatpp-mbedtls/index.html | 89 - .../dist/docs/modules/oatpp-mongo/index.html | 93 - .../docs/modules/oatpp-postgresql/index.html | 70 - .../dist/docs/modules/oatpp-sqlite/index.html | 71 - .../dist/docs/modules/oatpp-ssdp/index.html | 94 - .../docs/modules/oatpp-swagger/index.html | 86 - .../docs/modules/oatpp-websocket/index.html | 43 - .../dist/docs/modules/oatpp-zlib/index.html | 101 - .../dist/docs/modules/oatpp/index.html | 41 - .../dist/docs/monolithization/index.html | 52 - .../dist/docs/oatpp-coroutines/index.html | 209 --- .../dist/docs/simple-vs-async/index.html | 124 -- .../docs/start/high-level-overview/index.html | 162 -- docs/.vuepress/dist/docs/start/index.html | 42 - .../dist/docs/start/module/index.html | 41 - .../docs/start/project-async-api/index.html | 60 - .../dist/docs/start/project/index.html | 59 - .../dist/docs/start/step-by-step/index.html | 734 -------- .../dist/examples/api-client/index.html | 132 -- .../dist/examples/async-api/index.html | 59 - .../.vuepress/dist/examples/consul/index.html | 59 - docs/.vuepress/dist/examples/crud/index.html | 63 - .../dist/examples/hls-media-stream/index.html | 69 - .../dist/examples/iot-hue-ssdp/index.html | 95 - .../dist/examples/libressl/index.html | 119 -- .../dist/examples/microservices/index.html | 52 - .../dist/examples/mongodb/index.html | 65 - .../dist/examples/postgresql/index.html | 67 - .../dist/examples/websocket/index.html | 41 - .../examples/yuv-websocket-stream/index.html | 74 - docs/.vuepress/dist/index.html | 50 - docs/.vuepress/dist/status/build/index.html | 41 - docs/.vuepress/dist/support/index.html | 33 - .../dist/supported-platforms/index.html | 46 - docs/.vuepress/theme/index.js | 5 - docs/.vuepress/theme/styles/index.styl | 119 -- docs/.vuepress/theme/styles/palette.styl | 6 - docs/README.md | 122 -- docs/about/README.md | 45 - docs/benchmark/aws/README.md | 39 - docs/benchmark/digital-ocean/README.md | 38 - docs/benchmark/info/README.md | 15 - docs/benchmark/websocket/2-million/README.md | 163 -- docs/benchmark/websocket/5-million/README.md | 262 --- docs/contact/README.md | 18 - docs/contributing/README.md | 49 - docs/docs/async/README.md | 24 - docs/docs/components/api-client/README.md | 221 --- docs/docs/components/api-controller/README.md | 556 ------ docs/docs/components/dto/README.md | 392 ---- docs/docs/components/orm/README.md | 527 ------ docs/docs/features/upload-file/README.md | 360 ---- docs/docs/installation/conan/README.md | 21 - docs/docs/installation/unix-linux/README.md | 113 -- docs/docs/installation/vcpkg/README.md | 17 - docs/docs/installation/windows/README.md | 49 - docs/docs/modules/oatpp-consul/README.md | 80 - docs/docs/modules/oatpp-curl/README.md | 91 - docs/docs/modules/oatpp-libressl/README.md | 81 - docs/docs/modules/oatpp-mbedtls/README.md | 112 -- docs/docs/modules/oatpp-mongo/README.md | 127 -- docs/docs/modules/oatpp-postgresql/README.md | 62 - docs/docs/modules/oatpp-sqlite/README.md | 64 - docs/docs/modules/oatpp-ssdp/README.md | 98 - docs/docs/modules/oatpp-swagger/README.md | 92 - docs/docs/modules/oatpp-websocket/README.md | 20 - docs/docs/modules/oatpp-zlib/README.md | 109 -- docs/docs/modules/oatpp/README.md | 26 - docs/docs/monolithization/README.md | 104 -- docs/docs/oatpp-coroutines/README.md | 245 --- docs/docs/simple-vs-async/README.md | 132 -- docs/docs/start/README.md | 68 - docs/docs/start/high-level-overview/README.md | 226 --- docs/docs/start/module/README.md | 12 - docs/docs/start/project-async-api/README.md | 75 - docs/docs/start/project/README.md | 54 - docs/docs/start/step-by-step/README.md | 886 --------- docs/examples/api-client/README.md | 168 -- docs/examples/async-api/README.md | 61 - docs/examples/consul/README.md | 59 - docs/examples/crud/README.md | 91 - docs/examples/hls-media-stream/README.md | 99 - docs/examples/iot-hue-ssdp/README.md | 154 -- docs/examples/libressl/README.md | 157 -- docs/examples/microservices/README.md | 70 - docs/examples/mongodb/README.md | 90 - docs/examples/postgresql/README.md | 94 - docs/examples/websocket/README.md | 20 - docs/examples/yuv-websocket-stream/README.md | 107 -- docs/logo_x64.png | Bin 2162 -> 0 bytes docs/res/aws-1.png | Bin 84729 -> 0 bytes docs/res/aws-2.png | Bin 103279 -> 0 bytes docs/res/do-1.png | Bin 88277 -> 0 bytes docs/res/do-2.png | Bin 93850 -> 0 bytes docs/res/logo.png | Bin 45662 -> 0 bytes docs/status/build/README.md | 57 - docs/support/README.md | 26 - docs/supported-platforms/README.md | 34 - package.json | 23 - server/.dockerignore | 1 - server/.gitignore | 105 -- server/CMakeLists.txt | 47 - server/Dockerfile | 12 - server/main/CMakeLists.txt | 74 - server/main/cmake/FindLibreSSL.cmake | 225 --- server/main/src/App.cpp | 70 - server/main/src/AppComponent.hpp | 141 -- server/main/src/FilesIndex.cpp | 131 -- server/main/src/FilesIndex.hpp | 58 - server/main/src/SitePath.hpp | 61 - server/main/src/Sitemap.cpp | 73 - server/main/src/Sitemap.hpp | 44 - server/main/src/StaticFileManager.cpp | 24 - server/main/src/StaticFileManager.hpp | 24 - .../main/src/controller/StaticController.hpp | 195 -- server/main/test/tests.cpp | 41 - server/prepare.sh | 58 - server/run_script.sh | 6 - src/App.cpp | 48 + src/AppComponent.hpp | 37 + src/Dockerfile | 30 + src/controller/ApiController.hpp | 370 ++++ src/dto/DTOs.hpp | 84 + 785 files changed, 6477 insertions(+), 30243 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 Dockerfile delete mode 100644 LICENSE create mode 100644 build/CMakeCache.txt create mode 100644 build/CMakeFiles/4.2.1/CMakeCCompiler.cmake create mode 100644 build/CMakeFiles/4.2.1/CMakeCXXCompiler.cmake create mode 100755 build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_C.bin create mode 100755 build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_CXX.bin create mode 100644 build/CMakeFiles/4.2.1/CMakeSystem.cmake create mode 100644 build/CMakeFiles/4.2.1/CompilerIdC/CMakeCCompilerId.c create mode 100755 build/CMakeFiles/4.2.1/CompilerIdC/a.out create mode 100644 build/CMakeFiles/4.2.1/CompilerIdC/apple-sdk.c create mode 100644 build/CMakeFiles/4.2.1/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 build/CMakeFiles/4.2.1/CompilerIdCXX/a.out create mode 100644 build/CMakeFiles/4.2.1/CompilerIdCXX/apple-sdk.cpp create mode 100644 build/CMakeFiles/CMakeConfigureLog.yaml create mode 100644 build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/CMakeFiles/InstallScripts.json create mode 100644 build/CMakeFiles/Makefile.cmake create mode 100644 build/CMakeFiles/Makefile2 create mode 100644 build/CMakeFiles/TargetDirectories.txt create mode 100644 build/CMakeFiles/cmake.check_cache create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/build.make create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/cmake_clean.cmake create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.make create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.ts create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/depend.make create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/flags.make create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/link.txt create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/progress.make create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o create mode 100644 build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d create mode 100644 build/CMakeFiles/progress.marks create mode 100644 build/Makefile create mode 100644 build/cmake_install.cmake create mode 100755 build/oatpp-showcase-exe create mode 100644 docker-compose.yml delete mode 100644 docs/.vuepress/components/contributors.vue delete mode 100644 docs/.vuepress/components/maintainers.vue delete mode 100644 docs/.vuepress/components/seo.vue delete mode 100644 docs/.vuepress/components/users.vue delete mode 100644 docs/.vuepress/config.js delete mode 100644 docs/.vuepress/dist/404.html delete mode 100644 docs/.vuepress/dist/about/index.html delete mode 100644 docs/.vuepress/dist/api/latest/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-consul/Client/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-consul/rest/Client/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-consul/rest/DTOs/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/RequestExecutor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyDecoder/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyInputStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyOutputStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/Curl/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyReader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyWriter/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlHeadersReader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/Callbacks/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/Config/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/TLSObject/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/client/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-libressl/server/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mbedtls/Config/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mbedtls/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mbedtls/client/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mbedtls/server/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Types/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Utils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Deserializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/ObjectMapper/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Serializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/bson/type/ObjectId/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Command/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Delete/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Find/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Insert/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Miscellaneous/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Update/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Message/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/OpMsg/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/Config/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/client/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateChainFile/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateFile/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/ContextConfigurer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/PrivateKeyFile/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-openssl/server/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/Executor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/QueryResult/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/Types/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Deserializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Oid/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/PgArray/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/ResultMapper/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Serializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/type/Uuid/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/orm/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/Parser/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/TemplateValueProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-protobuf/Object/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/DynamicObject/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/Utils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/Executor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/QueryResult/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/Types/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/Utils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Deserializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/ResultMapper/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Serializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/type/Blob/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/orm/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/Parser/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/TemplateValueProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleSsdpUdpStreamProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleUdpStreamProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpMessage/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpStreamHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-ssdp/UdpStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/AsyncController/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/Controller/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/Generator/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/Model/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/Resources/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/Types/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-swagger/oas3/Model/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-test/Checker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-test/UnitTest/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-test/web/ClientServerTestRunner/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncConnectionHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncWebSocket/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/Config/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/ConnectionHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/Connector/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/Frame/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/Handshaker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/SHA1/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/Utils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-websocket/WebSocket/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-zlib/EncoderProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp-zlib/Processor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/algorithm/CRC/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_define/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_undef/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/IODefinitions/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/Types/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/Coroutine/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/CoroutineWaitList/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/Error/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/Executor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/Lock/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/Processor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/utils/FastQueue/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOEventWorker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOWorker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/worker/TimerWorker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/async/worker/Worker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/base/CommandLineArguments/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/base/Config/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/base/Countable/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/base/Environment/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/base/ObjectHandle/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/concurrency/SpinLock/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/concurrency/Thread/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/Bundle/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/FIFOBuffer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/IOBuffer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/Processor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/ObjectMapper/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/TypeResolver/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Any/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Collection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Enum/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/List/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Map/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Object/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/PairList/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Primitive/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Type/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedMap/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedSet/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Vector/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/resource/File/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/resource/InMemoryData/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/resource/Resource/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/resource/TemporaryFile/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/share/LazyStringMap/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/share/MemoryLabel/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/share/StringTemplate/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/stream/BufferStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FIFOStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FileStream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/stream/Stream/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/data/stream/StreamBufferedProxy/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/macro/basic/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/macro/codegen/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/macro/component/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/parser/Caret/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/parser/ParsingError/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/provider/Invalidator/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/provider/Pool/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/provider/Provider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/utils/Binary/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/utils/ConversionUtils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/utils/Random/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/core/utils/String/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/encoding/Base64/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/encoding/Hex/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/encoding/Unicode/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/Address/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/ConnectionHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/ConnectionPool/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProviderSwitch/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/Server/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/Url/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionInactivityChecker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMaxAgeChecker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMonitor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/monitor/MetricsChecker/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/monitor/StatCollector/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/tcp/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/tcp/client/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/tcp/server/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Interface/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Pipe/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Socket/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/virtual_/client/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/network/virtual_/server/ConnectionProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/Connection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/DbClient/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/Executor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/QueryResult/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/SchemaMigration/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/orm/Transaction/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/parser/json/Beautifier/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/parser/json/Utils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Deserializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/ObjectMapper/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Serializer/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/client/ApiClient/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/client/HttpRequestExecutor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/client/RequestExecutor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/client/RetryPolicy/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/FileProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/InMemoryDataProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Multipart/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Part/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartList/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartReader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Reader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/StatefulParser/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/TemporaryFileProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/CommunicationError/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/Http/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/Chunked/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/ProviderCollection/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Request/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/RequestHeadersReader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Response/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/ResponseHeadersReader/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/SimpleBodyDecoder/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Body/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/MultipartBody/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Request/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Response/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/StreamingBody/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/utils/CommunicationUtils/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/AsyncHttpConnectionHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/HttpConnectionHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/HttpProcessor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRequestHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRouter/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/api/ApiController/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/api/Endpoint/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/handler/AuthorizationHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/handler/ErrorHandler/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/AllowCorsGlobal/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/RequestInterceptor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Pattern/index.html delete mode 100644 docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Router/index.html delete mode 100644 docs/.vuepress/dist/assets/css/0.styles.5f58b113.css delete mode 100644 docs/.vuepress/dist/assets/img/search.83621669.svg delete mode 100644 docs/.vuepress/dist/assets/js/1.f59b7db0.js delete mode 100644 docs/.vuepress/dist/assets/js/10.6621798c.js delete mode 100644 docs/.vuepress/dist/assets/js/100.d65cf70b.js delete mode 100644 docs/.vuepress/dist/assets/js/101.841b3a95.js delete mode 100644 docs/.vuepress/dist/assets/js/102.218d638e.js delete mode 100644 docs/.vuepress/dist/assets/js/103.66fb9c79.js delete mode 100644 docs/.vuepress/dist/assets/js/104.10866143.js delete mode 100644 docs/.vuepress/dist/assets/js/105.e2afaa9b.js delete mode 100644 docs/.vuepress/dist/assets/js/106.f0f07181.js delete mode 100644 docs/.vuepress/dist/assets/js/107.95ab863f.js delete mode 100644 docs/.vuepress/dist/assets/js/108.c0ee52fa.js delete mode 100644 docs/.vuepress/dist/assets/js/109.6604970f.js delete mode 100644 docs/.vuepress/dist/assets/js/11.4a14f5f9.js delete mode 100644 docs/.vuepress/dist/assets/js/110.095c82d4.js delete mode 100644 docs/.vuepress/dist/assets/js/111.166ef8eb.js delete mode 100644 docs/.vuepress/dist/assets/js/112.dfef3aec.js delete mode 100644 docs/.vuepress/dist/assets/js/113.2d228da9.js delete mode 100644 docs/.vuepress/dist/assets/js/114.0a81abda.js delete mode 100644 docs/.vuepress/dist/assets/js/115.60f6c992.js delete mode 100644 docs/.vuepress/dist/assets/js/116.3bfaaf9c.js delete mode 100644 docs/.vuepress/dist/assets/js/117.f6469c6b.js delete mode 100644 docs/.vuepress/dist/assets/js/118.4c8183f5.js delete mode 100644 docs/.vuepress/dist/assets/js/119.35784bb9.js delete mode 100644 docs/.vuepress/dist/assets/js/12.47c52dff.js delete mode 100644 docs/.vuepress/dist/assets/js/120.a992a201.js delete mode 100644 docs/.vuepress/dist/assets/js/121.077b599d.js delete mode 100644 docs/.vuepress/dist/assets/js/122.b1dbc1d0.js delete mode 100644 docs/.vuepress/dist/assets/js/123.ef39cf0b.js delete mode 100644 docs/.vuepress/dist/assets/js/124.a5a9b6db.js delete mode 100644 docs/.vuepress/dist/assets/js/125.3877d1f2.js delete mode 100644 docs/.vuepress/dist/assets/js/126.a46bb3ce.js delete mode 100644 docs/.vuepress/dist/assets/js/127.ff6a31ba.js delete mode 100644 docs/.vuepress/dist/assets/js/128.789dab63.js delete mode 100644 docs/.vuepress/dist/assets/js/129.e8a0daa5.js delete mode 100644 docs/.vuepress/dist/assets/js/13.4decfee8.js delete mode 100644 docs/.vuepress/dist/assets/js/130.b74ecc2e.js delete mode 100644 docs/.vuepress/dist/assets/js/131.dda7c1c3.js delete mode 100644 docs/.vuepress/dist/assets/js/132.3e80d470.js delete mode 100644 docs/.vuepress/dist/assets/js/133.c7b4b612.js delete mode 100644 docs/.vuepress/dist/assets/js/134.43ef1fd6.js delete mode 100644 docs/.vuepress/dist/assets/js/135.8854cffa.js delete mode 100644 docs/.vuepress/dist/assets/js/136.282c5c6e.js delete mode 100644 docs/.vuepress/dist/assets/js/137.e6a7db53.js delete mode 100644 docs/.vuepress/dist/assets/js/138.c783f20f.js delete mode 100644 docs/.vuepress/dist/assets/js/139.664b50bd.js delete mode 100644 docs/.vuepress/dist/assets/js/14.0d8a7fd1.js delete mode 100644 docs/.vuepress/dist/assets/js/140.0db40956.js delete mode 100644 docs/.vuepress/dist/assets/js/141.34f300d9.js delete mode 100644 docs/.vuepress/dist/assets/js/142.c82f9ca4.js delete mode 100644 docs/.vuepress/dist/assets/js/143.3f2714a9.js delete mode 100644 docs/.vuepress/dist/assets/js/144.89c2bae1.js delete mode 100644 docs/.vuepress/dist/assets/js/145.00ef72c6.js delete mode 100644 docs/.vuepress/dist/assets/js/146.aadfee59.js delete mode 100644 docs/.vuepress/dist/assets/js/147.21142741.js delete mode 100644 docs/.vuepress/dist/assets/js/148.bbb814c0.js delete mode 100644 docs/.vuepress/dist/assets/js/149.8e963ef8.js delete mode 100644 docs/.vuepress/dist/assets/js/15.75c83c3b.js delete mode 100644 docs/.vuepress/dist/assets/js/150.1a1807df.js delete mode 100644 docs/.vuepress/dist/assets/js/151.047cdba4.js delete mode 100644 docs/.vuepress/dist/assets/js/152.efa7f300.js delete mode 100644 docs/.vuepress/dist/assets/js/153.dfcfafd2.js delete mode 100644 docs/.vuepress/dist/assets/js/154.e5c2450b.js delete mode 100644 docs/.vuepress/dist/assets/js/155.4b04dcee.js delete mode 100644 docs/.vuepress/dist/assets/js/156.6599211c.js delete mode 100644 docs/.vuepress/dist/assets/js/157.306be6b2.js delete mode 100644 docs/.vuepress/dist/assets/js/158.cd919c82.js delete mode 100644 docs/.vuepress/dist/assets/js/159.d0f19644.js delete mode 100644 docs/.vuepress/dist/assets/js/16.7daf2742.js delete mode 100644 docs/.vuepress/dist/assets/js/160.9d422b02.js delete mode 100644 docs/.vuepress/dist/assets/js/161.d95eeb96.js delete mode 100644 docs/.vuepress/dist/assets/js/162.7b6c4a8d.js delete mode 100644 docs/.vuepress/dist/assets/js/163.94281788.js delete mode 100644 docs/.vuepress/dist/assets/js/164.25ad724b.js delete mode 100644 docs/.vuepress/dist/assets/js/165.0b0db87e.js delete mode 100644 docs/.vuepress/dist/assets/js/166.0d81cc06.js delete mode 100644 docs/.vuepress/dist/assets/js/167.b22b4acd.js delete mode 100644 docs/.vuepress/dist/assets/js/168.6a1492ec.js delete mode 100644 docs/.vuepress/dist/assets/js/169.cc795164.js delete mode 100644 docs/.vuepress/dist/assets/js/17.d8b3c38c.js delete mode 100644 docs/.vuepress/dist/assets/js/170.ec298b0f.js delete mode 100644 docs/.vuepress/dist/assets/js/171.278103b8.js delete mode 100644 docs/.vuepress/dist/assets/js/172.fa73b902.js delete mode 100644 docs/.vuepress/dist/assets/js/173.6c840575.js delete mode 100644 docs/.vuepress/dist/assets/js/174.8559ebfb.js delete mode 100644 docs/.vuepress/dist/assets/js/175.938c449b.js delete mode 100644 docs/.vuepress/dist/assets/js/176.c576a22b.js delete mode 100644 docs/.vuepress/dist/assets/js/177.76aa47ff.js delete mode 100644 docs/.vuepress/dist/assets/js/178.208d5c86.js delete mode 100644 docs/.vuepress/dist/assets/js/179.88668f14.js delete mode 100644 docs/.vuepress/dist/assets/js/18.72369f4f.js delete mode 100644 docs/.vuepress/dist/assets/js/180.a07a11de.js delete mode 100644 docs/.vuepress/dist/assets/js/181.80fd5c2d.js delete mode 100644 docs/.vuepress/dist/assets/js/182.e55740b6.js delete mode 100644 docs/.vuepress/dist/assets/js/183.0dbd9c33.js delete mode 100644 docs/.vuepress/dist/assets/js/184.67e04988.js delete mode 100644 docs/.vuepress/dist/assets/js/185.0d872dd1.js delete mode 100644 docs/.vuepress/dist/assets/js/186.f91825a1.js delete mode 100644 docs/.vuepress/dist/assets/js/187.34968043.js delete mode 100644 docs/.vuepress/dist/assets/js/188.ecb1ce26.js delete mode 100644 docs/.vuepress/dist/assets/js/189.2c38b7e0.js delete mode 100644 docs/.vuepress/dist/assets/js/19.07abd983.js delete mode 100644 docs/.vuepress/dist/assets/js/190.100a2690.js delete mode 100644 docs/.vuepress/dist/assets/js/191.e83dfd97.js delete mode 100644 docs/.vuepress/dist/assets/js/192.3a5707f1.js delete mode 100644 docs/.vuepress/dist/assets/js/193.6b0babce.js delete mode 100644 docs/.vuepress/dist/assets/js/194.db26a154.js delete mode 100644 docs/.vuepress/dist/assets/js/195.e094c797.js delete mode 100644 docs/.vuepress/dist/assets/js/196.5aeced80.js delete mode 100644 docs/.vuepress/dist/assets/js/197.ed90b37f.js delete mode 100644 docs/.vuepress/dist/assets/js/198.65babdac.js delete mode 100644 docs/.vuepress/dist/assets/js/199.9d6095ba.js delete mode 100644 docs/.vuepress/dist/assets/js/20.203d15cc.js delete mode 100644 docs/.vuepress/dist/assets/js/200.dbbe5fed.js delete mode 100644 docs/.vuepress/dist/assets/js/201.0d6a7152.js delete mode 100644 docs/.vuepress/dist/assets/js/202.79c3cc5e.js delete mode 100644 docs/.vuepress/dist/assets/js/203.49b797b8.js delete mode 100644 docs/.vuepress/dist/assets/js/204.9b2e8396.js delete mode 100644 docs/.vuepress/dist/assets/js/205.5e2d84e6.js delete mode 100644 docs/.vuepress/dist/assets/js/206.bac8bb77.js delete mode 100644 docs/.vuepress/dist/assets/js/207.69288777.js delete mode 100644 docs/.vuepress/dist/assets/js/208.f1589bc6.js delete mode 100644 docs/.vuepress/dist/assets/js/209.6c3de31c.js delete mode 100644 docs/.vuepress/dist/assets/js/21.60f4c92f.js delete mode 100644 docs/.vuepress/dist/assets/js/210.30202064.js delete mode 100644 docs/.vuepress/dist/assets/js/211.d16992f2.js delete mode 100644 docs/.vuepress/dist/assets/js/212.961724e7.js delete mode 100644 docs/.vuepress/dist/assets/js/213.309b5652.js delete mode 100644 docs/.vuepress/dist/assets/js/214.50c8ab4a.js delete mode 100644 docs/.vuepress/dist/assets/js/215.d60e68b0.js delete mode 100644 docs/.vuepress/dist/assets/js/216.783cd245.js delete mode 100644 docs/.vuepress/dist/assets/js/217.b7ee3395.js delete mode 100644 docs/.vuepress/dist/assets/js/218.1376d30d.js delete mode 100644 docs/.vuepress/dist/assets/js/219.e05ba04f.js delete mode 100644 docs/.vuepress/dist/assets/js/22.123befab.js delete mode 100644 docs/.vuepress/dist/assets/js/220.d52377d0.js delete mode 100644 docs/.vuepress/dist/assets/js/221.a07164fb.js delete mode 100644 docs/.vuepress/dist/assets/js/222.c6e39856.js delete mode 100644 docs/.vuepress/dist/assets/js/223.08736ec2.js delete mode 100644 docs/.vuepress/dist/assets/js/224.7f7a42f2.js delete mode 100644 docs/.vuepress/dist/assets/js/225.de69f3b4.js delete mode 100644 docs/.vuepress/dist/assets/js/226.17926877.js delete mode 100644 docs/.vuepress/dist/assets/js/227.c1a8d398.js delete mode 100644 docs/.vuepress/dist/assets/js/228.32876dc3.js delete mode 100644 docs/.vuepress/dist/assets/js/229.b875a2fb.js delete mode 100644 docs/.vuepress/dist/assets/js/23.c993db9d.js delete mode 100644 docs/.vuepress/dist/assets/js/230.81965674.js delete mode 100644 docs/.vuepress/dist/assets/js/231.72079c57.js delete mode 100644 docs/.vuepress/dist/assets/js/232.f0be7c32.js delete mode 100644 docs/.vuepress/dist/assets/js/233.11343c2f.js delete mode 100644 docs/.vuepress/dist/assets/js/234.22540412.js delete mode 100644 docs/.vuepress/dist/assets/js/235.116d09ed.js delete mode 100644 docs/.vuepress/dist/assets/js/236.c061926f.js delete mode 100644 docs/.vuepress/dist/assets/js/237.1586c1f1.js delete mode 100644 docs/.vuepress/dist/assets/js/238.0cef5cb6.js delete mode 100644 docs/.vuepress/dist/assets/js/239.e5dacf08.js delete mode 100644 docs/.vuepress/dist/assets/js/24.d4736476.js delete mode 100644 docs/.vuepress/dist/assets/js/240.bff91134.js delete mode 100644 docs/.vuepress/dist/assets/js/241.e3c07be4.js delete mode 100644 docs/.vuepress/dist/assets/js/242.3e954990.js delete mode 100644 docs/.vuepress/dist/assets/js/243.a3eb8daa.js delete mode 100644 docs/.vuepress/dist/assets/js/244.b0e077b9.js delete mode 100644 docs/.vuepress/dist/assets/js/245.da01df92.js delete mode 100644 docs/.vuepress/dist/assets/js/246.2507e9ae.js delete mode 100644 docs/.vuepress/dist/assets/js/247.a2463965.js delete mode 100644 docs/.vuepress/dist/assets/js/248.7c85387b.js delete mode 100644 docs/.vuepress/dist/assets/js/249.e8d5d2c5.js delete mode 100644 docs/.vuepress/dist/assets/js/25.981d08ff.js delete mode 100644 docs/.vuepress/dist/assets/js/250.ab412a63.js delete mode 100644 docs/.vuepress/dist/assets/js/251.813aeadf.js delete mode 100644 docs/.vuepress/dist/assets/js/252.ed5e1fa1.js delete mode 100644 docs/.vuepress/dist/assets/js/253.deb0ab07.js delete mode 100644 docs/.vuepress/dist/assets/js/254.ec7e88ef.js delete mode 100644 docs/.vuepress/dist/assets/js/255.1d4d43ae.js delete mode 100644 docs/.vuepress/dist/assets/js/256.81cf2eab.js delete mode 100644 docs/.vuepress/dist/assets/js/257.3f82a676.js delete mode 100644 docs/.vuepress/dist/assets/js/258.0702cbbc.js delete mode 100644 docs/.vuepress/dist/assets/js/259.9f2a596c.js delete mode 100644 docs/.vuepress/dist/assets/js/26.8e8a82d0.js delete mode 100644 docs/.vuepress/dist/assets/js/260.4169ed63.js delete mode 100644 docs/.vuepress/dist/assets/js/261.da41a171.js delete mode 100644 docs/.vuepress/dist/assets/js/262.40b8de08.js delete mode 100644 docs/.vuepress/dist/assets/js/263.15c602ab.js delete mode 100644 docs/.vuepress/dist/assets/js/264.74d2cc93.js delete mode 100644 docs/.vuepress/dist/assets/js/265.be4944a4.js delete mode 100644 docs/.vuepress/dist/assets/js/266.c7488105.js delete mode 100644 docs/.vuepress/dist/assets/js/267.d8c064fb.js delete mode 100644 docs/.vuepress/dist/assets/js/268.98f93047.js delete mode 100644 docs/.vuepress/dist/assets/js/269.e801e5df.js delete mode 100644 docs/.vuepress/dist/assets/js/27.bd67960f.js delete mode 100644 docs/.vuepress/dist/assets/js/270.c386b494.js delete mode 100644 docs/.vuepress/dist/assets/js/271.1e56369c.js delete mode 100644 docs/.vuepress/dist/assets/js/272.eaacb1f0.js delete mode 100644 docs/.vuepress/dist/assets/js/273.472240ba.js delete mode 100644 docs/.vuepress/dist/assets/js/274.4cc578ff.js delete mode 100644 docs/.vuepress/dist/assets/js/275.37cb5698.js delete mode 100644 docs/.vuepress/dist/assets/js/276.ad25f25e.js delete mode 100644 docs/.vuepress/dist/assets/js/277.80e0c7f4.js delete mode 100644 docs/.vuepress/dist/assets/js/278.8b340efd.js delete mode 100644 docs/.vuepress/dist/assets/js/279.204fb37b.js delete mode 100644 docs/.vuepress/dist/assets/js/28.3376969a.js delete mode 100644 docs/.vuepress/dist/assets/js/280.ed9047a2.js delete mode 100644 docs/.vuepress/dist/assets/js/281.9a96aaf1.js delete mode 100644 docs/.vuepress/dist/assets/js/282.3f32df3a.js delete mode 100644 docs/.vuepress/dist/assets/js/283.75ead362.js delete mode 100644 docs/.vuepress/dist/assets/js/284.74074c2c.js delete mode 100644 docs/.vuepress/dist/assets/js/285.b79dde59.js delete mode 100644 docs/.vuepress/dist/assets/js/286.dd6bf1be.js delete mode 100644 docs/.vuepress/dist/assets/js/287.f3b97935.js delete mode 100644 docs/.vuepress/dist/assets/js/288.03a96eed.js delete mode 100644 docs/.vuepress/dist/assets/js/289.34237cda.js delete mode 100644 docs/.vuepress/dist/assets/js/29.1098080f.js delete mode 100644 docs/.vuepress/dist/assets/js/290.c60be499.js delete mode 100644 docs/.vuepress/dist/assets/js/291.4f8a89f0.js delete mode 100644 docs/.vuepress/dist/assets/js/292.93e660d3.js delete mode 100644 docs/.vuepress/dist/assets/js/293.06e168dc.js delete mode 100644 docs/.vuepress/dist/assets/js/294.6155b1ef.js delete mode 100644 docs/.vuepress/dist/assets/js/295.13f50213.js delete mode 100644 docs/.vuepress/dist/assets/js/296.c089aaef.js delete mode 100644 docs/.vuepress/dist/assets/js/297.b9740bb6.js delete mode 100644 docs/.vuepress/dist/assets/js/298.d5f86bff.js delete mode 100644 docs/.vuepress/dist/assets/js/299.738d6520.js delete mode 100644 docs/.vuepress/dist/assets/js/3.0e791e97.js delete mode 100644 docs/.vuepress/dist/assets/js/30.a0a09080.js delete mode 100644 docs/.vuepress/dist/assets/js/300.1f21ae11.js delete mode 100644 docs/.vuepress/dist/assets/js/301.39a9efd1.js delete mode 100644 docs/.vuepress/dist/assets/js/302.4562e961.js delete mode 100644 docs/.vuepress/dist/assets/js/303.d89100d8.js delete mode 100644 docs/.vuepress/dist/assets/js/304.f76b3241.js delete mode 100644 docs/.vuepress/dist/assets/js/305.66f18528.js delete mode 100644 docs/.vuepress/dist/assets/js/306.dcea9ec2.js delete mode 100644 docs/.vuepress/dist/assets/js/307.ec9a8bbc.js delete mode 100644 docs/.vuepress/dist/assets/js/308.1aba5b3b.js delete mode 100644 docs/.vuepress/dist/assets/js/309.4e4d8802.js delete mode 100644 docs/.vuepress/dist/assets/js/31.a2dcdd79.js delete mode 100644 docs/.vuepress/dist/assets/js/310.7343a5c4.js delete mode 100644 docs/.vuepress/dist/assets/js/311.46b84629.js delete mode 100644 docs/.vuepress/dist/assets/js/312.a1bce297.js delete mode 100644 docs/.vuepress/dist/assets/js/313.e0f7f2fa.js delete mode 100644 docs/.vuepress/dist/assets/js/314.1cfbdb8b.js delete mode 100644 docs/.vuepress/dist/assets/js/315.2386c97a.js delete mode 100644 docs/.vuepress/dist/assets/js/316.8f6d10a1.js delete mode 100644 docs/.vuepress/dist/assets/js/317.b11b448f.js delete mode 100644 docs/.vuepress/dist/assets/js/318.a2a4531f.js delete mode 100644 docs/.vuepress/dist/assets/js/319.f9e50f61.js delete mode 100644 docs/.vuepress/dist/assets/js/32.391d14e5.js delete mode 100644 docs/.vuepress/dist/assets/js/320.3387cf4c.js delete mode 100644 docs/.vuepress/dist/assets/js/321.cc3ab086.js delete mode 100644 docs/.vuepress/dist/assets/js/322.3dbb666f.js delete mode 100644 docs/.vuepress/dist/assets/js/323.a7aeac6c.js delete mode 100644 docs/.vuepress/dist/assets/js/324.0f180d67.js delete mode 100644 docs/.vuepress/dist/assets/js/325.2eefe7c8.js delete mode 100644 docs/.vuepress/dist/assets/js/326.c8bb8cc8.js delete mode 100644 docs/.vuepress/dist/assets/js/327.6c1a4328.js delete mode 100644 docs/.vuepress/dist/assets/js/328.da69ec74.js delete mode 100644 docs/.vuepress/dist/assets/js/329.3c37af2f.js delete mode 100644 docs/.vuepress/dist/assets/js/33.7a077396.js delete mode 100644 docs/.vuepress/dist/assets/js/34.0fe15197.js delete mode 100644 docs/.vuepress/dist/assets/js/35.0565050b.js delete mode 100644 docs/.vuepress/dist/assets/js/36.a73f0155.js delete mode 100644 docs/.vuepress/dist/assets/js/37.14b0a466.js delete mode 100644 docs/.vuepress/dist/assets/js/38.8b7c370b.js delete mode 100644 docs/.vuepress/dist/assets/js/39.51941110.js delete mode 100644 docs/.vuepress/dist/assets/js/4.0e06b581.js delete mode 100644 docs/.vuepress/dist/assets/js/40.0d7e270a.js delete mode 100644 docs/.vuepress/dist/assets/js/41.33ec57e6.js delete mode 100644 docs/.vuepress/dist/assets/js/42.6c303ff4.js delete mode 100644 docs/.vuepress/dist/assets/js/43.a8c7c141.js delete mode 100644 docs/.vuepress/dist/assets/js/44.0650fc33.js delete mode 100644 docs/.vuepress/dist/assets/js/45.4f0204bb.js delete mode 100644 docs/.vuepress/dist/assets/js/46.a1a6403d.js delete mode 100644 docs/.vuepress/dist/assets/js/47.426c85c5.js delete mode 100644 docs/.vuepress/dist/assets/js/48.298f6c01.js delete mode 100644 docs/.vuepress/dist/assets/js/49.ec327870.js delete mode 100644 docs/.vuepress/dist/assets/js/5.2e5733ab.js delete mode 100644 docs/.vuepress/dist/assets/js/50.02ff9ee2.js delete mode 100644 docs/.vuepress/dist/assets/js/51.50db9f2c.js delete mode 100644 docs/.vuepress/dist/assets/js/52.ba28c3e4.js delete mode 100644 docs/.vuepress/dist/assets/js/53.5e34c368.js delete mode 100644 docs/.vuepress/dist/assets/js/54.65ba6dc6.js delete mode 100644 docs/.vuepress/dist/assets/js/55.5941ad74.js delete mode 100644 docs/.vuepress/dist/assets/js/56.fd40c399.js delete mode 100644 docs/.vuepress/dist/assets/js/57.181ed1ea.js delete mode 100644 docs/.vuepress/dist/assets/js/58.53c72c67.js delete mode 100644 docs/.vuepress/dist/assets/js/59.e7f5b7ff.js delete mode 100644 docs/.vuepress/dist/assets/js/6.5e3ae59f.js delete mode 100644 docs/.vuepress/dist/assets/js/60.48dc6a85.js delete mode 100644 docs/.vuepress/dist/assets/js/61.6b4694c3.js delete mode 100644 docs/.vuepress/dist/assets/js/62.cdd1c99c.js delete mode 100644 docs/.vuepress/dist/assets/js/63.dbd40f34.js delete mode 100644 docs/.vuepress/dist/assets/js/64.cee33c13.js delete mode 100644 docs/.vuepress/dist/assets/js/65.531f971b.js delete mode 100644 docs/.vuepress/dist/assets/js/66.5da03a97.js delete mode 100644 docs/.vuepress/dist/assets/js/67.7f43a2fa.js delete mode 100644 docs/.vuepress/dist/assets/js/68.608e4382.js delete mode 100644 docs/.vuepress/dist/assets/js/69.8133e7c7.js delete mode 100644 docs/.vuepress/dist/assets/js/7.a7c042c4.js delete mode 100644 docs/.vuepress/dist/assets/js/70.740e8ffe.js delete mode 100644 docs/.vuepress/dist/assets/js/71.359a2382.js delete mode 100644 docs/.vuepress/dist/assets/js/72.f8c8a0e8.js delete mode 100644 docs/.vuepress/dist/assets/js/73.35664005.js delete mode 100644 docs/.vuepress/dist/assets/js/74.baa84873.js delete mode 100644 docs/.vuepress/dist/assets/js/75.f7d31c83.js delete mode 100644 docs/.vuepress/dist/assets/js/76.0760c053.js delete mode 100644 docs/.vuepress/dist/assets/js/77.a03b71bd.js delete mode 100644 docs/.vuepress/dist/assets/js/78.6ce094f7.js delete mode 100644 docs/.vuepress/dist/assets/js/79.12c31010.js delete mode 100644 docs/.vuepress/dist/assets/js/8.04b8a29e.js delete mode 100644 docs/.vuepress/dist/assets/js/80.a156d20d.js delete mode 100644 docs/.vuepress/dist/assets/js/81.228a563f.js delete mode 100644 docs/.vuepress/dist/assets/js/82.f03685e0.js delete mode 100644 docs/.vuepress/dist/assets/js/83.3c651be3.js delete mode 100644 docs/.vuepress/dist/assets/js/84.d516215b.js delete mode 100644 docs/.vuepress/dist/assets/js/85.ef01ccb6.js delete mode 100644 docs/.vuepress/dist/assets/js/86.a278c4f0.js delete mode 100644 docs/.vuepress/dist/assets/js/87.16886e7f.js delete mode 100644 docs/.vuepress/dist/assets/js/88.4b6fce32.js delete mode 100644 docs/.vuepress/dist/assets/js/89.1633b31d.js delete mode 100644 docs/.vuepress/dist/assets/js/9.0d780adb.js delete mode 100644 docs/.vuepress/dist/assets/js/90.01716fb8.js delete mode 100644 docs/.vuepress/dist/assets/js/91.ecc03ed1.js delete mode 100644 docs/.vuepress/dist/assets/js/92.4fae9df5.js delete mode 100644 docs/.vuepress/dist/assets/js/93.4efd9c4a.js delete mode 100644 docs/.vuepress/dist/assets/js/94.296ccab8.js delete mode 100644 docs/.vuepress/dist/assets/js/95.c372d9bb.js delete mode 100644 docs/.vuepress/dist/assets/js/96.0f98f6d1.js delete mode 100644 docs/.vuepress/dist/assets/js/97.e030ec5b.js delete mode 100644 docs/.vuepress/dist/assets/js/98.d3130ffd.js delete mode 100644 docs/.vuepress/dist/assets/js/99.66250b64.js delete mode 100644 docs/.vuepress/dist/assets/js/app.b3fafb4a.js delete mode 100644 docs/.vuepress/dist/benchmark/aws/index.html delete mode 100644 docs/.vuepress/dist/benchmark/digital-ocean/index.html delete mode 100644 docs/.vuepress/dist/benchmark/info/index.html delete mode 100644 docs/.vuepress/dist/benchmark/websocket/2-million/index.html delete mode 100644 docs/.vuepress/dist/benchmark/websocket/5-million/index.html delete mode 100644 docs/.vuepress/dist/contact/index.html delete mode 100644 docs/.vuepress/dist/contributing/index.html delete mode 100644 docs/.vuepress/dist/docs/async/index.html delete mode 100644 docs/.vuepress/dist/docs/components/api-client/index.html delete mode 100644 docs/.vuepress/dist/docs/components/api-controller/index.html delete mode 100644 docs/.vuepress/dist/docs/components/dto/index.html delete mode 100644 docs/.vuepress/dist/docs/components/orm/index.html delete mode 100644 docs/.vuepress/dist/docs/features/upload-file/index.html delete mode 100644 docs/.vuepress/dist/docs/installation/conan/index.html delete mode 100644 docs/.vuepress/dist/docs/installation/unix-linux/index.html delete mode 100644 docs/.vuepress/dist/docs/installation/vcpkg/index.html delete mode 100644 docs/.vuepress/dist/docs/installation/windows/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-consul/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-curl/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-libressl/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-mbedtls/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-mongo/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-postgresql/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-sqlite/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-ssdp/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-swagger/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-websocket/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp-zlib/index.html delete mode 100644 docs/.vuepress/dist/docs/modules/oatpp/index.html delete mode 100644 docs/.vuepress/dist/docs/monolithization/index.html delete mode 100644 docs/.vuepress/dist/docs/oatpp-coroutines/index.html delete mode 100644 docs/.vuepress/dist/docs/simple-vs-async/index.html delete mode 100644 docs/.vuepress/dist/docs/start/high-level-overview/index.html delete mode 100644 docs/.vuepress/dist/docs/start/index.html delete mode 100644 docs/.vuepress/dist/docs/start/module/index.html delete mode 100644 docs/.vuepress/dist/docs/start/project-async-api/index.html delete mode 100644 docs/.vuepress/dist/docs/start/project/index.html delete mode 100644 docs/.vuepress/dist/docs/start/step-by-step/index.html delete mode 100644 docs/.vuepress/dist/examples/api-client/index.html delete mode 100644 docs/.vuepress/dist/examples/async-api/index.html delete mode 100644 docs/.vuepress/dist/examples/consul/index.html delete mode 100644 docs/.vuepress/dist/examples/crud/index.html delete mode 100644 docs/.vuepress/dist/examples/hls-media-stream/index.html delete mode 100644 docs/.vuepress/dist/examples/iot-hue-ssdp/index.html delete mode 100644 docs/.vuepress/dist/examples/libressl/index.html delete mode 100644 docs/.vuepress/dist/examples/microservices/index.html delete mode 100644 docs/.vuepress/dist/examples/mongodb/index.html delete mode 100644 docs/.vuepress/dist/examples/postgresql/index.html delete mode 100644 docs/.vuepress/dist/examples/websocket/index.html delete mode 100644 docs/.vuepress/dist/examples/yuv-websocket-stream/index.html delete mode 100644 docs/.vuepress/dist/index.html delete mode 100644 docs/.vuepress/dist/status/build/index.html delete mode 100644 docs/.vuepress/dist/support/index.html delete mode 100644 docs/.vuepress/dist/supported-platforms/index.html delete mode 100644 docs/.vuepress/theme/index.js delete mode 100644 docs/.vuepress/theme/styles/index.styl delete mode 100644 docs/.vuepress/theme/styles/palette.styl delete mode 100644 docs/README.md delete mode 100644 docs/about/README.md delete mode 100644 docs/benchmark/aws/README.md delete mode 100644 docs/benchmark/digital-ocean/README.md delete mode 100644 docs/benchmark/info/README.md delete mode 100644 docs/benchmark/websocket/2-million/README.md delete mode 100644 docs/benchmark/websocket/5-million/README.md delete mode 100644 docs/contact/README.md delete mode 100644 docs/contributing/README.md delete mode 100644 docs/docs/async/README.md delete mode 100644 docs/docs/components/api-client/README.md delete mode 100644 docs/docs/components/api-controller/README.md delete mode 100644 docs/docs/components/dto/README.md delete mode 100644 docs/docs/components/orm/README.md delete mode 100644 docs/docs/features/upload-file/README.md delete mode 100644 docs/docs/installation/conan/README.md delete mode 100644 docs/docs/installation/unix-linux/README.md delete mode 100644 docs/docs/installation/vcpkg/README.md delete mode 100644 docs/docs/installation/windows/README.md delete mode 100644 docs/docs/modules/oatpp-consul/README.md delete mode 100644 docs/docs/modules/oatpp-curl/README.md delete mode 100644 docs/docs/modules/oatpp-libressl/README.md delete mode 100644 docs/docs/modules/oatpp-mbedtls/README.md delete mode 100644 docs/docs/modules/oatpp-mongo/README.md delete mode 100644 docs/docs/modules/oatpp-postgresql/README.md delete mode 100644 docs/docs/modules/oatpp-sqlite/README.md delete mode 100644 docs/docs/modules/oatpp-ssdp/README.md delete mode 100644 docs/docs/modules/oatpp-swagger/README.md delete mode 100644 docs/docs/modules/oatpp-websocket/README.md delete mode 100644 docs/docs/modules/oatpp-zlib/README.md delete mode 100644 docs/docs/modules/oatpp/README.md delete mode 100644 docs/docs/monolithization/README.md delete mode 100644 docs/docs/oatpp-coroutines/README.md delete mode 100644 docs/docs/simple-vs-async/README.md delete mode 100644 docs/docs/start/README.md delete mode 100644 docs/docs/start/high-level-overview/README.md delete mode 100644 docs/docs/start/module/README.md delete mode 100644 docs/docs/start/project-async-api/README.md delete mode 100644 docs/docs/start/project/README.md delete mode 100644 docs/docs/start/step-by-step/README.md delete mode 100644 docs/examples/api-client/README.md delete mode 100644 docs/examples/async-api/README.md delete mode 100644 docs/examples/consul/README.md delete mode 100644 docs/examples/crud/README.md delete mode 100644 docs/examples/hls-media-stream/README.md delete mode 100644 docs/examples/iot-hue-ssdp/README.md delete mode 100644 docs/examples/libressl/README.md delete mode 100644 docs/examples/microservices/README.md delete mode 100644 docs/examples/mongodb/README.md delete mode 100644 docs/examples/postgresql/README.md delete mode 100644 docs/examples/websocket/README.md delete mode 100644 docs/examples/yuv-websocket-stream/README.md delete mode 100644 docs/logo_x64.png delete mode 100644 docs/res/aws-1.png delete mode 100644 docs/res/aws-2.png delete mode 100644 docs/res/do-1.png delete mode 100644 docs/res/do-2.png delete mode 100644 docs/res/logo.png delete mode 100644 docs/status/build/README.md delete mode 100644 docs/support/README.md delete mode 100644 docs/supported-platforms/README.md delete mode 100644 package.json delete mode 100644 server/.dockerignore delete mode 100644 server/.gitignore delete mode 100644 server/CMakeLists.txt delete mode 100644 server/Dockerfile delete mode 100644 server/main/CMakeLists.txt delete mode 100644 server/main/cmake/FindLibreSSL.cmake delete mode 100644 server/main/src/App.cpp delete mode 100644 server/main/src/AppComponent.hpp delete mode 100644 server/main/src/FilesIndex.cpp delete mode 100644 server/main/src/FilesIndex.hpp delete mode 100644 server/main/src/SitePath.hpp delete mode 100644 server/main/src/Sitemap.cpp delete mode 100644 server/main/src/Sitemap.hpp delete mode 100644 server/main/src/StaticFileManager.cpp delete mode 100644 server/main/src/StaticFileManager.hpp delete mode 100644 server/main/src/controller/StaticController.hpp delete mode 100644 server/main/test/tests.cpp delete mode 100755 server/prepare.sh delete mode 100755 server/run_script.sh create mode 100644 src/App.cpp create mode 100644 src/AppComponent.hpp create mode 100644 src/Dockerfile create mode 100644 src/controller/ApiController.hpp create mode 100644 src/dto/DTOs.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..b147255d5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.15) + +project(oatpp-showcase-backend) + +set(CMAKE_CXX_STANDARD 17) + +# Find oatpp package (accept any version 1.3.0+) +find_package(oatpp REQUIRED) + +add_executable(oatpp-showcase-exe + src/App.cpp + src/AppComponent.hpp + src/controller/ApiController.hpp + src/dto/DTOs.hpp +) + +target_link_libraries(oatpp-showcase-exe + PUBLIC oatpp::oatpp +) + +target_include_directories(oatpp-showcase-exe PUBLIC src) + +# Print oatpp version for debugging +message(STATUS "Using oatpp version: ${oatpp_VERSION}") \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..e69de29bb diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md index 92fdcaf40..6696130dd 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ -# website +# Oat++ Showcase Backend -[oatpp.io](https://oatpp.io/) public website +High-performance C++ REST API backend for the Oat++ framework showcase. + +## Features + +- ⚡ 500K+ requests per second +- 🎯 Zero dependencies +- 🔒 Type-safe DTOs +- 🚀 Async/await support +- 📊 Real-time metrics +- 🔌 RESTful API + +## Quick Start + +### Using Docker (Recommended) + +```bash +docker-compose up -d +``` diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 000000000..50e786b07 --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,380 @@ +# This is the CMakeCache file. +# For build in directory: /Users/madhav/Desktop/oatppbackend/build +# It was generated by CMake: /opt/homebrew/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/pkgRedirects + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:STRING= + +//Value Computed by CMake +CMAKE_PROJECT_COMPAT_VERSION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=oatpp-showcase-backend + +//Value Computed by CMake +CMAKE_PROJECT_SPDX_LICENSE:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the archiver during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the archiver during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the archiver during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/tapi + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +oatpp-showcase-backend_BINARY_DIR:STATIC=/Users/madhav/Desktop/oatppbackend/build + +//Value Computed by CMake +oatpp-showcase-backend_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +oatpp-showcase-backend_SOURCE_DIR:STATIC=/Users/madhav/Desktop/oatppbackend + +//The directory containing a CMake configuration file for oatpp. +oatpp_DIR:PATH=/opt/homebrew/lib/cmake/oatpp-1.3.1 + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/madhav/Desktop/oatppbackend/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=4 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=2 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/opt/homebrew/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/opt/homebrew/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/opt/homebrew/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/opt/homebrew/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/madhav/Desktop/oatppbackend +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//Name of CMakeLists files to read +CMAKE_LIST_FILE_NAME:INTERNAL=CMakeLists.txt +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/opt/homebrew/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/build/CMakeFiles/4.2.1/CMakeCCompiler.cmake b/build/CMakeFiles/4.2.1/CMakeCCompiler.cmake new file mode 100644 index 000000000..6dcc5d7a6 --- /dev/null +++ b/build/CMakeFiles/4.2.1/CMakeCCompiler.cmake @@ -0,0 +1,84 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "17.0.0.17000013") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") +set(CMAKE_C_SIMULATE_VERSION "") +set(CMAKE_C_COMPILER_ARCHITECTURE_ID "arm64") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_C_COMPILER_LINKER_ID "AppleClang") +set(CMAKE_C_COMPILER_LINKER_VERSION 1167.5) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/local/include;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") diff --git a/build/CMakeFiles/4.2.1/CMakeCXXCompiler.cmake b/build/CMakeFiles/4.2.1/CMakeCXXCompiler.cmake new file mode 100644 index 000000000..5c5b62a40 --- /dev/null +++ b/build/CMakeFiles/4.2.1/CMakeCXXCompiler.cmake @@ -0,0 +1,104 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "AppleClang") +set(CMAKE_CXX_COMPILER_VERSION "17.0.0.17000013") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "23") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "") + +set(CMAKE_CXX_PLATFORM_ID "Darwin") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") +set(CMAKE_CXX_SIMULATE_VERSION "") +set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID "arm64") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_CXX_COMPILER_LINKER_ID "AppleClang") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 1167.5) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/local/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles") + + + diff --git a/build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..091e6955e4654d55d3d4726995441c6cfb6174d0 GIT binary patch literal 33560 zcmeI5Uuau(6vux_Q%PuDTk+4dQzH&pMOv9UU zfpdSqbI$#pdw!pL^P?~2oWJ(VjZPtKg2YbRL+W-2aY(pnCd9p@BcxJ}c?14E{%1zn z+bn8vvulmTd0wF#rHuHak>;>k?`if4({3j>E0v@~%7QjqFbx`7^Ld=cX3FL*Z1cWu zibIrc&S@fLBAdzA6Sn4CGV@s_TXtiP#yRE77jk-L!gRLg+w3yxW6msWH%e2j6p(T{ zGoxpcQqQEa%5LU2Waf*SN!V`9(U_m#!wHqg=Z$z9A|CT2pixQ7*hWrP>s?Ekj1^+) zPIZxT{d|Pa5Rb9mGF!*`cNPkUcl&)o3wWueF0xrRaxo-ak5v=fgF=+Lc~TOBnLJ_I zQL;zKW;Pp1-y!=p8l4A(n5D6Ubc~e6+AEKI&%cokw8%|Lzb!E^ozD$S>G6SNaVkkR zOD`$c@wF>>@~hvrA3ff8{>rH*10!3>=O#7w)I}eEmzt~XwjXsoN-?!R8dx4~; zdpN{hZQI0B4_&I%IJ`}!C#5#4C8nv}?xYr@e!IfOz3pW~(_V3VI;LmD9ki6!u=JB| zpjtUN8+hsErvwb()amPi6PwZtg(R$#d0V4s8ZWOVJG@_ zwUq?J@YG@P7q_0BrvLx| literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_CXX.bin b/build/CMakeFiles/4.2.1/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..b93cb3480fac1911cdfd2f00ba939990ab92fb2d GIT binary patch literal 33560 zcmeI5QD~c06vuDUbW3g5)+xGCx1}KBoU~h4Ydd^Mwx(S$q){`Ct#VD1ukFXuWPV9m zQ#zVa2NgxT2i-&;Hn1o%Ut}T$b!Ez4lu2I{i;fLnR!~qBb$wVp=YHSUe#wf0dvg8{ zoZNfvIrsG3UvA;{p`5Rle!5;GgiDaPNjH*4JwhB4KAH)!nRGv?l+i$Uus8U453iPr z+FZJHgT;BKC{W5+Fdi#)tNs4cHDTG6w9HB+DUmX-jpi+bhVp!))?uct5VrYTE8-Ew zl{rnMOlC8=)r95wycOBjGB98_;LpJbYSzTnaY~o@_xE{MEwp)cL*7Kw&1T)!f*>SRW zlFe*3kxrAnj>ey9oT9OsG)l_Cca4=}Ip*I;Ep76V()AO~BRQivt@k&l3h5NtEDfYw z$ER;6CSF^3_{(z}*5yw8_WDc3p1r@3~Xh z_PYGnICpu@%aot$ zI6hY)zYayZdiLb>F)ceFQ-|_K-_G`Dg@}ZDy88Fz3sN((TB^?o?Umh;V5l<^5ad;R z`U`nYW{s3)^o2vQSU4zykE=G@ws0?TTh!c7-O>H_O6fk~l42vf+@uxaPl|WT;UTGwYRM7mm^q{+sAZ<88cygL zLA@?HfQ5Tv*3usCf5~-F|8`|>wd|N>KVsRVY*VLlu7l(G$JM#G2HT=%j-%G z$M(rYM_X&V_#t-qjaNM9muBub^3Z|1Pq#g9oH{>v;Yi0@3l}feKlkQ$?@yfhAfCOj zI56k=W`6#lyC+_`Jbre3?AXF5FYSNv!FO)fe{%Pk>s?#kHMT$5=&fBm*x1$Z-elLr zk0V!R+Rhyq`fU7W^Z(QSZGW8hM4$fs`xjbX{`JzSrydKe|NO&!AAd1%+t^22d%wMR Gv-k@~x}4Df literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/4.2.1/CMakeSystem.cmake b/build/CMakeFiles/4.2.1/CMakeSystem.cmake new file mode 100644 index 000000000..bbd064fd9 --- /dev/null +++ b/build/CMakeFiles/4.2.1/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-24.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "24.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + + + +set(CMAKE_SYSTEM "Darwin-24.5.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "24.5.0") +set(CMAKE_SYSTEM_PROCESSOR "arm64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/4.2.1/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/4.2.1/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 000000000..ab3c35931 --- /dev/null +++ b/build/CMakeFiles/4.2.1/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,934 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__RENESAS__) +# define COMPILER_ID "Renesas" +/* __RENESAS_VERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__DCC__) && defined(_DIAB_TOOL) +# define COMPILER_ID "Diab" + # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) + # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) + # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) + # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) + + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) || defined(__CPARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__RENESAS__) +# if defined(__CCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__CCRL__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__CCRH__) +# define ARCHITECTURE_ID "RH850" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) && !defined(__RENESAS__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/4.2.1/CompilerIdC/a.out b/build/CMakeFiles/4.2.1/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..a27d804924265c7ec7ca192bab4f890795f56aaa GIT binary patch literal 33736 zcmeI5Uuau(6vt1})F!qynU=Xx?c&39%1F~z>`=sXw%e*(Te>|&>-_DuxoxxMpGm5l z%r2V@>QvSWLhaMuhPu7XDJ?iCD$)l*`l3!y>R(ovAR^2Sv7U49FKL>_DQ=J71LywE z`JLbI+;czom%JtC^J~BSRYT+;7ANZ(R=~irgIFe91&+xxmtVQ##)xI*It#6QxEHFGLd& z6-^8#d0}b3uXMh!P9lD3O~v`;Jxp48+S~TD6-7e&5b$V8$ymXYqSm|OQK^WLHQ3Oi zRQY_H@(V)t{=8c{E}yfVon23Mw0GvuNUo$V_C@BT7#67~Uz7L`66JhicRHayj$V{#$38dCt%3U?uYM;rCj$^|+NMT@UcA^?X*Gi23Fu&ptlq#Ul6J z!YVQQJZ!g4N}(36XZN8@){F9r>xaE>JG~;%7sxReZmDh=R%Eu%Z z*E{ZxuAL~Gv$p&`tClt8V+&jt*FP~^p}y$s+SdK>Kr)_+#>{kITPhVZACDP{p}k~9 zQZXYtm`um}+Kn`ST=lGx9vJS^b|z~iB1Sr*BIckm63g~Awdx3epP7kFl)p9#vFD8QU(k}K)_`pUgUd!!tIRdE?3I@xujVfOR*FYC3vyOMJc{PO&%`bkId3(b z#ivgq`Smd>UIZHiKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1VG@X6R>~(>7%XI z@6de|)?-AEqta-A#cjofYD1zO+*|ZE(>Tudbje?$TZh?r^eL=%HaMd7#+P0(1rc3CYVWqTdc>D=bAR($?11YgMZ z@6o@~&xZ8o7T-^*OwG!w*&<+@1q`-Z zU{Qu^$%<8!?RWv9?dCZuixSs$?c17JuJ8>urA(1Jo?~2&QF3zeP7B?$JRi2AL>{7J zLBEsRiT^j5)5{!2AUTqysvdXew)f6?Kk!`q==`W*GzH%EK69Yz=Od?#U!QBZFn#vO znRDUfr;CHLt}o~34>-HSl}m@uAAa%p*B4&h@yh1YHyZ!V*|5;~{_XB3HlGN*6R+EO zcH;N`KU#V(Uhb%S=)RUedv7%VzwLkX diff --git a/build/CMakeFiles/4.2.1/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/4.2.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 000000000..b35f567c2 --- /dev/null +++ b/build/CMakeFiles/4.2.1/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,949 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__RENESAS__) +# define COMPILER_ID "Renesas" +/* __RENESAS_VERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__DCC__) && defined(_DIAB_TOOL) +# define COMPILER_ID "Diab" + # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) + # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) + # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) + # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) + + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) || defined(__CPARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__RENESAS__) +# if defined(__CCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__CCRL__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__CCRH__) +# define ARCHITECTURE_ID "RH850" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/build/CMakeFiles/4.2.1/CompilerIdCXX/a.out b/build/CMakeFiles/4.2.1/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..b9b2fb453a9e4bec85a4815557e6889af6d718c5 GIT binary patch literal 33736 zcmeI5Uu@G=6vt1yPFMM}`X>tFLV0izA)|#UL{02;6Bg$-VbQt;uRqq`Mnl)mt`#;> zIt)0)=s-=T(S&F+G=T>Vnv96q3xpRi>;Z@-I${(^MB{@oi?IJ(Vh!(Q0V^ylPZf!$*!}=ES7K+|n z=(@_1JVU%tskVl2TVYu54;A{z*yZdN<&v~0m9n>`jKM>3z7bw1`A(Q6V#~R5;-O4# z&J(3N`%=khyxTa7^S!_imwZVR7du}Ha&v(5CE|TE1s3O%fNyMH_luF09M&l6` zjdvw@VR1g+O-_AblSJ&|n)36@dl=Dq>g(F-@**K~33${}G?uYbRKF`8m5Nv?izh~u zDxL4X?1GT9KWi3`Gxw~ivH8h{`o`=X$rRPaw#W%7hDGYh)+BZ5GIft_5Vb0~3NSEgU1)6z+xnm(7MYF$yGS3&er*k=rPiJDo?_9t9HJF0{2!H?xfB*=900@8p z2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?x zfB*=900@8p2!H?xfB*=900>;0fb(~pJ{r(}hwh_cGk#>oul0EC{fK}72!H?xfB*=9 z00@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p z2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*>mKLq@orq!rq%x}}3-&S0DiDyO6 zL)>gWl=T$uBbTBb5|YNz9vaTL_%owF_v_CQ{v`L+J*;VAamQ;~?4co9?UBCNG%wrR znr@dy+G(rXR&;N+kv2V5Mk8MCHLrR$D|?&WnNHbivu#D}BzdFpu7siuJytYM15Vwt zR^)Zo`P{sEg8$!voL|bWbm`9K+P+h4j`>1Pe2KB;{IWh^Y`?MB8+(DVlg6$v_Mq6j zQF?02em|)a6)Rn_KDIN>o!v2W07`HyT5%OsC!XV`G!>=Vn}RF#Q%&b^t}S1#{5W@< zE8fRGDO= diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 000000000..6c1d2fe03 --- /dev/null +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,1661 @@ + +--- +events: + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_UNAME" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "uname" + candidate_directories: + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/Users/madhav/.antigravity/antigravity/bin/uname" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/uname" + - "/opt/homebrew/bin/uname" + - "/opt/homebrew/sbin/uname" + - "/usr/local/bin/uname" + - "/System/Cryptexes/App/usr/bin/uname" + found: "/usr/bin/uname" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:212 (message)" + - "CMakeLists.txt:3 (project)" + message: | + The system is: Darwin - 24.5.0 - arm64 + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_MAKE_PROGRAM" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gmake" + - "make" + - "smake" + candidate_directories: + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/Users/madhav/.antigravity/antigravity/bin/gmake" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/gmake" + - "/opt/homebrew/bin/gmake" + - "/opt/homebrew/sbin/gmake" + - "/usr/local/bin/gmake" + - "/System/Cryptexes/App/usr/bin/gmake" + - "/usr/bin/gmake" + - "/bin/gmake" + - "/usr/sbin/gmake" + - "/sbin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/gmake" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/gmake" + - "/Users/madhav/.antigravity/antigravity/bin/make" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/make" + - "/opt/homebrew/bin/make" + - "/opt/homebrew/sbin/make" + - "/usr/local/bin/make" + - "/System/Cryptexes/App/usr/bin/make" + found: "/usr/bin/make" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:73 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:64 (_cmake_find_compiler)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER" + description: "C compiler" + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cc" + - "gcc" + - "cl" + - "bcc" + - "xlc" + - "icx" + - "clang" + candidate_directories: + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/Users/madhav/.antigravity/antigravity/bin/cc" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/cc" + - "/opt/homebrew/bin/cc" + - "/opt/homebrew/sbin/cc" + - "/usr/local/bin/cc" + - "/System/Cryptexes/App/usr/bin/cc" + found: "/usr/bin/cc" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCCompilerId.c.in" + candidate_directories: + - "/opt/homebrew/share/cmake/Modules/" + found: "/opt/homebrew/share/cmake/Modules/CMakeCCompilerId.c.in" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /usr/bin/cc + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + + The C compiler identification is AppleClang, found in: + /Users/madhav/Desktop/oatppbackend/build/CMakeFiles/4.2.1/CompilerIdC/a.out + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + message: | + Detecting C compiler apple sysroot: "/usr/bin/cc" "-E" "apple-sdk.c" + # 1 "apple-sdk.c" + # 1 "" 1 + # 1 "" 3 + # 465 "" 3 + # 1 "" 1 + # 1 "" 2 + # 1 "apple-sdk.c" 2 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 + # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 + # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 + # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 + # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 + # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 2 "apple-sdk.c" 2 + + + Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_AR" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ar" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/ar" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_RANLIB" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ranlib" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/ranlib" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_STRIP" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "strip" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/strip" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_LINKER" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ld" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/ld" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_NM" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "nm" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/nm" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_OBJDUMP" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objdump" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + found: "/usr/bin/objdump" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_OBJCOPY" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objcopy" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/usr/bin/objcopy" + - "/Users/madhav/.antigravity/antigravity/bin/objcopy" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/objcopy" + - "/opt/homebrew/bin/objcopy" + - "/opt/homebrew/sbin/objcopy" + - "/usr/local/bin/objcopy" + - "/System/Cryptexes/App/usr/bin/objcopy" + - "/bin/objcopy" + - "/usr/sbin/objcopy" + - "/sbin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/objcopy" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/objcopy" + found: false + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_READELF" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "readelf" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/usr/bin/readelf" + - "/Users/madhav/.antigravity/antigravity/bin/readelf" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/readelf" + - "/opt/homebrew/bin/readelf" + - "/opt/homebrew/sbin/readelf" + - "/usr/local/bin/readelf" + - "/System/Cryptexes/App/usr/bin/readelf" + - "/bin/readelf" + - "/usr/sbin/readelf" + - "/sbin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/readelf" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/readelf" + found: false + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_DLLTOOL" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "dlltool" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/usr/bin/dlltool" + - "/Users/madhav/.antigravity/antigravity/bin/dlltool" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/dlltool" + - "/opt/homebrew/bin/dlltool" + - "/opt/homebrew/sbin/dlltool" + - "/usr/local/bin/dlltool" + - "/System/Cryptexes/App/usr/bin/dlltool" + - "/bin/dlltool" + - "/usr/sbin/dlltool" + - "/sbin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/dlltool" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/dlltool" + found: false + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_ADDR2LINE" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "addr2line" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/usr/bin/addr2line" + - "/Users/madhav/.antigravity/antigravity/bin/addr2line" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/addr2line" + - "/opt/homebrew/bin/addr2line" + - "/opt/homebrew/sbin/addr2line" + - "/usr/local/bin/addr2line" + - "/System/Cryptexes/App/usr/bin/addr2line" + - "/bin/addr2line" + - "/usr/sbin/addr2line" + - "/sbin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/addr2line" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/addr2line" + found: false + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_TAPI" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "tapi" + candidate_directories: + - "/usr/bin/" + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/usr/bin/tapi" + - "/Users/madhav/.antigravity/antigravity/bin/tapi" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/tapi" + - "/opt/homebrew/bin/tapi" + - "/opt/homebrew/sbin/tapi" + - "/usr/local/bin/tapi" + - "/System/Cryptexes/App/usr/bin/tapi" + - "/bin/tapi" + - "/usr/sbin/tapi" + - "/sbin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/tapi" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/tapi" + found: false + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:54 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:69 (_cmake_find_compiler)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_CXX_COMPILER" + description: "CXX compiler" + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "c++" + - "g++" + - "cl" + - "bcc" + - "icpx" + - "icx" + - "clang++" + candidate_directories: + - "/usr/bin/" + found: "/usr/bin/c++" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCXXCompilerId.cpp.in" + candidate_directories: + - "/opt/homebrew/share/cmake/Modules/" + found: "/opt/homebrew/share/cmake/Modules/CMakeCXXCompilerId.cpp.in" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /usr/bin/c++ + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + + The CXX compiler identification is AppleClang, found in: + /Users/madhav/Desktop/oatppbackend/build/CMakeFiles/4.2.1/CompilerIdCXX/a.out + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + message: | + Detecting CXX compiler apple sysroot: "/usr/bin/c++" "-E" "apple-sdk.cpp" + # 1 "apple-sdk.cpp" + # 1 "" 1 + # 1 "" 3 + # 513 "" 3 + # 1 "" 1 + # 1 "" 2 + # 1 "apple-sdk.cpp" 2 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 + # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 + # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 + # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 + # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 + # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 2 "apple-sdk.cpp" 2 + + + Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Platform/Darwin.cmake:76 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInformation.cmake:32 (include)" + - "CMakeLists.txt:3 (project)" + mode: "program" + variable: "CMAKE_INSTALL_NAME_TOOL" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "install_name_tool" + candidate_directories: + - "/Users/madhav/.antigravity/antigravity/bin/" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand/" + searched_directories: + - "/Users/madhav/.antigravity/antigravity/bin/install_name_tool" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin/install_name_tool" + - "/opt/homebrew/bin/install_name_tool" + - "/opt/homebrew/sbin/install_name_tool" + - "/usr/local/bin/install_name_tool" + - "/System/Cryptexes/App/usr/bin/install_name_tool" + found: "/usr/bin/install_name_tool" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + CMAKE_INSTALL_PREFIX: "/usr/local" + - + kind: "try_compile-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3" + binary: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3" + cmakeVariables: + CMAKE_C_FLAGS: "" + CMAKE_C_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_OSX_ARCHITECTURES: "" + CMAKE_OSX_DEPLOYMENT_TARGET: "" + CMAKE_OSX_SYSROOT: "" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3' + + Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_2dfbe/fast + /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_2dfbe.dir/build.make CMakeFiles/cmTC_2dfbe.dir/build + Building C object CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c + Apple clang version 17.0.0 (clang-1700.0.13.5) + Target: arm64-apple-darwin24.5.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx15.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=15.5 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3 -target-linker-version 1167.5 -v -fcoverage-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3 -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c + clang -cc1 version 17.0.0 (clang-1700.0.13.5) default target arm64-apple-darwin24.5.0 + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" + #include "..." search starts here: + #include <...> search starts here: + /usr/local/include + /Library/Developer/CommandLineTools/usr/lib/clang/17/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) + End of search list. + Linking C executable cmTC_2dfbe + /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2dfbe.dir/link.txt --verbose=1 + Apple clang version 17.0.0 (clang-1700.0.13.5) + Target: arm64-apple-darwin24.5.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 15.0.0 15.5 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_2dfbe -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a + @(#)PROGRAM:ld PROJECT:ld-1167.5 + BUILD 01:45:05 Apr 30 2025 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.0.3.5) + Library search paths: + /usr/local/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift + Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks + /usr/bin/cc -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -o cmTC_2dfbe + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Effective list of requested architectures (possibly empty) : "" + Effective list of architectures found in the ABI info binary: "arm64" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/usr/local/include] + add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/usr/local/include;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3'] + ignore line: [] + ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_2dfbe/fast] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_2dfbe.dir/build.make CMakeFiles/cmTC_2dfbe.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 17.0.0 (clang-1700.0.13.5)] + ignore line: [Target: arm64-apple-darwin24.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx15.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=15.5 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3 -target-linker-version 1167.5 -v -fcoverage-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-U3uSZ3 -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 17.0.0 (clang-1700.0.13.5) default target arm64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/local/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_2dfbe] + ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2dfbe.dir/link.txt --verbose=1] + ignore line: [Apple clang version 17.0.0 (clang-1700.0.13.5)] + ignore line: [Target: arm64-apple-darwin24.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 15.0.0 15.5 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_2dfbe -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [15.0.0] ==> ignore + arg [15.5] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore + arg [-mllvm] ==> ignore + arg [-enable-linkonceodr-outlining] ==> ignore + arg [-o] ==> ignore + arg [cmTC_2dfbe] ==> ignore + arg [-L/usr/local/lib] ==> dir [/usr/local/lib] + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_2dfbe.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + linker tool for 'C': /Library/Developer/CommandLineTools/usr/bin/ld + Library search paths: [;/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + implicit libs: [] + implicit objs: [] + implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Running the C compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" + @(#)PROGRAM:ld PROJECT:ld-1167.5 + BUILD 01:45:05 Apr 30 2025 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.0.3.5) + - + kind: "try_compile-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA" + binary: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_OSX_ARCHITECTURES: "" + CMAKE_OSX_DEPLOYMENT_TARGET: "" + CMAKE_OSX_SYSROOT: "" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA' + + Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_a9648/fast + /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_a9648.dir/build.make CMakeFiles/cmTC_a9648.dir/build + Building CXX object CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp + Apple clang version 17.0.0 (clang-1700.0.13.5) + Target: arm64-apple-darwin24.5.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + clang++: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1" + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx15.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=15.5 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA -target-linker-version 1167.5 -v -fcoverage-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 17.0.0 (clang-1700.0.13.5) default target arm64-apple-darwin24.5.0 + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" + #include "..." search starts here: + #include <...> search starts here: + /usr/local/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 + /Library/Developer/CommandLineTools/usr/lib/clang/17/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) + End of search list. + Linking CXX executable cmTC_a9648 + /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a9648.dir/link.txt --verbose=1 + Apple clang version 17.0.0 (clang-1700.0.13.5) + Target: arm64-apple-darwin24.5.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 15.0.0 15.5 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_a9648 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a + @(#)PROGRAM:ld PROJECT:ld-1167.5 + BUILD 01:45:05 Apr 30 2025 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.0.3.5) + Library search paths: + /usr/local/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift + Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks + /usr/bin/c++ -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a9648 + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Effective list of requested architectures (possibly empty) : "" + Effective list of architectures found in the ABI info binary: "arm64" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/usr/local/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/usr/local/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA'] + ignore line: [] + ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_a9648/fast] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_a9648.dir/build.make CMakeFiles/cmTC_a9648.dir/build] + ignore line: [Building CXX object CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Apple clang version 17.0.0 (clang-1700.0.13.5)] + ignore line: [Target: arm64-apple-darwin24.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang++: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1"] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx15.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=15.5 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA -target-linker-version 1167.5 -v -fcoverage-compilation-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/CMakeScratch/TryCompile-ysRIwA -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 17.0.0 (clang-1700.0.13.5) default target arm64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/local/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking CXX executable cmTC_a9648] + ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a9648.dir/link.txt --verbose=1] + ignore line: [Apple clang version 17.0.0 (clang-1700.0.13.5)] + ignore line: [Target: arm64-apple-darwin24.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 15.0.0 15.5 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_a9648 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [15.0.0] ==> ignore + arg [15.5] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore + arg [-mllvm] ==> ignore + arg [-enable-linkonceodr-outlining] ==> ignore + arg [-o] ==> ignore + arg [cmTC_a9648] ==> ignore + arg [-L/usr/local/lib] ==> dir [/usr/local/lib] + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_a9648.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + linker tool for 'CXX': /Library/Developer/CommandLineTools/usr/bin/ld + Library search paths: [;/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + implicit libs: [c++] + implicit objs: [] + implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Running the CXX compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" + @(#)PROGRAM:ld PROJECT:ld-1167.5 + BUILD 01:45:05 Apr 30 2025 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.0.3.5) + - + kind: "find_package-v1" + backtrace: + - "CMakeLists.txt:8 (find_package)" + name: "oatpp" + configs: + - + filename: "oatppConfig.cmake" + kind: "cmake" + - + filename: "oatpp-config.cmake" + kind: "cmake" + version_request: + exact: false + settings: + required: "required_explicit" + quiet: false + global: false + policy_scope: true + bypass_provider: false + names: + - "oatpp" + path_suffixes: + - "" + paths: + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + CMAKE_FIND_USE_PACKAGE_ROOT_PATH: true + CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY: true + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: true + CMAKE_FIND_ROOT_PATH_MODE: "BOTH" + candidates: + - + path: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/pkgRedirects/oatppConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: "/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/pkgRedirects/oatpp-config.cmake" + mode: "config" + reason: "no_exist" + - + path: "/Users/madhav/.antigravity/antigravity/oatppConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: "/Users/madhav/.antigravity/antigravity/oatpp-config.cmake" + mode: "config" + reason: "no_exist" + - + path: "/Users/madhav/.nvm/versions/node/v16.20.2/oatppConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: "/Users/madhav/.nvm/versions/node/v16.20.2/oatpp-config.cmake" + mode: "config" + reason: "no_exist" + - + path: "/opt/homebrew/oatppConfig.cmake" + mode: "config" + reason: "no_exist" + - + path: "/opt/homebrew/oatpp-config.cmake" + mode: "config" + reason: "no_exist" + found: + path: "/opt/homebrew/lib/cmake/oatpp-1.3.1/oatppConfig.cmake" + mode: "config" + version: "1.3.1" + search_context: + ENV{PATH}: + - "/Users/madhav/.antigravity/antigravity/bin" + - "/Users/madhav/.nvm/versions/node/v16.20.2/bin" + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/Users/madhav/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr" + - "/opt/homebrew" + - "/usr/local" + - "/usr" + - "/" + - "/opt/homebrew" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + - "/sw" + - "/opt/local" + CMAKE_SYSTEM_FRAMEWORK_PATH: + - "~/Library/Frameworks" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Network/Library/Frameworks" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks" + - "/Library/Developer/CommandLineTools/Library/Frameworks" + - "/Library/Developer/CommandLineTools/Library/Frameworks" + - "/Library/Frameworks" + - "/Network/Library/Frameworks" + - "/System/Library/Frameworks" +... diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 000000000..65ba65376 --- /dev/null +++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/madhav/Desktop/oatppbackend") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/madhav/Desktop/oatppbackend/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/CMakeFiles/InstallScripts.json b/build/CMakeFiles/InstallScripts.json new file mode 100644 index 000000000..a8bd38828 --- /dev/null +++ b/build/CMakeFiles/InstallScripts.json @@ -0,0 +1,7 @@ +{ + "InstallScripts" : + [ + "/Users/madhav/Desktop/oatppbackend/build/cmake_install.cmake" + ], + "Parallel" : false +} diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake new file mode 100644 index 000000000..fc077af84 --- /dev/null +++ b/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,152 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/Users/madhav/Desktop/oatppbackend/CMakeLists.txt" + "CMakeFiles/4.2.1/CMakeCCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCXXCompiler.cmake" + "CMakeFiles/4.2.1/CMakeSystem.cmake" + "/opt/homebrew/lib/cmake/oatpp-1.3.1/oatppConfig.cmake" + "/opt/homebrew/lib/cmake/oatpp-1.3.1/oatppConfigVersion.cmake" + "/opt/homebrew/lib/cmake/oatpp-1.3.1/oatppTargets-release.cmake" + "/opt/homebrew/lib/cmake/oatpp-1.3.1/oatppTargets.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c" + "/opt/homebrew/share/cmake/Modules/CMakeCInformation.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeCXXCompiler.cmake.in" + "/opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp" + "/opt/homebrew/share/cmake/Modules/CMakeCXXInformation.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerSupport.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeGenericSystem.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeParseLibraryArchitecture.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeSystem.cmake.in" + "/opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/opt/homebrew/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/AppleClang-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Clang.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Diab-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/GNU.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Renesas-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/TIClang-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Tasking-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeCXXLinkerInformation.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeInspectCLinker.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/CMakeInspectCXXLinker.cmake" + "/opt/homebrew/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/opt/homebrew/share/cmake/Modules/Linker/AppleClang-C.cmake" + "/opt/homebrew/share/cmake/Modules/Linker/AppleClang-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Linker/AppleClang.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Apple-AppleClang-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Apple-Clang-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Darwin-Determine-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Darwin.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang-C.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang-CXX.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang.cmake" + "/opt/homebrew/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/4.2.1/CMakeSystem.cmake" + "CMakeFiles/4.2.1/CMakeCCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCXXCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCXXCompiler.cmake" + "CMakeFiles/4.2.1/CMakeCXXCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake" + ) diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2 new file mode 100644 index 000000000..b154fbe68 --- /dev/null +++ b/build/CMakeFiles/Makefile2 @@ -0,0 +1,122 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /opt/homebrew/bin/cmake + +# The command to remove a file. +RM = /opt/homebrew/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/madhav/Desktop/oatppbackend + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/madhav/Desktop/oatppbackend/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/oatpp-showcase-exe.dir/all +.PHONY : all + +# The main recursive "codegen" target. +codegen: CMakeFiles/oatpp-showcase-exe.dir/codegen +.PHONY : codegen + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/oatpp-showcase-exe.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/oatpp-showcase-exe.dir + +# All Build rule for target. +CMakeFiles/oatpp-showcase-exe.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles --progress-num=1,2 "Built target oatpp-showcase-exe" +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/oatpp-showcase-exe.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/madhav/Desktop/oatppbackend/build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/oatpp-showcase-exe.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/madhav/Desktop/oatppbackend/build/CMakeFiles 0 +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/rule + +# Convenience name for target. +oatpp-showcase-exe: CMakeFiles/oatpp-showcase-exe.dir/rule +.PHONY : oatpp-showcase-exe + +# codegen rule for target. +CMakeFiles/oatpp-showcase-exe.dir/codegen: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles --progress-num=1,2 "Finished codegen for target oatpp-showcase-exe" +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/codegen + +# clean rule for target. +CMakeFiles/oatpp-showcase-exe.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/clean +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 000000000..5689bb784 --- /dev/null +++ b/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/oatpp-showcase-exe.dir +/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/edit_cache.dir +/Users/madhav/Desktop/oatppbackend/build/CMakeFiles/rebuild_cache.dir diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 000000000..3dccd7317 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake b/build/CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake new file mode 100644 index 000000000..5e2660f33 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake @@ -0,0 +1,23 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/Users/madhav/Desktop/oatppbackend/src/App.cpp" "CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o" "gcc" "CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/build.make b/build/CMakeFiles/oatpp-showcase-exe.dir/build.make new file mode 100644 index 000000000..792f80f8e --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/build.make @@ -0,0 +1,114 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /opt/homebrew/bin/cmake + +# The command to remove a file. +RM = /opt/homebrew/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/madhav/Desktop/oatppbackend + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/madhav/Desktop/oatppbackend/build + +# Include any dependencies generated for this target. +include CMakeFiles/oatpp-showcase-exe.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/oatpp-showcase-exe.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/oatpp-showcase-exe.dir/flags.make + +CMakeFiles/oatpp-showcase-exe.dir/codegen: +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/codegen + +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o: CMakeFiles/oatpp-showcase-exe.dir/flags.make +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o: /Users/madhav/Desktop/oatppbackend/src/App.cpp +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o: CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o -MF CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d -o CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o -c /Users/madhav/Desktop/oatppbackend/src/App.cpp + +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/madhav/Desktop/oatppbackend/src/App.cpp > CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.i + +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/madhav/Desktop/oatppbackend/src/App.cpp -o CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.s + +# Object files for target oatpp-showcase-exe +oatpp__showcase__exe_OBJECTS = \ +"CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o" + +# External object files for target oatpp-showcase-exe +oatpp__showcase__exe_EXTERNAL_OBJECTS = + +oatpp-showcase-exe: CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o +oatpp-showcase-exe: CMakeFiles/oatpp-showcase-exe.dir/build.make +oatpp-showcase-exe: /opt/homebrew/lib/oatpp-1.3.1/liboatpp.dylib +oatpp-showcase-exe: CMakeFiles/oatpp-showcase-exe.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/Users/madhav/Desktop/oatppbackend/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable oatpp-showcase-exe" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/oatpp-showcase-exe.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/oatpp-showcase-exe.dir/build: oatpp-showcase-exe +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/build + +CMakeFiles/oatpp-showcase-exe.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/oatpp-showcase-exe.dir/cmake_clean.cmake +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/clean + +CMakeFiles/oatpp-showcase-exe.dir/depend: + cd /Users/madhav/Desktop/oatppbackend/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/madhav/Desktop/oatppbackend /Users/madhav/Desktop/oatppbackend /Users/madhav/Desktop/oatppbackend/build /Users/madhav/Desktop/oatppbackend/build /Users/madhav/Desktop/oatppbackend/build/CMakeFiles/oatpp-showcase-exe.dir/DependInfo.cmake "--color=$(COLOR)" oatpp-showcase-exe +.PHONY : CMakeFiles/oatpp-showcase-exe.dir/depend + diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/cmake_clean.cmake b/build/CMakeFiles/oatpp-showcase-exe.dir/cmake_clean.cmake new file mode 100644 index 000000000..3172efe03 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o" + "CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d" + "oatpp-showcase-exe" + "oatpp-showcase-exe.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/oatpp-showcase-exe.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.make b/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.make new file mode 100644 index 000000000..3b7268121 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for oatpp-showcase-exe. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.ts b/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.ts new file mode 100644 index 000000000..aaf74be1e --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for oatpp-showcase-exe. diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/depend.make b/build/CMakeFiles/oatpp-showcase-exe.dir/depend.make new file mode 100644 index 000000000..18ddeaf45 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for oatpp-showcase-exe. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/flags.make b/build/CMakeFiles/oatpp-showcase-exe.dir/flags.make new file mode 100644 index 000000000..b7fb5e4f4 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/flags.make @@ -0,0 +1,12 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# compile CXX with /usr/bin/c++ +CXX_DEFINES = + +CXX_INCLUDES = -I/Users/madhav/Desktop/oatppbackend/src -isystem /opt/homebrew/include/oatpp-1.3.1/oatpp + +CXX_FLAGSarm64 = -std=gnu++17 -arch arm64 + +CXX_FLAGS = -std=gnu++17 -arch arm64 + diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/link.txt b/build/CMakeFiles/oatpp-showcase-exe.dir/link.txt new file mode 100644 index 000000000..d2c7e6d98 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names "CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o" -o oatpp-showcase-exe -Wl,-rpath,/opt/homebrew/lib/oatpp-1.3.1 /opt/homebrew/lib/oatpp-1.3.1/liboatpp.dylib diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/progress.make b/build/CMakeFiles/oatpp-showcase-exe.dir/progress.make new file mode 100644 index 000000000..abadeb0c3 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o b/build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..b4159e43055ae1b55cd95083d762a60f716f2525 GIT binary patch literal 1475336 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ⅈC)qVd~YP}kjc)c&8rA97tAM_q3Y zWBR{thmKza!^ z9|imiE~2i3WB4Ynmm{d_N+`Ky6zI^f6_Pb{@f=mp`MQ{qMnbW@u$=` zic@&-9`18U-^MerfIlHUgBo89|Ci;5@jUA7yxZ=ZYq-R9|1w^z`)It7{M~o)9+~oM z_mK(${%N@L(^AY(i)NEGeo zc<#aTqAmO*mQdSi9<`k=;G?N$1ph?-ApQoM7x3JHa_e{sX7D?dk7I(kn?DwK5AAGV zitS|$)qWA<3;>I>^C{o{AW-GjcPZF$MJk*4Btz9^j6-ZP`-(8C4CLwfb#jj{`4=iV7e)s*Y;q#IO_Zvv;0id zbP>zXgiSY!CF&2N&Ywf5dIwE+^hS#hO;^Jt{aeGQV-d9;C-H976GruO40ZhI{g-)& z`u^qsH|giT>2~nhl&hkS9~+9PuY~>Qji}>A3iUjB5LJISYx8h~{Havt&~zNbW5oDE28>SFkRNi z86QvMi#dLWu|H3!=ZBp)*z>_Q>b=tj-k|#fJcsjQ43A@bIeIN#r?I__pq_*7Wq3Zw_Fu&lDPP1S`BQiJQ?D*jZrvV|;Z~{hRn8 z=5Gz(#dkOrd^cuM*Fg*Te&Q4ku|3S1E{qqGzW-|GiE(b@1of8j^UTi@>UTeq_#yh; zdzFo|iyG&?k2^lD;%k_XJod;>qxv_63#3QzAEXCxhHYMkr1ghkZ(J&zwGp21}d;U(C61;-~XhpK-K--iX%_PdDv z`9if5!7=(Xj+)m|RC_@zVfW=WpGT%UKwUSkW0>P;5p_P!qRz*2cqi%`!51;#`{&Rv z(yMqW=5dhx1=RSW_(bi0sRX(Md{>8izyp8hXsP`8ERJo&Prr5E$whU?4%DqckWeNhJWcUKFhOW_FlF?<{I z7s9u292rG@|1^Tn;reITO!QvFJdl5g%0EE;4#d8hX!-nx&#&V&`86}K;qzC0eg#h_ zf5l7`eSXg8FXCzBXU)W%&!6%6)2RMUnTe>+5967Pe+)IQA=J2fDeHF^r Otews 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 N7$S6#lfN~8{{!zvWI6x< literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d b/build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d new file mode 100644 index 000000000..6334b4d43 --- /dev/null +++ b/build/CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o.d @@ -0,0 +1,993 @@ +CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o: \ + /Users/madhav/Desktop/oatppbackend/src/App.cpp \ + /Users/madhav/Desktop/oatppbackend/src/./AppComponent.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/HttpConnectionHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/HttpProcessor.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/./HttpRouter.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/././HttpRequestHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/outgoing/./Response.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/outgoing/Body.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/Http.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/tcp/Connection.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/stream/Stream.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/share/LazyStringMap.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/share/./MemoryLabel.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/Primitive.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./Type.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/Countable.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/memory \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__config \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__config_site \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__configuration/abi.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__configuration/compiler.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__configuration/platform.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__configuration/availability.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__configuration/language.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/addressof.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/align.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstddef \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/version \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stddef.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/stddef.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stddef.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_header_macro.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_ptrdiff_t.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_size_t.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_wchar_t.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_null.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_nullptr_t.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_max_align_t.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_offsetof.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__cstddef/byte.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/byte.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/enable_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_integral.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/integral_constant.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_cv.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_const.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_volatile.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__cstddef/max_align_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__cstddef/nullptr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__cstddef/ptrdiff_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__cstddef/size_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocate_at_least.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocator_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/construct_at.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__assert \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__assertion_handler \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__verbose_abort \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/access.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/voidify.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_array.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/declval.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/forward.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/move.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/conditional.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_constructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_referenceable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_same.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__undef_macros \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/new \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__exception/exception.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stdlib.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_stdlib.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/ptrcheck.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_bounds.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stdint.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/stdint.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/_endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/_endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/__endian.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libkern/_OSByteOrder.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libkern/arm/_OSByteOrder.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/alloca.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_ct_rune_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_rune_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/malloc/_malloc_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/malloc/_ptrcheck.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_abort.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstdlib \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/type_traits \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/functional.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_const.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_cv.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_pointer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_void.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/add_volatile.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/aligned_storage.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/nat.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/type_list.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/aligned_union.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/alignment_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/common_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/decay.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_extent.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_cvref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/void_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/extent.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_abstract.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_arithmetic.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_floating_point.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_assignable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_base_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_class.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_compound.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_fundamental.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_null_pointer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_const.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_convertible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_destructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_all_extents.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_empty.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_enum.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_literal_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_member_pointer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_object.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_pod.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_pointer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_polymorphic.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_scalar.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_signed.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_standard_layout.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivial.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstdint \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_union.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_unsigned.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_volatile.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/make_signed.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/copy_cv.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/make_unsigned.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/rank.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_pointer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/result_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/invoke.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_core_convertible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/underlying_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_final.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/conjunction.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/disjunction.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_aggregate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_swappable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/negation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/pointer_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/limits \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocator_arg_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/uses_allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/auto_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/inout_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/compare_three_way.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/three_way_comparable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/common_comparison_category.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/ordering.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/common_reference_with.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/convertible_to.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/same_as.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/common_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/copy_cvref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/equality_comparable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/boolean_testable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/totally_ordered.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/binary_function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/operations.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/unary_function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/desugars_to.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/reference_wrapper.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/synth_three_way.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/invoke.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/weak_result_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/ostream.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/memory.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/memory_resource.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocation_guard.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/allocator_destructor.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/compressed_pair.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/tuple.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_indices.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/integer_sequence.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/dependent_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/piecewise_construct.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/uninitialized_algorithms.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/copy_move_common.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/iterator_operations.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/iter_swap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/swap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/concepts.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/arithmetic.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_signed_integer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/assignable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/constructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/destructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/copyable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/movable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/swappable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/class_or_enum.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/exchange.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/derived_from.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/invocable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/predicate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/regular.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/semiregular.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/relation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/incrementable_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_primary_template.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_valid_expansion.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/iter_move.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/iterator_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/pair.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/readable_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/advance.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/convert_to_integral.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/unreachable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/distance.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/access.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/enable_borrowed_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/auto_cast.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/concepts.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/data.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/enable_view.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/size.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/initializer_list \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/iter_swap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/next.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/prev.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/unwrap_iter.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/unwrap_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/pair.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__concepts/different_from.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/array.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/sfinae_helpers.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/make_tuple_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_element.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_size.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_like_ext.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/tuple_like_no_subrange.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/complex.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_relocatable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/unwrap_ref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__string/constexpr_c_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/datasizeof.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_equality_comparable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/is_pointer_in_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/comp.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/is_valid_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/for_each_segment.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/segmented_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/comp_ref_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min_element.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/identity.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_callable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/move.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__compare/compare_three_way_result.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/subrange.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/subrange.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/dangling.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/view_interface.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/empty.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_unbounded_array.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/exception_guard.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/hash.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstring \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_rsize_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_errno_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_strings.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/type_identity.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_bounded_array.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/typeinfo \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/memory_order.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_specialization.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/find_index.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tuple/ignore.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/lazy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/maybe_const.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/compare \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cmath \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/hypot.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/abs.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/exponential_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/promote.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/min_max.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/roots.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/special_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/copysign.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/math.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/math.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/error_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/fdim.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/fma.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/gamma.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/hyperbolic_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/logarithms.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/modulo.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/remainder.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/rounding_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/trigonometric_functions.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/exception \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__exception/exception_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__exception/operations.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__exception/nested_exception.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__exception/terminate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/iosfwd \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/fstream.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/ios.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/istream.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/sstream.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/streambuf.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__std_mbstate_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mbstate_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_mbstate_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/utility \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/rel_ops.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/as_const.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/in_place.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/out_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/raw_storage_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/temporary_buffer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/atomic \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/aliases.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic_base.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic_sync.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/contention_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/to_gcc_order.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/duration.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ratio \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/climits \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/limits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/poll_with_backoff.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/high_resolution_clock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/steady_clock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/time_point.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/system_clock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ctime \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/time.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_time.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/support.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/support/pthread.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/convert_to_timespec.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/errno.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread/sched.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread/pthread_impl.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread/qos.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/qos.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_mach_port_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sched.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/check_memory_order.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/is_always_lock_free.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic_lock_free.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic_flag.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/atomic_init.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/fence.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__atomic/kill_dependency.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/concepts \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/iterator \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/back_insert_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/front_insert_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/insert_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/istream_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/default_sentinel.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/istreambuf_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_sentinel.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/ostream_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/wrap_iter.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_access.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/data.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/empty.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/size.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/variant \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/forward_like.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__variant/monostate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stdexcept \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/./Environment.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/././Compiler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/././Config.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstdarg \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/stdarg.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg_header_macro.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg___gnuc_va_list.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg_va_list.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg_va_arg.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg___va_copy.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stdarg_va_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cstdio \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stdio.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_printf.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/mutex \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__condition_variable/condition_variable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mutex/mutex.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mutex/unique_lock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mutex/tag_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__system_error/system_error.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__system_error/error_category.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/max.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/max_element.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/remove.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find_segment_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/countr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/rotate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/invert_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/bit_reference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cwchar \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cwctype \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cctype \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_ctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/runetype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_wint_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_wctrans_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/__wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/___wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_wctype_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/wchar.h \ + /Library/Developer/CommandLineTools/usr/lib/clang/17/include/__stddef_rsize_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/wchar.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_wchar.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/remove_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__debug_utils/sanitizers.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/enable_insertable.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ios/fpos.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/bounded_iter.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/noexcept_move_assign_container.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/swap_allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory_resource/memory_resource.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/container_compatible_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/from_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__string/char_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/fill_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find_end.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/search.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find_first_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__string/extern_template_lists.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/string_view.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/algorithm \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/adjacent_find.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/all_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/any_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/binary_search.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/lower_bound.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/half_positive.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/copy_backward.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/copy_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/copy_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/count.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/popcount.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/count_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/equal.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/equal_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/upper_bound.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/fill.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/find_if_not.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/for_each.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/movable_box.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/optional \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/generate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/generate_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/includes.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/rotate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/move_backward.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/swap_ranges.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/destruct_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_heap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_heap_until.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_partitioned.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_permutation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_sorted.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/is_sorted_until.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/lexicographical_compare.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/make_heap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/sift_down.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/merge.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/minmax.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/minmax_element.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/mismatch.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/simd_utils.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/bit_cast.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/countl.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/aliasing_iterator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/next_permutation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/reverse.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/none_of.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/nth_element.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/sort.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/partial_sort.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/sort_heap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/pop_heap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/push_heap.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__debug_utils/randomize_range.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit/blsr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/ranges_operations.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/partial_sort_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/make_projected.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/partition.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/partition_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/partition_point.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/prev_permutation.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/remove_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/remove_copy_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/replace.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/replace_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/replace_copy_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/replace_if.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/reverse_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/rotate_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/search_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/set_difference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/set_intersection.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/set_union.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/shuffle.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/uniform_int_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/is_valid.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/log2.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/stable_partition.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/stable_sort.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/transform.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/unique.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/unique_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/clamp.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/for_each_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/pstl.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/sample.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/bit \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__system_error/error_code.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__system_error/errc.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cerrno \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__system_error/error_condition.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mutex/lock_guard.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__mutex/once_flag.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/id.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/unordered_map \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/is_transparent.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__hash_table \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/can_extract_key.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/remove_const_ref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/erase_if_container.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__node_handle \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/Environment.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/list \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/functional \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/binary_negate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/bind.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/binder1st.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/binder2nd.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/mem_fn.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/mem_fun_ref.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/pointer_to_binary_function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/pointer_to_unary_function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/unary_negate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/function.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/builtin_new_allocator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/strip_signature.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/boyer_moore_searcher.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/array \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/empty.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/vector \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__bit_reference \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/format.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_bool.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/concepts.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/format_parse_context.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/format_error.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_integral.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__charconv/to_chars_integral.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__charconv/tables.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__charconv/to_chars_base_10.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__charconv/to_chars_result.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__charconv/traits.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_output.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/in_out_result.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_fill_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_transform.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/in_in_out_result.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/projected.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/buffer.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_copy_n.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/unreachable_sentinel.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/format_to_n_result.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/ranges_construct_at.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/concepts.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/parser_std_format_spec.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/format_arg.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/format_string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/unicode.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/indic_conjunct_break_table.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/width_estimation_table.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale_dir/locale_base_api.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_xlocale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_locale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_locale_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/__xlocale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_mb_cur_max.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_ctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/___wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_stdio.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_stdlib.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_string.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_time.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_wchar.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/xlocale/_wctype.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/no_destroy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/private_constructor_tag.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/clocale \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/locale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/locale.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/vector.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/temp_value.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__split_buffer \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/locale \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ios \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/streambuf \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/nl_types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_char.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_short.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino64_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_copy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_types/_nl_item.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_defaults.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/default_searcher.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/not_fn.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/perfect_forward.h \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/utils/String.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/concurrency/SpinLock.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/Coroutine.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/./Error.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/utils/FastQueue.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/IODefinitions.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/Error.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/Types.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/Object.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./Any.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/././Type.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./Primitive.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./Enum.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/././Any.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/././Primitive.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/share/MemoryLabel.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./UnorderedMap.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/././Map.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./././Type.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./PairList.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./List.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/././Collection.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/unordered_set \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./Vector.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/./UnorderedSet.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/socket.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/constrained_ctypes.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/_param.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/arm/_param.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/net/net_kev.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_sa_family_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_socklen_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/chrono \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__chrono/file_clock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/forward_list \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/buffer/IOBuffer.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/buffer/Processor.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/base/ObjectHandle.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/CommunicationError.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/parser/Caret.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/encoding/EncoderProvider.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/ConnectionHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/provider/Provider.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/provider/Invalidator.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/stream/BufferStream.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/Bundle.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/ObjectMapper.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/mapping/type/Type.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/parser/ParsingError.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/outgoing/Response.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/incoming/Request.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/incoming/BodyDecoder.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/url/mapping/Pattern.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/Url.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/api/ApiController.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/api/./Endpoint.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/HttpRequestHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/handler/AuthorizationHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/macro/codegen.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/macro/./basic.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/handler/ErrorHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/incoming/Response.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/outgoing/Request.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/utils/ConversionUtils.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/api/Endpoint.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/url/mapping/Router.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/url/mapping/./Pattern.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/./interceptor/RequestInterceptor.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/./interceptor/ResponseInterceptor.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/./handler/ErrorHandler.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/encoding/ProviderCollection.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/stream/StreamBufferedProxy.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/data/buffer/FIFOBuffer.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/protocol/http/utils/CommunicationUtils.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/Processor.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/./Coroutine.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/async/./CoroutineWaitList.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/thread \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/formatter.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/jthread.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/stop_source.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/intrusive_shared_ptr.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/stop_state.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/atomic_unique_lock.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/intrusive_list_view.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/stop_token.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/thread.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/sstream \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ostream/basic_ostream.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/bitset \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_char_like_type.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/istream \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ostream \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/format \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/queue \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/deque.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/queue.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/deque \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/stack \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__fwd/stack.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/print \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__thread/this_thread.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/condition_variable \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__stop_token/stop_callback.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/set \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__tree \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/web/server/HttpRouter.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/tcp/server/ConnectionProvider.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/Address.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/ConnectionProvider.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/tcp/ConnectionConfigurer.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/parser/json/mapping/ObjectMapper.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/parser/json/mapping/./Serializer.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/parser/json/Utils.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/parser/json/Beautifier.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/parser/json/mapping/./Deserializer.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/macro/component.hpp \ + /Users/madhav/Desktop/oatppbackend/src/./controller/ApiController.hpp \ + /Users/madhav/Desktop/oatppbackend/src/dto/DTOs.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/DTO_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/core/macro/basic.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./dto/base_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./dto/enum_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/DTO_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./dto/base_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./dto/enum_undef.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/random \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/bernoulli_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/uniform_real_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/generate_canonical.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/binomial_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/cauchy_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/chi_squared_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/gamma_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/exponential_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/default_random_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/linear_congruential_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/is_seed_sequence.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/discard_block_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/discrete_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/numeric \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/accumulate.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/adjacent_difference.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/inner_product.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/iota.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/partial_sum.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/exclusive_scan.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/gcd_lcm.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/inclusive_scan.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/pstl.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/reduce.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/transform_exclusive_scan.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/transform_inclusive_scan.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__numeric/transform_reduce.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/execution \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_execution_policy.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/extreme_value_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/fisher_f_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/geometric_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/negative_binomial_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/poisson_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/clamp_to_integral.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/normal_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/independent_bits_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/knuth_b.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/shuffle_order_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/lognormal_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/mersenne_twister_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/piecewise_constant_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/piecewise_linear_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/random_device.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/ranlux.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/subtract_with_carry_engine.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/seed_seq.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/student_t_distribution.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/uniform_random_bit_generator.h \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__random/weibull_distribution.h \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/ApiController_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/base_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/auth_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/bundle_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/cors_define.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/ApiController_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/base_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/auth_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/bundle_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/codegen/./api_controller/cors_undef.hpp \ + /opt/homebrew/include/oatpp-1.3.1/oatpp/oatpp/network/Server.hpp \ + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/iostream diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks new file mode 100644 index 000000000..0cfbf0888 --- /dev/null +++ b/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 000000000..46916a779 --- /dev/null +++ b/build/Makefile @@ -0,0 +1,181 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.2 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /opt/homebrew/bin/cmake + +# The command to remove a file. +RM = /opt/homebrew/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/madhav/Desktop/oatppbackend + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/madhav/Desktop/oatppbackend/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /opt/homebrew/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /opt/homebrew/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/madhav/Desktop/oatppbackend/build/CMakeFiles /Users/madhav/Desktop/oatppbackend/build//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/madhav/Desktop/oatppbackend/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named oatpp-showcase-exe + +# Build rule for target. +oatpp-showcase-exe: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 oatpp-showcase-exe +.PHONY : oatpp-showcase-exe + +# fast build rule for target. +oatpp-showcase-exe/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/build +.PHONY : oatpp-showcase-exe/fast + +src/App.o: src/App.cpp.o +.PHONY : src/App.o + +# target to build an object file +src/App.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.o +.PHONY : src/App.cpp.o + +src/App.i: src/App.cpp.i +.PHONY : src/App.i + +# target to preprocess a source file +src/App.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.i +.PHONY : src/App.cpp.i + +src/App.s: src/App.cpp.s +.PHONY : src/App.s + +# target to generate assembly for a file +src/App.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/oatpp-showcase-exe.dir/build.make CMakeFiles/oatpp-showcase-exe.dir/src/App.cpp.s +.PHONY : src/App.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... oatpp-showcase-exe" + @echo "... src/App.o" + @echo "... src/App.i" + @echo "... src/App.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/cmake_install.cmake b/build/cmake_install.cmake new file mode 100644 index 000000000..65c44292c --- /dev/null +++ b/build/cmake_install.cmake @@ -0,0 +1,61 @@ +# Install script for directory: /Users/madhav/Desktop/oatppbackend + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/madhav/Desktop/oatppbackend/build/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/madhav/Desktop/oatppbackend/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/build/oatpp-showcase-exe b/build/oatpp-showcase-exe new file mode 100755 index 0000000000000000000000000000000000000000..6f05bfcf740c8605ed8a181d94f47d7cb1b9c31f GIT binary patch literal 1379248 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

WA{Yto=DEXO4yRfJUtP=CNW=|Bq2$xPpq3n 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 literal 0 HcmV?d00001 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..5198f1cd4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3.8' + +services: + backend: + build: + context: ./backend + dockerfile: Dockerfile + ports: + - "8000:8000" + environment: + - ENV=production + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] + interval: 30s + timeout: 10s + retries: 3 + + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + ports: + - "3000:3000" + depends_on: + - backend + environment: + - VITE_API_URL=http://backend:8000 + restart: unless-stopped \ No newline at end of file diff --git a/docs/.vuepress/components/contributors.vue b/docs/.vuepress/components/contributors.vue deleted file mode 100644 index 0f62e9299..000000000 --- a/docs/.vuepress/components/contributors.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/.vuepress/components/maintainers.vue b/docs/.vuepress/components/maintainers.vue deleted file mode 100644 index 1749db1f8..000000000 --- a/docs/.vuepress/components/maintainers.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/.vuepress/components/seo.vue b/docs/.vuepress/components/seo.vue deleted file mode 100644 index 82dfeb44b..000000000 --- a/docs/.vuepress/components/seo.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/.vuepress/components/users.vue b/docs/.vuepress/components/users.vue deleted file mode 100644 index 4e7dbeec7..000000000 --- a/docs/.vuepress/components/users.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index 50d61f45e..000000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,145 +0,0 @@ -const API_latest = require('../api/latest/index.json'); - -module.exports = { - - title: "Oat++", - description: "Oat++ is an open-source C++ web framework for development of highly scalable and resource-efficient web applications. It's zero-dependency and easy-portable.", - - componentsDir: "docs/.vuepress/components", - - plugins: [ - [ - '@vuepress/google-analytics', - { ga: 'UA-72424701-2'} - ] - ], - - shouldPrefetch: function() { - return false; - }, - - head: [ - ['link', { rel: 'icon', href: '/logo_x64.png' }] - ], - - themeConfig: { - - logo: "https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/logo_x400.png", - - // Assumes GitHub. Can also be a full GitLab url. - repo: "https://github.com/oatpp/oatpp", - - // if your docs are in a different repo from your main project: - docsRepo: "https://github.com/oatpp/website", - docsDir: "docs", - docsBranch: "master", - editLinks: true, - - themeConfig: { - lastUpdated: 'Last Updated', // string | boolean - }, - - nav: [ - {text: "Quick Start", link: "/docs/start/"}, - {text: "About", link: "/about/"}, - {text: "Support", link: "/support/"} - ], - sidebar: [ - { - title: "About", - collapsable: true, - children: [ - ["/about/", "About"], - ["/contact/", "Contact"], - ["/contributing/", "Contributing"], - ["/supported-platforms/", "Supported Platforms"], - ["/status/build/", "Build Status"] - ] - }, - { - title: "Benchmark", - collapsable: true, - children: [ - ["/benchmark/websocket/5-million/", "5 Million WebSockets"], - ["/benchmark/websocket/2-million/", "2 Million WebSockets"] - ] - }, - { - title: "Examples", - collapsable: true, - children: [ - ["/examples/api-client/", "HTTP Requests With ApiClient"], - ["/examples/async-api/", "Asynchronous API"], - ["/examples/crud/", "CRUD API With Swagger-UI"], - ["/examples/consul/", "Consul Integration"], - ["/examples/hls-media-stream/", "HTTP Live Streaming Server"], - ["/examples/iot-hue-ssdp/", "IoT Hue Emulator"], - ["/examples/libressl/", "TLS With Libressl"], - ["/examples/microservices/", "Microservices"], - ["/examples/mongodb/", "MongoDB"], - ["/examples/postgresql/", "PostgreSQL Database"], - ["/examples/websocket/", "WebSocket Examples"], - ["/examples/yuv-websocket-stream/", "YUV WebSocket Stream"] - ] - },{ - title: "Installation", - collapsable: true, - children: [ - ["/docs/installation/unix-linux/", "Unix/Linux"], - ["/docs/installation/windows/", "Windows"], - ["/docs/installation/vcpkg/", "Vcpkg"], - ["/docs/installation/conan/", "Conan"] - ] - },{ - title: "Start", - collapsable: true, - children: [ - ["/docs/start/", "Getting Started"], - ["/docs/start/high-level-overview/", "High Level Overview"], - ["/docs/start/step-by-step/", "Step By Step Guide"], - ["/docs/start/project/", "Starter Project"], - ["/docs/start/project-async-api/", "Starter Project - Async API"], - ["/docs/start/module/", "Starter Project - Module"], - ] - }, { - title: "Overview", - collapsable: true, - children: [ - ["/docs/components/api-controller/", "Api Controller"], - ["/docs/components/api-client/", "Api Client"], - ["/docs/components/dto/", "Data Transfer Object (DTO)"], - ["/docs/components/orm/", "ORM Framework"], - ["/docs/monolithization/", "Monolithization"], - ["/docs/features/upload-file/", "Upload File"], - ["/docs/oatpp-coroutines/", "Coroutines"], - ["/docs/simple-vs-async/", "Simple vs Async"], - ["/docs/async/", "Async"] - ] - }, - { - title: "Modules", - collapsable: true, - children: [ - ["/docs/modules/oatpp/", "oatpp"], - ["/docs/modules/oatpp-consul/", "oatpp-consul"], - ["/docs/modules/oatpp-curl/", "oatpp-curl"], - ["/docs/modules/oatpp-libressl/", "oatpp-libressl"], - ["/docs/modules/oatpp-mbedtls/", "oatpp-mbedtls"], - ["/docs/modules/oatpp-mongo/", "oatpp-mongo"], - ["/docs/modules/oatpp-postgresql/", "oatpp-postgresql"], - ["/docs/modules/oatpp-sqlite/", "oatpp-sqlite"], - ["/docs/modules/oatpp-ssdp/", "oatpp-ssdp"], - ["/docs/modules/oatpp-swagger/", "oatpp-swagger"], - ["/docs/modules/oatpp-websocket/", "oatpp-websocket"], - ["/docs/modules/oatpp-zlib/", "oatpp-zlib"] - ] - }, - { - title: "API Reference", - collapsable: true, - children: API_latest - } - ] - - } -} \ No newline at end of file diff --git a/docs/.vuepress/dist/404.html b/docs/.vuepress/dist/404.html deleted file mode 100644 index dafd66563..000000000 --- a/docs/.vuepress/dist/404.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - Oat++ - - - - - - - -

- - - diff --git a/docs/.vuepress/dist/about/index.html b/docs/.vuepress/dist/about/index.html deleted file mode 100644 index c95c6f7c4..000000000 --- a/docs/.vuepress/dist/about/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - About | Oat++ - - - - - - - -

# About Oat++


Latest version 1.3.0 🎉

Oat++ is an open-source C++ web framework for highly scalable and resource-efficient web applications.
-It provides all the necessary components for production-grade development, including:

It's zero-dependency, easy-portable, and high-performance.

# Maintainers


# Contributors


Contribute to Oat++ with us!
Clone Oat++ on Github and join our Dev-Chat on Gitter

# Oat++ User Community

Join Oat++ user community!
-Tell us about your use-case - 📬 contact@oatpp.io

- - - diff --git a/docs/.vuepress/dist/api/latest/index.html b/docs/.vuepress/dist/api/latest/index.html deleted file mode 100644 index ce5dc47ce..000000000 --- a/docs/.vuepress/dist/api/latest/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Oat++ API Index Latest | Oat++ - - - - - - - -

# Welcome To Oat++ API Index!

Index for API version: latest

# Module oatpp

# Module oatpp-consul

# Module oatpp-curl

# Module oatpp-libressl

# Module oatpp-mbedtls

# Module oatpp-mongo

# Module oatpp-openssl

# Module oatpp-postgresql

# Module oatpp-protobuf

# Module oatpp-sqlite

# Module oatpp-ssdp

# Module oatpp-swagger

# Module oatpp-websocket

# Module oatpp-zlib

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-consul/Client/index.html b/docs/.vuepress/dist/api/latest/oatpp-consul/Client/index.html deleted file mode 100644 index 0a694b7b4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-consul/Client/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - Client.hpp | Oat++ - - - - - - - -

# Client.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-consul
#include "oatpp-consul/Client.hpp"

# Client

oatpp::consul::Client provides convenience methods above oatpp::consul::rest::Client

namespace oatpp { namespace consul { 
-  class Client {}
-}}
-

# Typedefs

Type Name Summary
oatpp::web::client::RequestExecutor RequestExecutor Convenience typedef for oatpp::web::client::RequestExecutor.
oatpp::data::mapping::ObjectMapper ObjectMapper Convenience typedef for oatpp::data::mapping::ObjectMapper.

# Methods

Return Type Name Summary
std::shared_ptr<rest::Client> getRestClient get oatpp::consul::rest::Client
std::shared_ptr<data::mapping::ObjectMapper> getObjectMapper Get object mapper initialized in the client instance.
oatpp::Object<rest::KVMetadata> kvGetMetadata Get metadata for key containing base64 encoded value along with other fields
oatpp::Object<rest::KVMetadata> kvGetMetadataInDC Same as kvGetMetadata(key) but for given datacenter (DC)
oatpp::String kvGet Get value by key
oatpp::String kvGetInDC Get value by key for given datacenter
Type::ObjectWrapper kvGetAsDto Get value by key and deserialize it to DTO object using given objectMapper
Type::ObjectWrapper kvGetAsDtoInDC Get value by key for given datacenter and deserialize it to DTO object using given objectMapper
bool kvPut Put value for key
bool kvPutInDC Put value for key for given datacenter
bool kvDelete Delete value for key
bool kvDeleteInDC Delete value for key for given datacenter

# Client::RequestExecutor

Convenience typedef for oatpp::web::client::RequestExecutor.

typedef oatpp::web::client::RequestExecutor RequestExecutor
-

# Client::ObjectMapper

Convenience typedef for oatpp::data::mapping::ObjectMapper.

typedef oatpp::data::mapping::ObjectMapper ObjectMapper
-

# Client::getRestClient

get oatpp::consul::rest::Client rest::Client provides more flexible

std::shared_ptr<rest::Client> getRestClient()
-

# Client::getObjectMapper

Get object mapper initialized in the client instance.

std::shared_ptr<data::mapping::ObjectMapper> getObjectMapper() const
-

# Client::kvGetMetadata

Get metadata for key containing base64 encoded value along with other fields

oatpp::Object<rest::KVMetadata> kvGetMetadata(const oatpp::String& key) const
-

# Client::kvGetMetadataInDC

Same as kvGetMetadata(key) but for given datacenter (DC)

oatpp::Object<rest::KVMetadata> kvGetMetadataInDC(const oatpp::String& key, const oatpp::String& datacenter) const
-

# Client::kvGet

Get value by key

oatpp::String kvGet(const oatpp::String& key) const
-

# Client::kvGetInDC

Get value by key for given datacenter

oatpp::String kvGetInDC(const oatpp::String& key, const oatpp::String& datacenter) const
-

# Client::kvGetAsDto

Get value by key and deserialize it to DTO object using given objectMapper

template<class Type>
-typename Type::ObjectWrapper kvGetAsDto(const oatpp::String& key, const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& objectMapper) const
-

# Client::kvGetAsDtoInDC

Get value by key for given datacenter and deserialize it to DTO object using given objectMapper

template<class Type>
-typename Type::ObjectWrapper kvGetAsDtoInDC(const oatpp::String& key,
-                                            const oatpp::String& datacenter,
-                                            const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& objectMapper) const
-

# Client::kvPut

Put value for key

bool kvPut(const oatpp::String& key, const oatpp::String& value) const
-

# Client::kvPutInDC

Put value for key for given datacenter

bool kvPutInDC(const oatpp::String& key, const oatpp::String& value, const oatpp::String& datacenter) const
-

# Client::kvDelete

Delete value for key

bool kvDelete(const oatpp::String& key) const
-

# Client::kvDeleteInDC

Delete value for key for given datacenter

bool kvDeleteInDC(const oatpp::String& key, const oatpp::String& datacenter) const
-

# Client::Error

Client call error.

namespace oatpp { namespace consul { 
-  class Client {
-    class Error : public std::runtime_error {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] Error Constructor.
oatpp::String& getMessage Get error message.
v_int32 getHttpErrorCode Get http error code.

# Client::Error::Error

Constructor.

  • @param message - error message.
  • @param httpErrorCode - http error code.

Error(const oatpp::String& message, v_int32 httpErrorCode)
-  :std::runtime_error(message->c_str())
-  , m_message(message)
-

# Client::Error::getMessage

Get error message.

oatpp::String& getMessage()
-

# Client::Error::getHttpErrorCode

Get http error code.

  • @return - http error code.

v_int32 getHttpErrorCode()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-consul/rest/Client/index.html b/docs/.vuepress/dist/api/latest/oatpp-consul/rest/Client/index.html deleted file mode 100644 index f0e066879..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-consul/rest/Client/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Client.hpp | Oat++ - - - - - - - -

# Client.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-consul
#include "oatpp-consul/rest/Client.hpp"

# Client

oatpp::consul::rest::Client provides consul rest API calls for Simple and Async oatpp API.
For more convenient methods see oatpp::consul::Client.
See Rest Client full declaration on github: rest/Client.hpp;

namespace oatpp { namespace consul { namespace rest { 
-  class Client : public oatpp::web::client::ApiClient {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-consul/rest/DTOs/index.html b/docs/.vuepress/dist/api/latest/oatpp-consul/rest/DTOs/index.html deleted file mode 100644 index 25253508e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-consul/rest/DTOs/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - DTOs.hpp | Oat++ - - - - - - - -

# DTOs.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-consul
#include "oatpp-consul/rest/DTOs.hpp"

# KVMetadata

DTO object representing Consul KV Metadata Response.
For More info see Consul KV Store Endpoints.

namespace oatpp { namespace consul { namespace rest { 
-  class KVMetadata : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String key Full path of the entry.
String value Value.
May contain base64 encoded value if no "raw" parameter were specified in request ex.:"v1/kv/{key}?raw".
String session Session.
Int32 createIndex Internal index value that represents when the entry was created.
Int32 modifyIndex Last index that modified this key.
Int32 lockIndex The number of times this key has successfully been acquired in a lock. If the lock is held, the Session key provides the session that owns the lock.
Int32 flags An opaque unsigned integer that can be attached to each entry.

# Methods

Return Type Name Summary
String getValueDecoded Get base64 decoded KVMetadata::value.

# KVMetadata::key

Full path of the entry.

DTO_FIELD(String, key, "Key")
-

# KVMetadata::value

Value.
May contain base64 encoded value if no "raw" parameter were specified in request ex.:"v1/kv/{key}?raw".

DTO_FIELD(String, value, "Value")
-

# KVMetadata::session

Session.

DTO_FIELD(String, session, "Session")
-

# KVMetadata::createIndex

Internal index value that represents when the entry was created.

DTO_FIELD(Int32, createIndex, "CreateIndex")
-

# KVMetadata::modifyIndex

Last index that modified this key.

DTO_FIELD(Int32, modifyIndex, "ModifyIndex")
-

# KVMetadata::lockIndex

The number of times this key has successfully been acquired in a lock. If the lock is held, the Session key provides the session that owns the lock.

DTO_FIELD(Int32, lockIndex, "LockIndex")
-

# KVMetadata::flags

An opaque unsigned integer that can be attached to each entry.

DTO_FIELD(Int32, flags, "Flags")
-

# KVMetadata::getValueDecoded

Get base64 decoded KVMetadata::value.

String getValueDecoded() const
-

# AgentCheckRegisterPayload

DTO Object representing Consul Agent Register Check.
For more information see Consul Agent Register Check.

namespace oatpp { namespace consul { namespace rest { 
-  class AgentCheckRegisterPayload : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String name Name of the check.
String id Unique ID for this check on the node.
String interval Frequency at which to run this check.
String notes Arbitrary information.
String deregisterCriticalServiceAfter Specifies that checks associated with a service should deregister after this time.
List<String> args Command arguments to run to update the status of the check.
String dockerContainerID Specifies that the check is a Docker check.
String grpc Specifies a gRPC check's endpoint that supports the standard gRPC health checking protocol.
Boolean grpcUseTLS Set trueto use TLS for this gRPC health check.
String http HTTP check's endpoint. Default Method is GET.
String method Specifies a different HTTP method to be used for an HTTP check. If not specified GET is used.
Fields<List<String>> header Set of headers that should be set for HTTP checks.
String timeout Timeout for outgoing connections
Boolean tlsSkipVerify Specifies if the certificate for an HTTPS check should not be verified.
String tcp Specifies a TCP to connect against the value of TCP (expected to be an IP or hostname plus port combination) every Interval.
String ttl Specifies this is a TTL check, and the TTL endpoint must be used periodically to update the state of the check.
String serviceID Specifies the ID of a service to associate the registered check with an existing service provided by the agent.
String status Initial status of the health check.

# AgentCheckRegisterPayload::name

Name of the check.

DTO_FIELD(String, name, "Name")
-

# AgentCheckRegisterPayload::id

Unique ID for this check on the node.

DTO_FIELD(String, id, "ID")
-

# AgentCheckRegisterPayload::interval

Frequency at which to run this check.

DTO_FIELD(String, interval, "Interval")
-

# AgentCheckRegisterPayload::notes

Arbitrary information.

DTO_FIELD(String, notes, "Notes")
-

# AgentCheckRegisterPayload::deregisterCriticalServiceAfter

Specifies that checks associated with a service should deregister after this time.

DTO_FIELD(String, deregisterCriticalServiceAfter, "DeregisterCriticalServiceAfter")
-

# AgentCheckRegisterPayload::args

Command arguments to run to update the status of the check.

DTO_FIELD(List<String>, args, "Args")
-

# AgentCheckRegisterPayload::dockerContainerID

Specifies that the check is a Docker check.

DTO_FIELD(String, dockerContainerID, "DockerContainerID")
-

# AgentCheckRegisterPayload::grpc

Specifies a gRPC check's endpoint that supports the standard gRPC health checking protocol.

DTO_FIELD(String, grpc, "GRPC")
-

# AgentCheckRegisterPayload::grpcUseTLS

Set trueto use TLS for this gRPC health check.

DTO_FIELD(Boolean, grpcUseTLS, "GRPCUseTLS")
-

# AgentCheckRegisterPayload::http

HTTP check's endpoint. Default Method is GET.

DTO_FIELD(String, http, "HTTP")
-

# AgentCheckRegisterPayload::method

Specifies a different HTTP method to be used for an HTTP check. If not specified GET is used.

DTO_FIELD(String, method, "Method")
-

# AgentCheckRegisterPayload::header

Set of headers that should be set for HTTP checks.

DTO_FIELD(Fields<List<String>>, header, "Header")
-

# AgentCheckRegisterPayload::timeout

Timeout for outgoing connections

DTO_FIELD(String, timeout, "Timeout")
-

# AgentCheckRegisterPayload::tlsSkipVerify

Specifies if the certificate for an HTTPS check should not be verified.

DTO_FIELD(Boolean, tlsSkipVerify, "TLSSkipVerify")
-

# AgentCheckRegisterPayload::tcp

Specifies a TCP to connect against the value of TCP (expected to be an IP or hostname plus port combination) every Interval.

DTO_FIELD(String, tcp, "TCP")
-

# AgentCheckRegisterPayload::ttl

Specifies this is a TTL check, and the TTL endpoint must be used periodically to update the state of the check.

DTO_FIELD(String, ttl, "TTL")
-

# AgentCheckRegisterPayload::serviceID

Specifies the ID of a service to associate the registered check with an existing service provided by the agent.

DTO_FIELD(String, serviceID, "ServiceID")
-

# AgentCheckRegisterPayload::status

Initial status of the health check.

DTO_FIELD(String, status, "Status")
-

# AgentServiceRegisterPayload

DTO Object representing Consul Agent Register Service.
For more information see Consul Agent Register Service.

namespace oatpp { namespace consul { namespace rest { 
-  class AgentServiceRegisterPayload : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String name Logical name of the service.
String id Unique ID for this service.
List<String> tags List of tags to assign to the service.
String address Specifies the address of the service. If not provided, the agent's address is used as the address for the service during DNS queries.
Fields<String> meta Specifies arbitrary KV metadata linked to the service instance.
Int32 port Port of the service.
String kind The kind of service. Defaults to "" which is a typical Consul service. This value may also be "connect-proxy" for services that are Connect-capable proxies representing another service.
String proxyDestination Deprecated.
Object<AgentCheckRegisterPayload> check AgentCheckRegisterPayload.
List<Object<AgentCheckRegisterPayload>> checks List of AgentCheckRegisterPayload.
Boolean enableTagOverride Specifies to disable the anti-entropy feature for this service's tags.

# AgentServiceRegisterPayload::name

Logical name of the service.

DTO_FIELD(String, name, "Name")
-

# AgentServiceRegisterPayload::id

Unique ID for this service.

DTO_FIELD(String, id, "ID")
-

# AgentServiceRegisterPayload::tags

List of tags to assign to the service.

DTO_FIELD(List<String>, tags, "Tags")
-

# AgentServiceRegisterPayload::address

Specifies the address of the service. If not provided, the agent's address is used as the address for the service during DNS queries.

DTO_FIELD(String, address, "Address")
-

# AgentServiceRegisterPayload::meta

Specifies arbitrary KV metadata linked to the service instance.

DTO_FIELD(Fields<String>, meta, "Meta")
-

# AgentServiceRegisterPayload::port

Port of the service.

DTO_FIELD(Int32, port, "Port")
-

# AgentServiceRegisterPayload::kind

The kind of service. Defaults to "" which is a typical Consul service. This value may also be "connect-proxy" for services that are Connect-capable proxies representing another service.

DTO_FIELD(String, kind, "Kind")
-

# AgentServiceRegisterPayload::proxyDestination

Deprecated.

DTO_FIELD(String, proxyDestination, "ProxyDestination")
-

# AgentServiceRegisterPayload::check

AgentCheckRegisterPayload.

DTO_FIELD(Object<AgentCheckRegisterPayload>, check, "Check")
-

# AgentServiceRegisterPayload::checks

List of AgentCheckRegisterPayload.

DTO_FIELD(List<Object<AgentCheckRegisterPayload>>, checks, "Checks")
-

# AgentServiceRegisterPayload::enableTagOverride

Specifies to disable the anti-entropy feature for this service's tags.

DTO_FIELD(Boolean, enableTagOverride, "EnableTagOverride")
-

# SessionPayload

DTO Object representing Consul Agent Session.
For more information see Consul Session HTTP Endpoint.

namespace oatpp { namespace consul { namespace rest { 
-  class SessionPayload : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Int64 createIndex Internal index value that represents when the entry was created.
String id id.
Int64 lockDelay The duration for the lock delay. This must be greater than 0
String node The name of the node. This must refer to a node that is already registered.
String name A human-readable name for the session.
List<String> cheks A list of associated health check IDs (commonly CheckID in API responses).
String behavior Controls the behavior to take when a session is invalidated. Valid values are:
  • release - causes any locks that are held to be released
  • delete - causes any locks that are held to be deleted
String ttl The number of seconds (between 10s and 86400s).

# SessionPayload::createIndex

Internal index value that represents when the entry was created.

DTO_FIELD(Int64, createIndex, "CreateIndex")
-

# SessionPayload::id

id.

DTO_FIELD(String, id, "ID")
-

# SessionPayload::lockDelay

The duration for the lock delay. This must be greater than 0

DTO_FIELD(Int64, lockDelay, "LockDelay")
-

# SessionPayload::node

The name of the node. This must refer to a node that is already registered.

DTO_FIELD(String, node, "Node")
-

# SessionPayload::name

A human-readable name for the session.

DTO_FIELD(String, name, "Name")
-

# SessionPayload::cheks

A list of associated health check IDs (commonly CheckID in API responses).

DTO_FIELD(List<String>, cheks, "Checks")
-

# SessionPayload::behavior

Controls the behavior to take when a session is invalidated. Valid values are:

  • release - causes any locks that are held to be released
  • delete - causes any locks that are held to be deleted

DTO_FIELD(String, behavior, "Behavior")
-

# SessionPayload::ttl

The number of seconds (between 10s and 86400s).

DTO_FIELD(String, ttl, "TTL")
-

# ServiceAddressPayload

The structure representing LAN and WAN addresses for the service instance.

namespace oatpp { namespace consul { namespace rest { 
-  class ServiceAddressPayload : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String address IP address.
Int32 port Port.

# ServiceAddressPayload::address

IP address.

DTO_FIELD(String, address, "Address")
-

# ServiceAddressPayload::port

Port.

DTO_FIELD(Int32, port, "Port")
-

# CatalogServicePayload

DTO Object representing Consul Catalog Service.
For more information see Consul Catalog HTTP API.

namespace oatpp { namespace consul { namespace rest { 
-  class CatalogServicePayload : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String id ID.
String node The name of the Consul node on which the service is registered.
String address The IP address of the Consul node on which the service is registered.
String datacenter The data center of the Consul node on which the service is registered.
Fields<String> taggedAddresses The list of explicit LAN and WAN IP addresses for the agent.
Fields<String> nodeMeta The list of user-defined metadata key/value pairs for the node.
String serviceId The unique service instance identifier
String serviceName The name of the service
String serviceAddress The IP address of the service host — if empty, node address should be used
Fields<Object<ServiceAddressPayload>> serviceTaggedAddresses The map of explicit LAN and WAN addresses for the service instance. ServiceAddressPayload.
List<String> serviceTags The list of tags for the service.
Fields<String> serviceMeta The list of user-defined metadata key/value pairs for the service.
Int32 servicePort The the port number of the service.
Object<WeightsPayload> serviceWeights ServiceWeights.
Boolean serviceEnableTagOverride Indicates whether service tags can be overridden on this service.
Int64 createIndex Internal index value that represents when the entry was created.

# CatalogServicePayload::id

ID.

DTO_FIELD(String, id, "ID")
-

# CatalogServicePayload::node

The name of the Consul node on which the service is registered.

DTO_FIELD(String, node, "Node")
-

# CatalogServicePayload::address

The IP address of the Consul node on which the service is registered.

DTO_FIELD(String, address, "Address")
-

# CatalogServicePayload::datacenter

The data center of the Consul node on which the service is registered.

DTO_FIELD(String, datacenter, "Datacenter")
-

# CatalogServicePayload::taggedAddresses

The list of explicit LAN and WAN IP addresses for the agent.

DTO_FIELD(Fields<String>, taggedAddresses, "TaggedAddresses")
-

# CatalogServicePayload::nodeMeta

The list of user-defined metadata key/value pairs for the node.

DTO_FIELD(Fields<String>, nodeMeta, "NodeMeta")
-

# CatalogServicePayload::serviceId

The unique service instance identifier

DTO_FIELD(String, serviceId, "ServiceID")
-

# CatalogServicePayload::serviceName

The name of the service

DTO_FIELD(String, serviceName, "ServiceName")
-

# CatalogServicePayload::serviceAddress

The IP address of the service host — if empty, node address should be used

DTO_FIELD(String, serviceAddress, "ServiceAddress")
-

# CatalogServicePayload::serviceTaggedAddresses

The map of explicit LAN and WAN addresses for the service instance. ServiceAddressPayload.

DTO_FIELD(Fields<Object<ServiceAddressPayload>>, serviceTaggedAddresses, "ServiceTaggedAddresses")
-

# CatalogServicePayload::serviceTags

The list of tags for the service.

DTO_FIELD(List<String>, serviceTags, "ServiceTags")
-

# CatalogServicePayload::serviceMeta

The list of user-defined metadata key/value pairs for the service.

DTO_FIELD(Fields<String>, serviceMeta, "ServiceMeta")
-

# CatalogServicePayload::servicePort

The the port number of the service.

DTO_FIELD(Int32, servicePort, "ServicePort")
-

# CatalogServicePayload::serviceWeights

ServiceWeights.

DTO_FIELD(Object<WeightsPayload>, serviceWeights, "ServiceWeights")
-

# CatalogServicePayload::serviceEnableTagOverride

Indicates whether service tags can be overridden on this service.

DTO_FIELD(Boolean, serviceEnableTagOverride, "ServiceEnableTagOverride")
-

# CatalogServicePayload::createIndex

Internal index value that represents when the entry was created.

DTO_FIELD(Int64, createIndex, "CreateIndex")
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/RequestExecutor/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/RequestExecutor/index.html deleted file mode 100644 index 4c39a1930..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/RequestExecutor/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - RequestExecutor.hpp | Oat++ - - - - - - - -

# RequestExecutor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/RequestExecutor.hpp"

# RequestExecutor

Curl request executor. Uses Curl to perform client to server requests.
Extends oatpp::web::client::RequestExecutor.

namespace oatpp { namespace curl { 
-  class RequestExecutor : public oatpp::web::client::RequestExecutor {}
-}}
-

# Methods

Return Type Name Summary
[none] RequestExecutor Constructor.
std::shared_ptr<RequestExecutor> createShared Create shared RequestExecutor.
std::shared_ptr<ConnectionHandle> getConnection Connection reuse mechanism for curl RequestExecutor is NOT IMPLEMENTED yet.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<ConnectionHandle>&> getConnectionAsync Connection reuse mechanism for curl RequestExecutor is NOT IMPLEMENTED yet.
void invalidateConnection Invalidate connection.
std::shared_ptr<Response> executeOnce Execute http request. Implementation of oatpp::curl::RequestExecutor::execute method.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&> executeOnceAsync Same as RequestExecutor::execute() but Async.

# RequestExecutor::RequestExecutor

Constructor.

  • @param baseUrl - base url for requests. Ex.: "https://oatpp.io/"
  • @param verbose - true to print curl logs to std::cout.

RequestExecutor(const oatpp::String& baseUrl, bool verbose = false)
-

# RequestExecutor::createShared

Create shared RequestExecutor.

  • @param baseUrl - base url for requests. Ex.: "https://oatpp.io/"
  • @param verbose - true to print curl logs to std::cout.
  • @return - std::shared_ptr to RequestExecutor.

static std::shared_ptr<RequestExecutor> createShared(const oatpp::String& baseUrl, bool verbose = false)
-

# RequestExecutor::getConnection

Connection reuse mechanism for curl RequestExecutor is NOT IMPLEMENTED yet.

std::shared_ptr<ConnectionHandle> getConnection() override
-

# RequestExecutor::getConnectionAsync

Connection reuse mechanism for curl RequestExecutor is NOT IMPLEMENTED yet.

oatpp::async::CoroutineStarterForResult<const std::shared_ptr<ConnectionHandle>&> getConnectionAsync() override
-

# RequestExecutor::invalidateConnection

Invalidate connection.

  • @param connectionHandle

void invalidateConnection(const std::shared_ptr<ConnectionHandle>& connectionHandle) override
-

# RequestExecutor::executeOnce

Execute http request. Implementation of oatpp::curl::RequestExecutor::execute method.

std::shared_ptr<Response> executeOnce(const String& method,
-                                      const String& path,
-                                      const Headers& userDefinedHeaders,
-                                      const std::shared_ptr<Body>& body,
-                                      const std::shared_ptr<ConnectionHandle>& connectionHandle = nullptr) override
-

# RequestExecutor::executeOnceAsync

Same as RequestExecutor::execute() but Async.

  • @param method - method ex: ["GET", "POST", "PUT", etc.].
  • @param path - path to resource.
  • @param headers - headers map RequestExecutor::Headers.
  • @param body - std::shared_ptr to RequestExecutor::Body object.
  • @param connectionHandle - nullptr. This parameter is ignored for now.
  • @return - oatpp::async::CoroutineStarterForResult.

virtual oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&>
-executeOnceAsync(const String& method,
-                 const String& path,
-                 const Headers& headers,
-                 const std::shared_ptr<Body>& body,
-                 const std::shared_ptr<ConnectionHandle>& connectionHandle = nullptr) override
-

# RequestExecutor::StubConnectionHandle

Connection reuse mechanism for curl RequestExecutor is NOT IMPLEMENTED yet.
Use dummy stub to mock the real connection and prevent the crash.

namespace oatpp { namespace curl { 
-  class RequestExecutor : public oatpp::web::client::RequestExecutor {
-    class StubConnectionHandle : public ConnectionHandle {}
-  };
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyDecoder/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyDecoder/index.html deleted file mode 100644 index 722232773..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyDecoder/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - BodyDecoder.hpp | Oat++ - - - - - - - -

# BodyDecoder.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/BodyDecoder.hpp"

# BodyDecoder

Custom BodyDecoder for oatpp::curl::RequestExecutor. Extends oatpp::web::protocol::http::incoming::BodyDecoder.

namespace oatpp { namespace curl { namespace io { 
-  class BodyDecoder : public oatpp::web::protocol::http::incoming::BodyDecoder {}
-}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMultimap.

# Methods

Return Type Name Summary
void decode Just transfer everything we have in bodyStream to toStream as-is
oatpp::async::CoroutineStarter decodeAsync Just transfer everything we have in bodyStream to toStream as-is

# BodyDecoder::Headers

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMultimap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# BodyDecoder::decode

Just transfer everything we have in bodyStream to toStream as-is Curl already did all decoding.

virtual void decode(const Headers& headers, data::stream::InputStream* bodyStream,
-                    data::stream::WriteCallback* writeCallback,
-                    data::stream::IOStream* connection) const override
-

# BodyDecoder::decodeAsync

Just transfer everything we have in bodyStream to toStream as-is Curl already did all decoding.

virtual oatpp::async::CoroutineStarter decodeAsync(const Headers& headers,
-                                                   const std::shared_ptr<data::stream::InputStream>& bodyStream,
-                                                   const std::shared_ptr<data::stream::WriteCallback>& writeCallback,
-                                                   const std::shared_ptr<data::stream::IOStream>& connection) const override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyInputStream/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyInputStream/index.html deleted file mode 100644 index bd4ed997f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyInputStream/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - BodyInputStream.hpp | Oat++ - - - - - - - -

# BodyInputStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/BodyInputStream.hpp"

# BodyInputStream

Wrapper over oatpp::curl::io::CurlBodyReader providing oatpp::data::stream::InputStream interface.

namespace oatpp { namespace curl { namespace io { 
-  class BodyInputStream : public oatpp::data::stream::InputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] BodyInputStream Constructor.
v_io_size read Read data from stream. Implementation of oatpp::data::stream::InputStream::read method.
void setInputStreamIOMode Set stream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get stream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get stream context.

# BodyInputStream::BodyInputStream

Constructor.

  • @param reader
  • @param ioMode

BodyInputStream(const std::shared_ptr<CurlBodyReader> reader, oatpp::data::stream::IOMode ioMode)
-

# BodyInputStream::read

Read data from stream. Implementation of oatpp::data::stream::InputStream::read method.

  • @param data - buffer to read data to.
  • @param count - buffer size.
  • @return - oatpp::v_io_size.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# BodyInputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# BodyInputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# BodyInputStream::getInputStreamContext

Get stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyOutputStream/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyOutputStream/index.html deleted file mode 100644 index 5e948aa22..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/BodyOutputStream/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - BodyOutputStream.hpp | Oat++ - - - - - - - -

# BodyOutputStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/BodyOutputStream.hpp"

# BodyOutputStream

Wrapper over oatpp::curl::io::CurlBodyWriter providing oatpp::data::stream::OutputStream interface.

namespace oatpp { namespace curl { namespace io { 
-  class BodyOutputStream : public oatpp::data::stream::OutputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] BodyOutputStream Constructor.
v_io_size write Write data to stream. Implementation of oatpp::data::stream::OutputStream::write method.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get stream context.

# BodyOutputStream::BodyOutputStream

Constructor.

  • @param writer
  • @param ioMode

BodyOutputStream(const std::shared_ptr<CurlBodyWriter> writer, oatpp::data::stream::IOMode ioMode)
-

# BodyOutputStream::write

Write data to stream. Implementation of oatpp::data::stream::OutputStream::write method.

  • @param data - data to write.
  • @param count - data size.
  • @return - actual amount of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# BodyOutputStream::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# BodyOutputStream::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# BodyOutputStream::getOutputStreamContext

Get stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/Curl/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/Curl/index.html deleted file mode 100644 index ef1f8e304..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/Curl/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - Curl.hpp | Oat++ - - - - - - - -

# Curl.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/Curl.hpp"

# CurlHeaders

Wrapper over curl_slist.

namespace oatpp { namespace curl { namespace io { 
-  class CurlHeaders {}
-}}}
-

# Methods

Return Type Name Summary
[none] CurlHeaders Constructor.
[none] ~CurlHeaders Non-virtual destructor.
void append Append Header to curl_slist.
curl_slist* getCurlList Get underlying curl_slist.

# CurlHeaders::CurlHeaders

Constructor.

CurlHeaders()
-

# CurlHeaders::~CurlHeaders

Non-virtual destructor.

~CurlHeaders()
-

# CurlHeaders::append

Append Header to curl_slist.

void append(const oatpp::String& key, const oatpp::String& value)
-

# CurlHeaders::getCurlList

Get underlying curl_slist.

  • @return - curl_slist*.

curl_slist* getCurlList()
-

# CurlHandles

Pair of CURL and CURLM. Curl-multi is used by oatpp::curl::RequestExecutor, oatpp::curl::io::CurlBodyReader, oatpp::curl::io::CurlBodyWriter just for non-blocking perform rather then for multi-handle-perform.

namespace oatpp { namespace curl { namespace io { 
-  class CurlHandles {}
-}}}
-

# Methods

Return Type Name Summary
[none] CurlHandles Constructor.
[none] ~CurlHandles Non-virtual destructor.
CURL* getEasyHandle Get curl easy handle.
CURLM* getMultiHandle Get curl multi handle.

# CurlHandles::CurlHandles

Constructor.

CurlHandles()
-

# CurlHandles::~CurlHandles

Non-virtual destructor.

~CurlHandles()
-

# CurlHandles::getEasyHandle

Get curl easy handle.

  • @return - CURL*.

CURL* getEasyHandle()
-

# CurlHandles::getMultiHandle

Get curl multi handle.

  • @return - CURLM*.

CURLM* getMultiHandle()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyReader/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyReader/index.html deleted file mode 100644 index 4c8c47be2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyReader/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - CurlBodyReader.hpp | Oat++ - - - - - - - -

# CurlBodyReader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/CurlBodyReader.hpp"

# CurlBodyReader

This class is wrapper over oatpp::curl::io::CurlHandles to provide input-stream like interface

namespace oatpp { namespace curl { namespace io { 
-  class CurlBodyReader {}
-}}}
-

# Methods

Return Type Name Summary
[none] CurlBodyReader Constructor.
v_io_size read Read body data.
v_io_size readNonBlocking Non blocking attempt to Read body data.
v_io_size getAvailableBytesCount Available amount of bytes currently buffered.

# CurlBodyReader::CurlBodyReader

Constructor.

CurlBodyReader(const std::shared_ptr<CurlHandles>& curlHandles)
-

# CurlBodyReader::read

Read body data.

  • @param data - buffer to read data to.
  • @param count - buffer size.
  • @return - actual amount of bytes read. oatpp::v_io_size.

v_io_size read(void *data, v_io_size count)
-

# CurlBodyReader::readNonBlocking

Non blocking attempt to Read body data.

  • @param data - buffer to read data to.
  • @param count - buffer size.
  • @return - actual amount of bytes read. oatpp::v_io_size.

v_io_size readNonBlocking(void *data, v_io_size count)
-

# CurlBodyReader::getAvailableBytesCount

Available amount of bytes currently buffered.

v_io_size getAvailableBytesCount()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyWriter/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyWriter/index.html deleted file mode 100644 index 5186bed7f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlBodyWriter/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - CurlBodyWriter.hpp | Oat++ - - - - - - - -

# CurlBodyWriter.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/CurlBodyWriter.hpp"

# CurlBodyWriter

This class is wrapper over oatpp::curl::io::CurlHandles to provide output-stream like interface

namespace oatpp { namespace curl { namespace io { 
-  class CurlBodyWriter {}
-}}}
-

# Methods

Return Type Name Summary
[none] CurlBodyWriter Constructor.
v_io_size write Write data to body.
v_io_size writeNonBlocking Non blocking attempt to write data to body.

# CurlBodyWriter::CurlBodyWriter

Constructor.

CurlBodyWriter(const std::shared_ptr<CurlHandles>& curlHandles)
-

# CurlBodyWriter::write

Write data to body.

  • @param data - pointer to data to write.
  • @param count - data size.
  • @return - actual amount of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_io_size count)
-

# CurlBodyWriter::writeNonBlocking

Non blocking attempt to write data to body.

  • @param data - pointer to data to write.
  • @param count - data size.
  • @return - actual amount of bytes written. oatpp::v_io_size.

v_io_size writeNonBlocking(const void *data, v_io_size count)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlHeadersReader/index.html b/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlHeadersReader/index.html deleted file mode 100644 index 30582bc5d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-curl/io/CurlHeadersReader/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - CurlHeadersReader.hpp | Oat++ - - - - - - - -

# CurlHeadersReader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-curl
#include "oatpp-curl/io/CurlHeadersReader.hpp"

# CurlHeadersReader

Curl headers reader is responsible for reading response headers.
It implements CURLOPT_HEADERFUNCTION and stores headers in oatpp::web::protocol::http::Headers. It also captures response oatpp::web::protocol::http::ResponseStartingLine.

namespace oatpp { namespace curl { namespace io { 
-  class CurlHeadersReader {}
-}}}
-

# Fields

Type Name Summary
v_int32 STATE_INITIALIZED STATE_INITIALIZED state of CurlHeadersReader.
v_int32 STATE_STARTED STATE_STARTED state of CurlHeadersReader.
v_int32 STATE_FINISHED STATE_FINISHED state of CurlHeadersReader.

# Methods

Return Type Name Summary
[none] CurlHeadersReader Constructor.
v_int32 getState State of CurlHeadersReader.
const oatpp::web::protocol::http::ResponseStartingLine& getStartingLine Get response starting line.
const oatpp::web::protocol::http::Headers& getHeaders Get headers map.

# CurlHeadersReader::STATE_INITIALIZED

STATE_INITIALIZED state of CurlHeadersReader.

constexpr static v_int32 STATE_INITIALIZED = 0
-

# CurlHeadersReader::STATE_STARTED

STATE_STARTED state of CurlHeadersReader.

constexpr static v_int32 STATE_STARTED = 1
-

# CurlHeadersReader::STATE_FINISHED

STATE_FINISHED state of CurlHeadersReader.

constexpr static v_int32 STATE_FINISHED = 2
-

# CurlHeadersReader::CurlHeadersReader

Constructor.

CurlHeadersReader(const std::shared_ptr<CurlHandles>& curlHandles)
-

# CurlHeadersReader::getState

State of CurlHeadersReader.

v_int32 getState() const
-

# CurlHeadersReader::getStartingLine

Get response starting line.

const oatpp::web::protocol::http::ResponseStartingLine& getStartingLine() const
-

# CurlHeadersReader::getHeaders

Get headers map.

const oatpp::web::protocol::http::Headers& getHeaders() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/Callbacks/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/Callbacks/index.html deleted file mode 100644 index 19b74e5e1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/Callbacks/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Callbacks.hpp | Oat++ - - - - - - - -

# Callbacks.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/Callbacks.hpp"

# Callbacks

Collection of default-implemented callbacks for libressl

namespace oatpp { namespace libressl { 
-  class Callbacks {}
-}}
-

# Methods

Return Type Name Summary
void setDefaultCallbacks Set default callbacks for libressl
void lockingCallback Oatpp-default implementation of lockingCallback passed to CRYPTO_set_locking_callback().

# Callbacks::setDefaultCallbacks

Set default callbacks for libressl

static void setDefaultCallbacks()
-

# Callbacks::lockingCallback

Oatpp-default implementation of lockingCallback passed to CRYPTO_set_locking_callback(). must be set in case libressl is used in multithreaded environment. Locking is done using oatpp::concurrency::SpinLock.

  • @param mode
  • @param n - index of the lock.
  • @param file - file where lock is set.
  • @param line - line where lock is set.

static void lockingCallback(int mode, int n, const char* file, int line)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/Config/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/Config/index.html deleted file mode 100644 index 6d9507d31..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/Config/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Config.hpp | Oat++ - - - - - - - -

# Config.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/Config.hpp"

# Config

Wrapper over tls_config.

namespace oatpp { namespace libressl { 
-  class Config {}
-}}
-

# Methods

Return Type Name Summary
[none] Config Constructor.
std::shared_ptr<Config> createShared Create shared Config.
std::shared_ptr<Config> createDefaultServerConfigShared Create default config for server with enabled TLS.
std::shared_ptr<Config> createDefaultClientConfigShared Create default client config.
[none] ~Config Virtual destructor.
TLSConfig getTLSConfig Get underlying tls_config.

# Config::Config

Constructor.

Config()
-

# Config::createShared

Create shared Config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-

# Config::createDefaultServerConfigShared

Create default config for server with enabled TLS.

  • @param serverCertFile - server certificate.
  • @param privateKeyFile - private key.
  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createDefaultServerConfigShared(const char* serverCertFile, const char* privateKeyFile)
-

# Config::createDefaultClientConfigShared

Create default client config.
Please note - this method automatically sets:

  • tls_config_insecure_noverifycert
  • tls_config_insecure_noverifyname

Create with Config::createShared instead in order to override this behavior.
  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createDefaultClientConfigShared()
-

# Config::~Config

Virtual destructor.

virtual ~Config()
-

# Config::getTLSConfig

Get underlying tls_config.

  • @return - tls_config*.

TLSConfig getTLSConfig()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/Connection/index.html deleted file mode 100644 index ba1355cfd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/Connection/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/Connection.hpp"

# Connection

TLS Connection implementation. Extends oatpp::base::Countable and oatpp::data::stream::IOStream.

namespace oatpp { namespace libressl { 
-  class Connection : public oatpp::base::Countable, public oatpp::data::stream::IOStream {}
-}}
-

# Methods

Return Type Name Summary
[none] Connection Constructor.
[none] ~Connection Virtual destructor.
v_io_size write Write operation callback.
oatpp::v_io_size read Read operation callback.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
void closeTLS Close TLS handles.
provider::ResourceHandle<data::stream::IOStream> getTransportStream Get the underlying transport stream.
TLSHandle getTlsHandle Get TLS handle.

# Connection::Connection

Constructor.

Connection(const std::shared_ptr<TLSObject>& tlsObject,
-           const provider::ResourceHandle<data::stream::IOStream>& stream)
-

# Connection::~Connection

Virtual destructor.

~Connection()
-

# Connection::write

Write operation callback.

  • @param data - pointer to data.
  • @param count - size of the data in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. 0 - to indicate end-of-file.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Connection::read

Read operation callback.

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

oatpp::v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# Connection::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Connection::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Connection::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Connection::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-

# Connection::closeTLS

Close TLS handles.

void closeTLS()
-

# Connection::getTransportStream

Get the underlying transport stream.

  • @return

provider::ResourceHandle<data::stream::IOStream> getTransportStream()
-

# Connection::getTlsHandle

Get TLS handle.

  • @return - tls*.

TLSHandle getTlsHandle()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/TLSObject/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/TLSObject/index.html deleted file mode 100644 index 0b4d73548..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/TLSObject/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - TLSObject.hpp | Oat++ - - - - - - - -

# TLSObject.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/TLSObject.hpp"

# TLSObject

Utility object. Used to manage TLS handle TLSObject::TLSHandle.

namespace oatpp { namespace libressl { 
-  class TLSObject {}
-}}
-

# Methods

Return Type Name Summary
[none] TLSObject Constructor.
[none] ~TLSObject Non-virtual destructor.
TLSHandle getTLSHandle Get underlying TLS handle.
Type getType Get type of TLSObject.
oatpp::String getServerName Get server name - applicable if TLSObject::Type == SERVER.
void annul Forget about TLS handle. TLS handle won't be freed on the destruction of TLS Object.
void close Call tls_close and tls_free on the underlying TLS handle.
bool isClosed Check if TLS object was closed.

# TLSObject::TLSObject

Constructor.

  • @param tlsHandle
  • @param type
  • @param serverName

TLSObject(TLSHandle tlsHandle, Type type, const oatpp::String& serverName)
-

# TLSObject::~TLSObject

Non-virtual destructor. Calls TLSObject::close().

~TLSObject()
-

# TLSObject::getTLSHandle

Get underlying TLS handle.

  • @return

TLSHandle getTLSHandle()
-

# TLSObject::getType

Get type of TLSObject.

  • @return

Type getType()
-

# TLSObject::getServerName

Get server name - applicable if TLSObject::Type == SERVER.

  • @return

oatpp::String getServerName()
-

# TLSObject::annul

Forget about TLS handle. TLS handle won't be freed on the destruction of TLS Object.

void annul()
-

# TLSObject::close

Call tls_close and tls_free on the underlying TLS handle.

void close()
-

# TLSObject::isClosed

Check if TLS object was closed.

  • @return

bool isClosed()
-

# TLSObject::Type

TLSHandle type.

namespace oatpp { namespace libressl { 
-  class TLSObject {}
-}}
-

# TLSObject::tls

Convenience typedef for struct tls*.

namespace oatpp { namespace libressl { 
-  class TLSObject {
-    typedef struct tls* TLSHandle {}
-  };
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/client/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/client/ConnectionProvider/index.html deleted file mode 100644 index f72fc7b02..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/client/ConnectionProvider/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/client/ConnectionProvider.hpp"

# ConnectionProvider

Libressl client connection provider. Extends oatpp::base::Countable, oatpp::network::ClientConnectionProvider.

namespace oatpp { namespace libressl { namespace client { 
-  class ConnectionProvider : public oatpp::network::ClientConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
void stop Implements oatpp::network::ConnectionProvider::close. Here does nothing.
provider::ResourceHandle<data::stream::IOStream> get Get connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<oatpp::data::stream::IOStream>&> getAsync Get connection in asynchronous manner.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config, const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address)
    -

# ConnectionProvider::stop

Implements oatpp::network::ConnectionProvider::close. Here does nothing.

void stop() override
-

# ConnectionProvider::get

Get connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

Get connection in asynchronous manner.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<oatpp::data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-libressl/server/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-libressl/server/ConnectionProvider/index.html deleted file mode 100644 index 7de7902dd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-libressl/server/ConnectionProvider/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-libressl
#include "oatpp-libressl/server/ConnectionProvider.hpp"

# ConnectionProvider

Libressl server connection provider. Extends oatpp::base::Countable, oatpp::network::ServerConnectionProvider.

namespace oatpp { namespace libressl { namespace server { 
-  class ConnectionProvider : public oatpp::network::ServerConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
[none] ~ConnectionProvider Virtual destructor.
void stop Close all handles.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync No need to implement this.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config,
-                   const std::shared_ptr<oatpp::network::ServerConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<oatpp::network::ServerConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address,
    -                                                        bool useExtendedConnections = false)
    -

# ConnectionProvider::~ConnectionProvider

Virtual destructor.

~ConnectionProvider()
-

# ConnectionProvider::stop

Close all handles.

void stop() override
-

# ConnectionProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Config/index.html b/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Config/index.html deleted file mode 100644 index 8d9f9d6a7..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Config/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Config.hpp | Oat++ - - - - - - - -

# Config.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mbedtls
#include "oatpp-mbedtls/Config.hpp"

# Config

Wrapper over mbedtls_ssl_config.

namespace oatpp { namespace mbedtls { 
-  class Config {}
-}}
-

# Methods

Return Type Name Summary
[none] Config Constructor.
[none] ~Config Non-virtual destructor.
std::shared_ptr<Config> createShared Create shared Config.
std::shared_ptr<Config> createDefaultServerConfigShared Create default server config.
std::shared_ptr<Config> createDefaultClientConfigShared Create default client config.
mbedtls_ssl_config* getTLSConfig Get underlying mbedtls_ssl_config.
mbedtls_entropy_context* getEntropy Get entropy.
mbedtls_ctr_drbg_context* getCTR_DRBG Get CTR_DRBG.
mbedtls_x509_crt* getServerCertificate Get server certificate.
mbedtls_x509_crt* getCAChain Get CA Chain.
mbedtls_pk_context* getPrivateKey Get private key.
bool shouldThrowOnVerificationFailed Returns true if server certificate verification is required

# Config::Config

Constructor.

Config()
-

# Config::~Config

Non-virtual destructor.

~Config()
-

# Config::createShared

Create shared Config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-

# Config::createDefaultServerConfigShared

Create default server config.

  • @param serverCertFile - server certificate.
  • @param privateKeyFile - private key.
  • @param pkPassword - optional private key password.
  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createDefaultServerConfigShared(const char* serverCertFile, const char* privateKeyFile, const char* pkPassword = nullptr)
-

# Config::createDefaultClientConfigShared

Create default client config.

  • @param throwOnVerificationFailed - throw error on server certificate
  • @param caRootCertFile - path to the CA Root certificate to verificate against
  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createDefaultClientConfigShared(bool throwOnVerificationFailed = false, const char* caRootCertFile = nullptr)
-

# Config::getTLSConfig

Get underlying mbedtls_ssl_config.

  • @return - mbedtls_ssl_config*.

mbedtls_ssl_config* getTLSConfig()
-

# Config::getEntropy

Get entropy.

  • @return - mbedtls_entropy_context*

mbedtls_entropy_context* getEntropy()
-

# Config::getCTR_DRBG

Get CTR_DRBG.

  • @return - mbedtls_ctr_drbg_context*

mbedtls_ctr_drbg_context* getCTR_DRBG()
-

# Config::getServerCertificate

Get server certificate.

  • @return - mbedtls_x509_crt*

mbedtls_x509_crt* getServerCertificate()
-

# Config::getCAChain

Get CA Chain.

  • @return - mbedtls_x509_crt*

mbedtls_x509_crt* getCAChain()
-

# Config::getPrivateKey

Get private key.

  • @return - mbedtls_pk_context*

mbedtls_pk_context* getPrivateKey()
-

# Config::shouldThrowOnVerificationFailed

Returns true if server certificate verification is required

  • @return - bool

bool shouldThrowOnVerificationFailed()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Connection/index.html deleted file mode 100644 index 449870045..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/Connection/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mbedtls
#include "oatpp-mbedtls/Connection.hpp"

# Connection

TLS Connection implementation based on Mbed TLS. Extends oatpp::base::Countable and oatpp::data::stream::IOStream.

namespace oatpp { namespace mbedtls { 
-  class Connection : public oatpp::base::Countable, public oatpp::data::stream::IOStream {}
-}}
-

# Methods

Return Type Name Summary
[none] Connection Constructor.
[none] ~Connection Virtual destructor.
v_io_size write Write operation callback.
oatpp::v_io_size read Read operation callback.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
void closeTLS Close TLS handles.
mbedtls_ssl_context* getTlsHandle Get TLS handle.
provider::ResourceHandle<data::stream::IOStream> getTransportStream Get the underlying transport stream.

# Connection::Connection

Constructor.

  • @param tlsHandle - mbedtls_ssl_context*.
  • @param stream - underlying transport stream. oatpp::data::stream::IOStream.
  • @param initialized - is stream initialized (do we have handshake already).

Connection(mbedtls_ssl_context* tlsHandle, const provider::ResourceHandle<data::stream::IOStream>& stream, bool initialized)
-

# Connection::~Connection

Virtual destructor.

~Connection()
-

# Connection::write

Write operation callback.

  • @param data - pointer to data.
  • @param count - size of the data in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. 0 - to indicate end-of-file.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Connection::read

Read operation callback.

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

oatpp::v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# Connection::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Connection::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Connection::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Connection::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-

# Connection::closeTLS

Close TLS handles.

void closeTLS()
-

# Connection::getTlsHandle

Get TLS handle.

  • @return - mbedtls_ssl_context*.

mbedtls_ssl_context* getTlsHandle()
-

# Connection::getTransportStream

Get the underlying transport stream.

provider::ResourceHandle<data::stream::IOStream> getTransportStream()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/client/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-mbedtls/client/ConnectionProvider/index.html deleted file mode 100644 index a9c20823b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/client/ConnectionProvider/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mbedtls
#include "oatpp-mbedtls/client/ConnectionProvider.hpp"

# ConnectionProvider

MbedTLS client connection provider. Extends oatpp::base::Countable, oatpp::network::ClientConnectionProvider.

namespace oatpp { namespace mbedtls { namespace client { 
-  class ConnectionProvider : public oatpp::network::ClientConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
void stop Implements oatpp::network::ConnectionProvider::close. Here does nothing.
provider::ResourceHandle<data::stream::IOStream> get Get connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync Get connection in asynchronous manner.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config, const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address)
    -

# ConnectionProvider::stop

Implements oatpp::network::ConnectionProvider::close. Here does nothing.

void stop() override
-

# ConnectionProvider::get

Get connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

Get connection in asynchronous manner.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/server/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-mbedtls/server/ConnectionProvider/index.html deleted file mode 100644 index 97f0b8e4f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mbedtls/server/ConnectionProvider/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mbedtls
#include "oatpp-mbedtls/server/ConnectionProvider.hpp"

# ConnectionProvider

MbedTLS server connection provider. Extends oatpp::base::Countable, oatpp::network::ServerConnectionProvider.

namespace oatpp { namespace mbedtls { namespace server { 
-  class ConnectionProvider : public oatpp::network::ServerConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
[none] ~ConnectionProvider Virtual destructor.
void stop Close all handles.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync No need to implement this.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config,
-                   const std::shared_ptr<oatpp::network::ServerConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<oatpp::network::ServerConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address,
    -                                                        bool useExtendedConnections = false)
    -

# ConnectionProvider::~ConnectionProvider

Virtual destructor.

~ConnectionProvider()
-

# ConnectionProvider::stop

Close all handles.

void stop() override
-

# ConnectionProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Types/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Types/index.html deleted file mode 100644 index 516591fcd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Types/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - Types.hpp | Oat++ - - - - - - - -

# Types.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/Types.hpp"

# TypeCode

Enum with bson data-type codes.

namespace oatpp { namespace mongo { namespace bson { 
-  enum TypeCode : v_char8;
-}}}
-

# TypeCode::DOCUMENT_ROOT

Not from BSON specification. This code is added to designate the entrypoint for parser.

DOCUMENT_ROOT = 0x00
-

# TypeCode::DOUBLE

64-bit binary floating point.

DOUBLE = 0x01
-

# TypeCode::STRING

UTF-8 string.

STRING = 0x02
-

# TypeCode::DOCUMENT_EMBEDDED

Embedded document.

DOCUMENT_EMBEDDED = 0x03
-

# TypeCode::DOCUMENT_ARRAY

Array.

DOCUMENT_ARRAY = 0x04
-

# TypeCode::BINARY

Binary data.

BINARY = 0x05
-

# TypeCode::UNDEFINED

Undefined (value) — Deprecated.

UNDEFINED = 0x06
-

# TypeCode::OBJECT_ID

ObjectId

OBJECT_ID = 0x07
-

# TypeCode::BOOLEAN

Boolean value.

BOOLEAN = 0x08
-

# TypeCode::DATE_TIME

Int64 UTC datetime.

DATE_TIME = 0x09
-

# TypeCode::NULL_VALUE

Null value.

NULL_VALUE = 0x0A
-

# TypeCode::REGEXP

Regular expression.

REGEXP = 0x0B
-

# TypeCode::BD_POINTER

DBPointer — Deprecated.

BD_POINTER = 0x0C
-

# TypeCode::JAVASCRIPT_CODE

JavaScript code.

JAVASCRIPT_CODE = 0x0D
-

# TypeCode::SYMBOL

Symbol. Deprecated.

SYMBOL = 0x0E
-

# TypeCode::JAVASCRIPT_CODE_WS

JavaScript code w/ scope.

JAVASCRIPT_CODE_WS = 0x0F
-

# TypeCode::INT_32

32-bit integer.

INT_32 = 0x10
-

# TypeCode::TIMESTAMP

Timestamp (uint64).

TIMESTAMP = 0x11
-

# TypeCode::INT_64

64-bit integer.

INT_64 = 0x12
-

# TypeCode::DECIMAL_128

128-bit decimal floating point.

DECIMAL_128 = 0x13
-

# TypeCode::MIN_KEY

Min key.

MIN_KEY = 0xFF
-

# TypeCode::MAX_KEY

Max key

MAX_KEY = 0x7F
-

# InlineDocument

Namespace: oatpp::mongo::bson

Inline Document - is a binary buffer containing a valid BSON document.
May be useful in some cases.

typedef oatpp::data::mapping::type::ObjectWrapper<std::string, __class::InlineDocument> InlineDocument
-

# InlineArray

Namespace: oatpp::mongo::bson

Inline Array - is a binary buffer containing a valid BSON Array.
May be useful in some cases.

typedef oatpp::data::mapping::type::ObjectWrapper<std::string, __class::InlineArray> InlineArray
-

# ObjectId

Namespace: oatpp::mongo::bson

ObjectId as oatpp primitive type.

typedef oatpp::data::mapping::type::Primitive<type::ObjectId, __class::ObjectId> ObjectId
-

# DateTime

Namespace: oatpp::mongo::bson

DateTime is an ObjectWrapper over v_int64 and __class::DateTime.

typedef oatpp::data::mapping::type::Primitive<v_int64, __class::DateTime> DateTime
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Utils/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Utils/index.html deleted file mode 100644 index ceeb5ca35..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/Utils/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Utils.hpp | Oat++ - - - - - - - -

# Utils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/Utils.hpp"

# Utils

Utils for BSON serialization/deserialization.

namespace oatpp { namespace mongo { namespace bson { 
-  class Utils {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Deserializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Deserializer/index.html deleted file mode 100644 index d9c62fbf2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Deserializer/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - Deserializer.hpp | Oat++ - - - - - - - -

# Deserializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/mapping/Deserializer.hpp"

# Deserializer

BSON Deserializer. Deserialize oatpp DTO object from bson. See Data Transfer Object(DTO) component.

namespace oatpp { namespace mongo { namespace bson { namespace mapping { 
-  class Deserializer {}
-}}}}
-

# Methods

Return Type Name Summary
[none] Deserializer Constructor.
void setDeserializerMethod Set deserializer method for type.
oatpp::Void deserialize Deserialize text.
const std::shared_ptr<Config>& getConfig Get deserializer config.

# Deserializer::Deserializer

Constructor.

  • @param config

Deserializer(const std::shared_ptr<Config>& config = std::make_shared<Config>())
-

# Deserializer::setDeserializerMethod

Set deserializer method for type.

void setDeserializerMethod(const data::mapping::type::ClassId& classId, DeserializerMethod method)
-

# Deserializer::deserialize

Deserialize text.

oatpp::Void deserialize(parser::Caret& caret, const Type* const type, v_char8 bsonTypeCode)
-

# Deserializer::getConfig

Get deserializer config.

  • @return

const std::shared_ptr<Config>& getConfig()
-

# Deserializer::Config

Deserializer config.

namespace oatpp { namespace mongo { namespace bson { namespace mapping { 
-  class Deserializer {
-    class Config : public oatpp::base::Countable {}
-  };
-}}}}
-

# Fields

Type Name Summary
bool allowUnknownFields Do not fail if unknown field is found in bson. "unknown field" is the one which is not present in DTO object class.
std::vector<std::string> enableInterpretations Enable type interpretations.

# Methods

Return Type Name Summary
[none] Config Constructor.
std::shared_ptr<Config> createShared Create shared Config.

# Deserializer::Config::allowUnknownFields

Do not fail if unknown field is found in bson. "unknown field" is the one which is not present in DTO object class.

bool allowUnknownFields = true
-

# Deserializer::Config::enableInterpretations

Enable type interpretations.

std::vector<std::string> enableInterpretations =
-

# Deserializer::Config::Config

Constructor.

Config()
-

# Deserializer::Config::createShared

Create shared Config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/ObjectMapper/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/ObjectMapper/index.html deleted file mode 100644 index bb299d2c3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/ObjectMapper/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ObjectMapper.hpp | Oat++ - - - - - - - -

# ObjectMapper.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/mapping/ObjectMapper.hpp"

# ObjectMapper

BSON ObjectMapper. Serialized/Deserializes oatpp DTO objects to/from BSON. See Data Transfer Object(DTO) component.
Extends oatpp::base::Countable, oatpp::data::mapping::ObjectMapper.

namespace oatpp { namespace mongo { namespace bson { namespace mapping { 
-  class ObjectMapper : public oatpp::base::Countable, public oatpp::data::mapping::ObjectMapper {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ObjectMapper Multiple implementations:
  1. Constructor.
  2. Constructor.
std::shared_ptr<ObjectMapper> createShared Multiple implementations:
  1. Create shared ObjectMapper.
  2. Create shared ObjectMapper.
void write Implementation of oatpp::data::mapping::ObjectMapper::write().
oatpp::Void read Implementation of oatpp::data::mapping::ObjectMapper::read().
std::shared_ptr<Serializer> getSerializer Get serializer.
std::shared_ptr<Deserializer> getDeserializer Get deserializer.

# ObjectMapper::ObjectMapper

  1. Constructor.
    • @param serializerConfig - oatpp::parser::bson::mapping::Serializer::Config.
    • @param deserializerConfig - oatpp::parser::bson::mapping::Deserializer::Config.
    ObjectMapper(const std::shared_ptr<Serializer::Config>& serializerConfig,
    -             const std::shared_ptr<Deserializer::Config>& deserializerConfig)
    -
  2. Constructor.
    • @param serializer
    • @param deserializer
    ObjectMapper(const std::shared_ptr<Serializer>& serializer = std::make_shared<Serializer>(),
    -             const std::shared_ptr<Deserializer>& deserializer = std::make_shared<Deserializer>())
    -

# ObjectMapper::createShared

  1. Create shared ObjectMapper.
    • @param serializerConfig - oatpp::parser::bson::mapping::Serializer::Config.
    • @param deserializerConfig - oatpp::parser::bson::mapping::Deserializer::Config.
    • @return - std::shared_ptr to ObjectMapper.
    static std::shared_ptr<ObjectMapper>
    -createShared(const std::shared_ptr<Serializer::Config>& serializerConfig,
    -             const std::shared_ptr<Deserializer::Config>& deserializerConfig)
    -
  2. Create shared ObjectMapper.
    • @param serializer
    • @param deserializer
    • @return
    static std::shared_ptr<ObjectMapper>
    -createShared(const std::shared_ptr<Serializer>& serializer = std::make_shared<Serializer>(),
    -             const std::shared_ptr<Deserializer>& deserializer = std::make_shared<Deserializer>())
    -

# ObjectMapper::write

Implementation of oatpp::data::mapping::ObjectMapper::write().

void write(data::stream::ConsistentOutputStream* stream, const oatpp::Void& variant) const override
-

# ObjectMapper::read

Implementation of oatpp::data::mapping::ObjectMapper::read().

oatpp::Void read(oatpp::parser::Caret& caret, const oatpp::data::mapping::type::Type* const type) const override
-

# ObjectMapper::getSerializer

Get serializer.

  • @return

std::shared_ptr<Serializer> getSerializer()
-

# ObjectMapper::getDeserializer

Get deserializer.

  • @return

std::shared_ptr<Deserializer> getDeserializer()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Serializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Serializer/index.html deleted file mode 100644 index d68e40c26..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/mapping/Serializer/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Serializer.hpp | Oat++ - - - - - - - -

# Serializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/mapping/Serializer.hpp"

# Serializer

BSON Serializer. Serializes oatpp DTO object to bson. See Data Transfer Object(DTO) component.

namespace oatpp { namespace mongo { namespace bson { namespace mapping { 
-  class Serializer {}
-}}}}
-

# Methods

Return Type Name Summary
[none] Serializer Constructor.
void setSerializerMethod Set serializer method for type.
void serializeToStream Serialize object to stream.
const std::shared_ptr<Config>& getConfig Get serializer config.

# Serializer::Serializer

Constructor.

  • @param config - serializer config.

Serializer(const std::shared_ptr<Config>& config = std::make_shared<Config>())
-

# Serializer::setSerializerMethod

Set serializer method for type.

  • @param classId - oatpp::data::mapping::type::ClassId.
  • @param method - typedef void (*SerializerMethod)(Serializer*, data::stream::ConsistentOutputStream*, const oatpp::Void).

void setSerializerMethod(const data::mapping::type::ClassId& classId, SerializerMethod method)
-

# Serializer::serializeToStream

Serialize object to stream.

void serializeToStream(data::stream::ConsistentOutputStream* stream, const oatpp::Void& polymorph)
-

# Serializer::getConfig

Get serializer config.

  • @return

const std::shared_ptr<Config>& getConfig()
-

# Serializer::Config

Serializer config.

namespace oatpp { namespace mongo { namespace bson { namespace mapping { 
-  class Serializer {
-    class Config : public oatpp::base::Countable {}
-  };
-}}}}
-

# Fields

Type Name Summary
bool includeNullFields Include fields with value == nullptr into serialized bson.
bool throwOnUnknownTypes If true - insert string "<unknown-type>" in bson field value in case unknown field found. Fail if false. Known types for this serializer are:
(String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).
std::vector<std::string> enableInterpretations Enable type interpretations.

# Methods

Return Type Name Summary
[none] Config Constructor.
std::shared_ptr<Config> createShared Create shared config.

# Serializer::Config::includeNullFields

Include fields with value == nullptr into serialized bson.

bool includeNullFields = true
-

# Serializer::Config::throwOnUnknownTypes

If true - insert string "<unknown-type>" in bson field value in case unknown field found. Fail if false. Known types for this serializer are:
(String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).

bool throwOnUnknownTypes = true
-

# Serializer::Config::enableInterpretations

Enable type interpretations.

std::vector<std::string> enableInterpretations =
-

# Serializer::Config::Config

Constructor.

Config()
-

# Serializer::Config::createShared

Create shared config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/type/ObjectId/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/type/ObjectId/index.html deleted file mode 100644 index 8570425cf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/bson/type/ObjectId/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - ObjectId.hpp | Oat++ - - - - - - - -

# ObjectId.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/bson/type/ObjectId.hpp"

# ObjectId

BSON ObjectId implementation.

namespace oatpp { namespace mongo { namespace bson { namespace type { 
-  class ObjectId : public oatpp::base::Countable {}
-}}}}
-

# Fields

Type Name Summary
v_buff_size DATA_SIZE Size of ObjectId data.

# Methods

Return Type Name Summary
[none] ObjectId Multiple implementations:
  1. Constructor. Creates new ObjectId.
  2. Constructor. Creates ObjectId from byte array.
const p_char8 getData Get raw data of ObjectId.
v_buff_size getSize Get size of ObjectId data.
v_uint32 getTimestamp Get ObjectId timestamp.
oatpp::String toString To hex string.

# ObjectId::DATA_SIZE

Size of ObjectId data.

static constexpr v_buff_size DATA_SIZE = 12
-

# ObjectId::ObjectId

  1. Constructor. Creates new ObjectId.
    ObjectId()
    -
  2. Constructor. Creates ObjectId from byte array.
    • @param m_data
    ObjectId(v_char8 m_data[DATA_SIZE])
    -

# ObjectId::getData

Get raw data of ObjectId.

  • @return

const p_char8 getData() const
-

# ObjectId::getSize

Get size of ObjectId data.

v_buff_size getSize() const
-

# ObjectId::getTimestamp

Get ObjectId timestamp.

  • @return

v_uint32 getTimestamp() const
-

# ObjectId::toString

To hex string.

  • @return

oatpp::String toString() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Command/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Command/index.html deleted file mode 100644 index 593b3ad4f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Command/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Command.hpp | Oat++ - - - - - - - -

# Command.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Command.hpp"

# Command

Superclass of MongoDB commands.

namespace oatpp { namespace mongo { namespace driver { namespace command { 
-  class Command {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Delete/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Delete/index.html deleted file mode 100644 index 4bcf1857e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Delete/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Delete.hpp | Oat++ - - - - - - - -

# Delete.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Delete.hpp"

# Delete

Delete command.

namespace oatpp { namespace mongo { namespace driver { namespace command { 
-  class Delete : public Command {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Find/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Find/index.html deleted file mode 100644 index 6b90d10d0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Find/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Find.hpp | Oat++ - - - - - - - -

# Find.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Find.hpp"

# Find

Find command.

namespace oatpp { namespace mongo { namespace driver { namespace command { 
-  class Find : public Command {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Insert/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Insert/index.html deleted file mode 100644 index 68065f810..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Insert/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Insert.hpp | Oat++ - - - - - - - -

# Insert.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Insert.hpp"

# Insert

Insert command.

namespace oatpp { namespace mongo { namespace driver { namespace command { 
-  class Insert : public Command {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Miscellaneous/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Miscellaneous/index.html deleted file mode 100644 index 7a4138155..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Miscellaneous/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Miscellaneous.hpp | Oat++ - - - - - - - -

# Miscellaneous.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Miscellaneous.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Update/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Update/index.html deleted file mode 100644 index a3958ccbc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/command/Update/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Update.hpp | Oat++ - - - - - - - -

# Update.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/command/Update.hpp"

# Update

Update command.

namespace oatpp { namespace mongo { namespace driver { namespace command { 
-  class Update : public Command {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Connection/index.html deleted file mode 100644 index 2009d4500..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Connection/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/wire/Connection.hpp"

# Connection

MongoDB connection.

namespace oatpp { namespace mongo { namespace driver { namespace wire { 
-  class Connection {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Message/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Message/index.html deleted file mode 100644 index 507312ec1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/Message/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Message.hpp | Oat++ - - - - - - - -

# Message.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/wire/Message.hpp"

# Message

MongoDB wire message.

namespace oatpp { namespace mongo { namespace driver { namespace wire { 
-  struct Message {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/OpMsg/index.html b/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/OpMsg/index.html deleted file mode 100644 index 4ea1f3bdf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-mongo/driver/wire/OpMsg/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - OpMsg.hpp | Oat++ - - - - - - - -

# OpMsg.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-mongo
#include "oatpp-mongo/driver/wire/OpMsg.hpp"

# Section

Section of OpMsg.

namespace oatpp { namespace mongo { namespace driver { namespace wire { 
-  struct Section {}
-}}}}
-

# OpMsg

OpMsg.

namespace oatpp { namespace mongo { namespace driver { namespace wire { 
-  struct OpMsg {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/Config/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/Config/index.html deleted file mode 100644 index 48e03c3a6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/Config/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - Config.hpp | Oat++ - - - - - - - -

# Config.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/Config.hpp"

# Config

Config.

namespace oatpp { namespace openssl { 
-  class Config {}
-}}
-

# Methods

Return Type Name Summary
[none] Config Constructor.
[none] ~Config Virtual destructor.
std::shared_ptr<Config> createShared Create shared Config.
std::shared_ptr<Config> createDefaultServerConfigShared Create default shared Config for server.
std::shared_ptr<Config> createDefaultClientConfigShared Create default shared Config for client.
void clearContextConfigurers Clear context configurers.
void addContextConfigurer Add context configurer.
void configureContext Configure SSL context.

# Config::Config

Constructor.

Config()
-

# Config::~Config

Virtual destructor.

virtual ~Config()
-

# Config::createShared

Create shared Config.

  • @return

static std::shared_ptr<Config> createShared()
-

# Config::createDefaultServerConfigShared

Create default shared Config for server.

  • @param certChainFile
  • @param privateKeyFile
  • @return

static std::shared_ptr<Config> createDefaultServerConfigShared(const oatpp::String& certChainFile,
-                                                               const oatpp::String& privateKeyFile)
-

# Config::createDefaultClientConfigShared

Create default shared Config for client.

  • @return

static std::shared_ptr<Config> createDefaultClientConfigShared()
-

# Config::clearContextConfigurers

Clear context configurers.

void clearContextConfigurers()
-

# Config::addContextConfigurer

Add context configurer.

void addContextConfigurer(const std::shared_ptr<configurer::ContextConfigurer>& contextConfigurer)
-

# Config::configureContext

Configure SSL context.

  • @param ctx

void configureContext(SSL_CTX* ctx) const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/Connection/index.html deleted file mode 100644 index b78c537f3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/Connection/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/Connection.hpp"

# Connection

TLS Connection implementation. Extends oatpp::base::Countable and oatpp::data::stream::IOStream.

namespace oatpp { namespace openssl { 
-  class Connection : public oatpp::base::Countable, public oatpp::data::stream::IOStream {}
-}}
-

# Methods

Return Type Name Summary
[none] Connection Constructor.
[none] ~Connection Virtual destructor.
v_io_size write Write operation callback.
oatpp::v_io_size read Read operation callback.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
provider::ResourceHandle<data::stream::IOStream> getTransportStream Get the underlying transport stream.

# Connection::Connection

Constructor.

Connection(SSL* ssl, const provider::ResourceHandle<data::stream::IOStream>& stream)
-

# Connection::~Connection

Virtual destructor.

~Connection()
-

# Connection::write

Write operation callback.

  • @param data - pointer to data.
  • @param count - size of the data in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. 0 - to indicate end-of-file.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Connection::read

Read operation callback.

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

oatpp::v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# Connection::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Connection::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Connection::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Connection::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-

# Connection::getTransportStream

Get the underlying transport stream.

  • @return

provider::ResourceHandle<data::stream::IOStream> getTransportStream()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/client/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/client/ConnectionProvider/index.html deleted file mode 100644 index 7358f9d46..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/client/ConnectionProvider/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/client/ConnectionProvider.hpp"

# ConnectionProvider

Openssl client connection provider. Extends oatpp::base::Countable, oatpp::network::ClientConnectionProvider.

namespace oatpp { namespace openssl { namespace client { 
-  class ConnectionProvider : public oatpp::network::ClientConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
[none] ~ConnectionProvider Virtual destructor.
void stop Close all handles.
provider::ResourceHandle<data::stream::IOStream> get Get connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync Get connection in asynchronous manner.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config, const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<oatpp::network::ClientConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address)
    -

# ConnectionProvider::~ConnectionProvider

Virtual destructor.

~ConnectionProvider()
-

# ConnectionProvider::stop

Close all handles.

void stop() override
-

# ConnectionProvider::get

Get connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

Get connection in asynchronous manner.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateChainFile/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateChainFile/index.html deleted file mode 100644 index 5ea9131a1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateChainFile/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - CertificateChainFile.hpp | Oat++ - - - - - - - -

# CertificateChainFile.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/configurer/CertificateChainFile.hpp"

# CertificateChainFile

Context configurer for certificate chain file. extends oatpp::openssl::configurer::ContextConfigurer.

namespace oatpp { namespace openssl { namespace configurer { 
-  class CertificateChainFile : public ContextConfigurer {}
-}}}
-

# Methods

Return Type Name Summary
[none] CertificateChainFile Constructor.

# CertificateChainFile::CertificateChainFile

Constructor.

  • @param filename

CertificateChainFile(const oatpp::String& filename)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateFile/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateFile/index.html deleted file mode 100644 index fe07d20c9..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/CertificateFile/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - CertificateFile.hpp | Oat++ - - - - - - - -

# CertificateFile.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/configurer/CertificateFile.hpp"

# CertificateFile

Context configurer for certificate file. extends oatpp::openssl::configurer::ContextConfigurer.

namespace oatpp { namespace openssl { namespace configurer { 
-  class CertificateFile : public ContextConfigurer {}
-}}}
-

# Methods

Return Type Name Summary
[none] CertificateFile Constructor.

# CertificateFile::CertificateFile

Constructor.

  • @param filename
  • @param filetype

CertificateFile(const oatpp::String& filename, int filetype = SSL_FILETYPE_PEM)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/ContextConfigurer/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/ContextConfigurer/index.html deleted file mode 100644 index 7a3f50a96..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/ContextConfigurer/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - ContextConfigurer.hpp | Oat++ - - - - - - - -

# ContextConfigurer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/configurer/ContextConfigurer.hpp"

# ContextConfigurer

Context configurer.

namespace oatpp { namespace openssl { namespace configurer { 
-  class ContextConfigurer {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~ContextConfigurer virtual destructor.
void configure Configure SSL context.

# ContextConfigurer::~ContextConfigurer

virtual destructor.

virtual ~ContextConfigurer() = default
-

# ContextConfigurer::configure

Configure SSL context.

  • @param ctx

virtual void configure(SSL_CTX* ctx) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/PrivateKeyFile/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/PrivateKeyFile/index.html deleted file mode 100644 index c0e6d2586..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/configurer/PrivateKeyFile/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - PrivateKeyFile.hpp | Oat++ - - - - - - - -

# PrivateKeyFile.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/configurer/PrivateKeyFile.hpp"

# PrivateKeyFile

Context configurer for private key file. extends oatpp::openssl::configurer::ContextConfigurer.

namespace oatpp { namespace openssl { namespace configurer { 
-  class PrivateKeyFile : public ContextConfigurer {}
-}}}
-

# Methods

Return Type Name Summary
[none] PrivateKeyFile Constructor.

# PrivateKeyFile::PrivateKeyFile

Constructor.

  • @param filename
  • @param filetype

PrivateKeyFile(const oatpp::String& filename, int filetype = SSL_FILETYPE_PEM)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-openssl/server/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-openssl/server/ConnectionProvider/index.html deleted file mode 100644 index db84384ac..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-openssl/server/ConnectionProvider/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-openssl
#include "oatpp-openssl/server/ConnectionProvider.hpp"

# ConnectionProvider

Openssl server connection provider. Extends oatpp::base::Countable, oatpp::network::ServerConnectionProvider.

namespace oatpp { namespace openssl { namespace server { 
-  class ConnectionProvider : public oatpp::network::ServerConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Multiple implementations:
  1. Create shared ConnectionProvider.
  2. Create shared ConnectionProvider.
[none] ~ConnectionProvider Virtual destructor.
void stop Close all handles.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync No need to implement this.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<Config>& config,
-                   const std::shared_ptr<network::ServerConnectionProvider>& streamProvider)
-

# ConnectionProvider::createShared

  1. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const std::shared_ptr<network::ServerConnectionProvider>& streamProvider)
    -
  2. Create shared ConnectionProvider.
    static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<Config>& config,
    -                                                        const network::Address& address,
    -                                                        bool useExtendedConnections = false)
    -

# ConnectionProvider::~ConnectionProvider

Virtual destructor.

~ConnectionProvider()
-

# ConnectionProvider::stop

Close all handles.

void stop() override
-

# ConnectionProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/Connection/index.html deleted file mode 100644 index 2910645d4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Connection/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/Connection.hpp"

# Connection

Implementation of oatpp::orm::Connection for PostgreSQL.

namespace oatpp { namespace postgresql { 
-  class Connection : public orm::Connection {}
-}}
-

# Methods

Return Type Name Summary
PGconn* getHandle Get PostgreSQL native connection handle.

# Connection::getHandle

Get PostgreSQL native connection handle.

  • @return

virtual PGconn* getHandle() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/ConnectionProvider/index.html deleted file mode 100644 index de82c813f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ConnectionProvider/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/ConnectionProvider.hpp"

# ConnectionProvider

Connection provider.

namespace oatpp { namespace postgresql { 
-  class ConnectionProvider : public provider::Provider<Connection> {}
-}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
provider::ResourceHandle<Connection> get Get Connection.
async::CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> getAsync Get Connection in Async manner.
void stop Stop provider and free associated resources.

# ConnectionProvider::ConnectionProvider

Constructor.

  • @param connectionString

ConnectionProvider(const oatpp::String& connectionString)
-

# ConnectionProvider::get

Get Connection.

  • @return - resource.

provider::ResourceHandle<Connection> get() override
-

# ConnectionProvider::getAsync

Get Connection in Async manner.

  • @return - oatpp::async::CoroutineStarterForResult of Connection.

async::CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> getAsync() override
-

# ConnectionProvider::stop

Stop provider and free associated resources.

void stop() override
-

# ConnectionPool

Namespace: oatpp::postgresql

Connection pool.
- oatpp::postgresql::Connection. - oatpp::postgresql::ConnectionAcquisitionProxy.

typedef oatpp::provider::Pool<
-  provider::Provider<Connection>,
-  Connection,
-  ConnectionAcquisitionProxy
-> ConnectionPool
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Executor/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/Executor/index.html deleted file mode 100644 index c46929ea2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Executor/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Executor.hpp | Oat++ - - - - - - - -

# Executor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/Executor.hpp"

# Executor

Implementation of oatpp::orm::Executor. for PostgreSQL.

namespace oatpp { namespace postgresql { 
-  class Executor : public orm::Executor {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/QueryResult/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/QueryResult/index.html deleted file mode 100644 index efbd0b7bf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/QueryResult/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - QueryResult.hpp | Oat++ - - - - - - - -

# QueryResult.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/QueryResult.hpp"

# QueryResult

Implementation of oatpp::orm::QueryResult. for PostgreSQL.

namespace oatpp { namespace postgresql { 
-  class QueryResult : public orm::QueryResult {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Types/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/Types/index.html deleted file mode 100644 index c2ac3b036..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/Types/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Types.hpp | Oat++ - - - - - - - -

# Types.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/Types.hpp"

# Uuid

Namespace: oatpp::postgresql

Uuid as oatpp primitive type.

typedef oatpp::data::mapping::type::Primitive<mapping::type::UuidObject, mapping::type::__class::Uuid> Uuid
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Deserializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Deserializer/index.html deleted file mode 100644 index 5201854f2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Deserializer/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Deserializer.hpp | Oat++ - - - - - - - -

# Deserializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/Deserializer.hpp"

# Deserializer

Mapper from PostgreSQL values to oatpp values.

namespace oatpp { namespace postgresql { namespace mapping { 
-  class Deserializer {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Oid/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Oid/index.html deleted file mode 100644 index ae7719fa1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Oid/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Oid.hpp | Oat++ - - - - - - - -

# Oid.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/Oid.hpp"

A copy-pasted table of postgresql OIDs.

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/PgArray/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/PgArray/index.html deleted file mode 100644 index fb7f6a1f7..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/PgArray/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - PgArray.hpp | Oat++ - - - - - - - -

# PgArray.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/PgArray.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/ResultMapper/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/ResultMapper/index.html deleted file mode 100644 index 6b5a51295..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/ResultMapper/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - ResultMapper.hpp | Oat++ - - - - - - - -

# ResultMapper.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/ResultMapper.hpp"

# ResultMapper

Mapper from PostgreSQL result to oatpp objects.

namespace oatpp { namespace postgresql { namespace mapping { 
-  class ResultMapper {}
-}}}
-

# Methods

Return Type Name Summary
[none] ResultMapper Default constructor.
void setReadOneRowMethod Set "read one row" method for class id.
void setReadRowsMethod Set "read rows" method for class id.
oatpp::Void readOneRow Read one row to oatpp object or collection.
oatpp::Void readRows Read count of rows to oatpp collection.

# ResultMapper::ResultMapper

Default constructor.

ResultMapper()
-

# ResultMapper::setReadOneRowMethod

Set "read one row" method for class id.

  • @param classId
  • @param method

void setReadOneRowMethod(const data::mapping::type::ClassId& classId, ReadOneRowMethod method)
-

# ResultMapper::setReadRowsMethod

Set "read rows" method for class id.

  • @param classId
  • @param method

void setReadRowsMethod(const data::mapping::type::ClassId& classId, ReadRowsMethod method)
-

# ResultMapper::readOneRow

Read one row to oatpp object or collection.
Allowed output type classes are: - oatpp::Vector - oatpp::List - oatpp::UnorderedSet - oatpp::Fields - oatpp::UnorderedFields - oatpp::Object

  • @param dbData
  • @param type
  • @return

oatpp::Void readOneRow(ResultData* dbData, const Type* type, v_int64 rowIndex)
-

# ResultMapper::readRows

Read count of rows to oatpp collection.
Allowed collections to store rows are: - oatpp::Vector - oatpp::List - oatpp::UnorderedSet.

  • @param dbData
  • @param type
  • @param count
  • @return

oatpp::Void readRows(ResultData* dbData, const Type* type, v_int64 count)
-

# ResultMapper::ResultData

Result data.

namespace oatpp { namespace postgresql { namespace mapping { 
-  class ResultMapper {
-    struct ResultData {}
-  };
-}}}
-

# Fields

Type Name Summary
PGresult* dbResult PGResult.
std::shared_ptr<const data::mapping::TypeResolver> typeResolver oatpp::data::mapping::TypeResolver.
std::vector<oatpp::String> colNames Column names.
std::unordered_map<data::share::StringKeyLabel, v_int32> colIndices Column indices.
v_int64 colCount Column count.
v_int64 rowIndex Current row index.
v_int64 rowCount Row count.

# Methods

Return Type Name Summary
[none] ResultData Constructor.

# ResultMapper::ResultData::dbResult

PGResult.

PGresult* dbResult
-

# ResultMapper::ResultData::typeResolver

oatpp::data::mapping::TypeResolver.

std::shared_ptr<const data::mapping::TypeResolver> typeResolver
-

# ResultMapper::ResultData::colNames

Column names.

std::vector<oatpp::String> colNames
-

# ResultMapper::ResultData::colIndices

Column indices.

std::unordered_map<data::share::StringKeyLabel, v_int32> colIndices
-

# ResultMapper::ResultData::colCount

Column count.

v_int64 colCount
-

# ResultMapper::ResultData::rowIndex

Current row index.

v_int64 rowIndex
-

# ResultMapper::ResultData::rowCount

Row count.

v_int64 rowCount
-

# ResultMapper::ResultData::ResultData

Constructor.

  • @param pDbResult
  • @param pTypeResolver

ResultData(PGresult* pDbResult, const std::shared_ptr<const data::mapping::TypeResolver>& pTypeResolver)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Serializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Serializer/index.html deleted file mode 100644 index a1eb15f4c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/Serializer/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Serializer.hpp | Oat++ - - - - - - - -

# Serializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/Serializer.hpp"

# Serializer

Mapper of oatpp values to PostgreSQL values.

namespace oatpp { namespace postgresql { namespace mapping { 
-  class Serializer {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/type/Uuid/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/type/Uuid/index.html deleted file mode 100644 index db2b3a663..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/mapping/type/Uuid/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Uuid.hpp | Oat++ - - - - - - - -

# Uuid.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/mapping/type/Uuid.hpp"

# Uuid

Namespace: oatpp::postgresql::mapping::type

UUID type to store UUID data.

typedef oatpp::data::mapping::type::Primitive<UuidObject, __class::Uuid> Uuid
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/orm/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/orm/index.html deleted file mode 100644 index b35e4441c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/orm/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - orm.hpp | Oat++ - - - - - - - -

# orm.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/orm.hpp"

This is just a header file which includes all oatpp-postgresql components:

#include "Executor.hpp"
-#include "Types.hpp"
-#include "oatpp/orm/SchemaMigration.hpp"
-#include "oatpp/orm/DbClient.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/Parser/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/Parser/index.html deleted file mode 100644 index 2fb651ed9..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/Parser/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - Parser.hpp | Oat++ - - - - - - - -

# Parser.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/ql_template/Parser.hpp"

# Parser

Query template parser.

namespace oatpp { namespace postgresql { namespace ql_template { 
-  class Parser {}
-}}}
-

# Methods

Return Type Name Summary
oatpp::String preprocess Preprocess text.
data::share::StringTemplate parseTemplate Parse query template.

# Parser::preprocess

Preprocess text.

  • @param text
  • @param cleanSections - out vector of clean sections.
  • @return

static oatpp::String preprocess(const oatpp::String& text, std::vector<CleanSection>& cleanSections)
-

# Parser::parseTemplate

Parse query template.

static data::share::StringTemplate parseTemplate(const oatpp::String& text)
-

# Parser::TemplateExtra

Query template extra info.

namespace oatpp { namespace postgresql { namespace ql_template { 
-  class Parser {
-    struct TemplateExtra {}
-  };
-}}}
-

# Fields

Type Name Summary
oatpp::String templateName Query template name.
oatpp::String preparedTemplate Template text with parameters substituted to SQLite parameter placeholders.
orm::Executor::ParamsTypeMap paramsTypeMap Parameter type map.
bool prepare Use prepared statement for this query.

# Parser::TemplateExtra::templateName

Query template name.

oatpp::String templateName
-

# Parser::TemplateExtra::preparedTemplate

Template text with parameters substituted to SQLite parameter placeholders.

oatpp::String preparedTemplate
-

# Parser::TemplateExtra::paramsTypeMap

Parameter type map.

orm::Executor::ParamsTypeMap paramsTypeMap
-

# Parser::TemplateExtra::prepare

Use prepared statement for this query.

bool prepare
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/TemplateValueProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/TemplateValueProvider/index.html deleted file mode 100644 index c82fd3a1c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-postgresql/ql_template/TemplateValueProvider/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - TemplateValueProvider.hpp | Oat++ - - - - - - - -

# TemplateValueProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-postgresql
#include "oatpp-postgresql/ql_template/TemplateValueProvider.hpp"

# TemplateValueProvider

oatpp::data::share::StringTemplate::ValueProvider

namespace oatpp { namespace postgresql { namespace ql_template { 
-  class TemplateValueProvider : public data::share::StringTemplate::ValueProvider {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-protobuf/Object/index.html b/docs/.vuepress/dist/api/latest/oatpp-protobuf/Object/index.html deleted file mode 100644 index 3651d64b1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-protobuf/Object/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Object.hpp | Oat++ - - - - - - - -

# Object.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-protobuf
#include "oatpp-protobuf/Object.hpp"

# AbstractObject

Abstract proto object.

namespace oatpp { namespace protobuf { namespace __class { 
-  class AbstractObject {}
-}}}
-

# Object

Namespace: oatpp::protobuf

Proto object.

template <class T>
-using Object = oatpp::data::mapping::type::ObjectWrapper<T, __class::Object<T>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/DynamicObject/index.html b/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/DynamicObject/index.html deleted file mode 100644 index 1e34d902b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/DynamicObject/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - DynamicObject.hpp | Oat++ - - - - - - - -

# DynamicObject.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-protobuf
#include "oatpp-protobuf/reflection/DynamicObject.hpp"

# DynamicClass

A dynamic class that will be automatically generated for the proto object.

namespace oatpp { namespace protobuf { namespace reflection { 
-  class DynamicClass {}
-}}}
-

# Methods

Return Type Name Summary
DynamicClass* registryGetClass Multiple implementations:
  1. Get class by name of the proto object type.
  2. Get class for proto object type.
const std::string getName Get class name.
std::shared_ptr<Message> createProto Instantiate shared proto object.
const oatpp::Type* getType Get oatpp::Type of this class.
const oatpp::Type* getVectorType Get oatpp::Type of oatpp::Vector<This-Class>

# DynamicClass::registryGetClass

  1. Get class by name of the proto object type.
    • @param name
    • @return
    static DynamicClass* registryGetClass(const std::string& name)
    -
  2. Get class for proto object type.
    • @tparam T
    • @return
    template<class T>
    -static DynamicClass* registryGetClass()
    -

# DynamicClass::getName

Get class name.

  • @return

const std::string getName() const
-

# DynamicClass::createProto

Instantiate shared proto object.

  • @return

std::shared_ptr<Message> createProto() const
-

# DynamicClass::getType

Get oatpp::Type of this class.

  • @return

const oatpp::Type* getType()
-

# DynamicClass::getVectorType

Get oatpp::Type of oatpp::Vector<This-Class>

  • @return

const oatpp::Type* getVectorType()
-

# DynamicClass::PolymorphicDispatcher

Polymorphic Dispatcher

namespace oatpp { namespace protobuf { namespace reflection { 
-  class DynamicClass {
-    class PolymorphicDispatcher : public oatpp::data::mapping::type::__class::AbstractObject::PolymorphicDispatcher {}
-  };
-}}}
-

# DynamicClass::VectorPolymorphicDispatcher

Vector Polymorphic Dispatcher

namespace oatpp { namespace protobuf { namespace reflection { 
-  class DynamicClass {
-    class VectorPolymorphicDispatcher : public oatpp::data::mapping::type::__class::AbstractVector::PolymorphicDispatcher {}
-  };
-}}}
-

# DynamicObject

A dynamic oatpp object that will be created from the proto object.

namespace oatpp { namespace protobuf { namespace reflection { 
-  class DynamicObject : public oatpp::BaseObject {}
-}}}
-

# Methods

Return Type Name Summary
std::shared_ptr<DynamicObject> createShared Create shared.
DynamicClass* getClass Get a DynamicClass of this object.

# DynamicObject::createShared

Create shared.

  • @param proto
  • @return

static std::shared_ptr<DynamicObject> createShared(const Message& proto)
-

# DynamicObject::getClass

Get a DynamicClass of this object.

  • @return

DynamicClass* getClass() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/Utils/index.html b/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/Utils/index.html deleted file mode 100644 index 0d67330d8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-protobuf/reflection/Utils/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Utils.hpp | Oat++ - - - - - - - -

# Utils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-protobuf
#include "oatpp-protobuf/reflection/Utils.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/Connection/index.html deleted file mode 100644 index ba8613bfa..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Connection/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/Connection.hpp"

# Connection

Implementation of oatpp::orm::Connection for SQLite.

namespace oatpp { namespace sqlite { 
-  class Connection : public orm::Connection {}
-}}
-

# Methods

Return Type Name Summary
sqlite3* getHandle Get SQLite native connection handle.

# Connection::getHandle

Get SQLite native connection handle.

  • @return

virtual sqlite3* getHandle() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/ConnectionProvider/index.html deleted file mode 100644 index 7810e1cb4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ConnectionProvider/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/ConnectionProvider.hpp"

# ConnectionProvider

Connection provider.

namespace oatpp { namespace sqlite { 
-  class ConnectionProvider : public provider::Provider<Connection> {}
-}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
provider::ResourceHandle<Connection> get Get Connection.
async::CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> getAsync Get Connection in Async manner.
void stop Stop provider and free associated resources.

# ConnectionProvider::ConnectionProvider

Constructor.

  • @param connectionString

ConnectionProvider(const oatpp::String& connectionString)
-

# ConnectionProvider::get

Get Connection.

  • @return - resource.

provider::ResourceHandle<Connection> get() override
-

# ConnectionProvider::getAsync

Get Connection in Async manner.

  • @return - oatpp::async::CoroutineStarterForResult of Connection.

async::CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> getAsync() override
-

# ConnectionProvider::stop

Stop provider and free associated resources.

void stop() override
-

# ConnectionPool

Namespace: oatpp::sqlite

Connection pool.
- oatpp::sqlite::Connection. - oatpp::sqlite::ConnectionAcquisitionProxy.

typedef oatpp::provider::Pool<
-  provider::Provider<Connection>,
-  Connection,
-  ConnectionAcquisitionProxy
-> ConnectionPool
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Executor/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/Executor/index.html deleted file mode 100644 index 3911ea2db..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Executor/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Executor.hpp | Oat++ - - - - - - - -

# Executor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/Executor.hpp"

# Executor

Implementation of oatpp::orm::Executor. for SQLite.

namespace oatpp { namespace sqlite { 
-  class Executor : public orm::Executor {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/QueryResult/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/QueryResult/index.html deleted file mode 100644 index 1c38cc33c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/QueryResult/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - QueryResult.hpp | Oat++ - - - - - - - -

# QueryResult.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/QueryResult.hpp"

# QueryResult

Implementation of oatpp::orm::QueryResult. for SQLite.

namespace oatpp { namespace sqlite { 
-  class QueryResult : public orm::QueryResult {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Types/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/Types/index.html deleted file mode 100644 index fceda7f57..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Types/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Types.hpp | Oat++ - - - - - - - -

# Types.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/Types.hpp"

# Blob

Namespace: oatpp::sqlite

Convenience typedef for oatpp::sqlite::mapping::type::Blob.

typedef mapping::type::Blob Blob
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Utils/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/Utils/index.html deleted file mode 100644 index 37ded62f3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/Utils/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Utils.hpp | Oat++ - - - - - - - -

# Utils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/Utils.hpp"

# Utils

Util methods.

namespace oatpp { namespace sqlite { 
-  class Utils {}
-}}
-

# Methods

Return Type Name Summary
v_int64 getLastInsertRowId Get row id following the last insert operation on the connection.

# Utils::getLastInsertRowId

Get row id following the last insert operation on the connection.

static v_int64 getLastInsertRowId(const provider::ResourceHandle<orm::Connection>& connection)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Deserializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Deserializer/index.html deleted file mode 100644 index 5d058bf99..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Deserializer/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Deserializer.hpp | Oat++ - - - - - - - -

# Deserializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/mapping/Deserializer.hpp"

# Deserializer

Mapper from SQLite values to oatpp values.

namespace oatpp { namespace sqlite { namespace mapping { 
-  class Deserializer {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/ResultMapper/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/ResultMapper/index.html deleted file mode 100644 index b26750819..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/ResultMapper/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - ResultMapper.hpp | Oat++ - - - - - - - -

# ResultMapper.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/mapping/ResultMapper.hpp"

# ResultMapper

Mapper from SQLite result to oatpp objects.

namespace oatpp { namespace sqlite { namespace mapping { 
-  class ResultMapper {}
-}}}
-

# Methods

Return Type Name Summary
[none] ResultMapper Default constructor.
void setReadOneRowMethod Set "read one row" method for class id.
void setReadRowsMethod Set "read rows" method for class id.
oatpp::Void readOneRow Read one row to oatpp object or collection.
oatpp::Void readRows Read count of rows to oatpp collection.

# ResultMapper::ResultMapper

Default constructor.

ResultMapper()
-

# ResultMapper::setReadOneRowMethod

Set "read one row" method for class id.

  • @param classId
  • @param method

void setReadOneRowMethod(const data::mapping::type::ClassId& classId, ReadOneRowMethod method)
-

# ResultMapper::setReadRowsMethod

Set "read rows" method for class id.

  • @param classId
  • @param method

void setReadRowsMethod(const data::mapping::type::ClassId& classId, ReadRowsMethod method)
-

# ResultMapper::readOneRow

Read one row to oatpp object or collection.
Allowed output type classes are: - oatpp::Vector - oatpp::List - oatpp::UnorderedSet - oatpp::Fields - oatpp::UnorderedFields - oatpp::Object

  • @param dbData
  • @param type
  • @return

oatpp::Void readOneRow(ResultData* dbData, const Type* type)
-

# ResultMapper::readRows

Read count of rows to oatpp collection.
Allowed collections to store rows are: - oatpp::Vector - oatpp::List - oatpp::UnorderedSet.

  • @param dbData
  • @param type
  • @param count
  • @return

oatpp::Void readRows(ResultData* dbData, const Type* type, v_int64 count)
-

# ResultMapper::ResultData

Result data

namespace oatpp { namespace sqlite { namespace mapping { 
-  class ResultMapper {
-    struct ResultData {}
-  };
-}}}
-

# Fields

Type Name Summary
sqlite3_stmt* stmt SQLite statement.
std::shared_ptr<const data::mapping::TypeResolver> typeResolver oatpp::data::mapping::TypeResolver.
std::vector<oatpp::String> colNames Names of columns.
std::unordered_map<data::share::StringKeyLabel, v_int32> colIndices Column indices.
v_int64 colCount Column count.
v_int64 rowIndex Current row index.
bool hasMore Has more to read.
bool isSuccess Is success.

# Methods

Return Type Name Summary
[none] ResultData Constructor.
void next Move to next row.

# ResultMapper::ResultData::stmt

SQLite statement.

sqlite3_stmt* stmt
-

# ResultMapper::ResultData::typeResolver

oatpp::data::mapping::TypeResolver.

std::shared_ptr<const data::mapping::TypeResolver> typeResolver
-

# ResultMapper::ResultData::colNames

Names of columns.

std::vector<oatpp::String> colNames
-

# ResultMapper::ResultData::colIndices

Column indices.

std::unordered_map<data::share::StringKeyLabel, v_int32> colIndices
-

# ResultMapper::ResultData::colCount

Column count.

v_int64 colCount
-

# ResultMapper::ResultData::rowIndex

Current row index.

v_int64 rowIndex
-

# ResultMapper::ResultData::hasMore

Has more to read.

bool hasMore
-

# ResultMapper::ResultData::isSuccess

Is success.

bool isSuccess
-

# ResultMapper::ResultData::ResultData

Constructor.

  • @param pStmt
  • @param pTypeResolver

ResultData(sqlite3_stmt* pStmt, const std::shared_ptr<const data::mapping::TypeResolver>& pTypeResolver)
-

# ResultMapper::ResultData::next

Move to next row.

void next()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Serializer/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Serializer/index.html deleted file mode 100644 index 0769e2b12..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/Serializer/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Serializer.hpp | Oat++ - - - - - - - -

# Serializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/mapping/Serializer.hpp"

# Serializer

Mapper of oatpp values to SQLite values.

namespace oatpp { namespace sqlite { namespace mapping { 
-  class Serializer {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/type/Blob/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/type/Blob/index.html deleted file mode 100644 index a0124d2ec..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/mapping/type/Blob/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Blob.hpp | Oat++ - - - - - - - -

# Blob.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/mapping/type/Blob.hpp"

# Blob

Namespace: oatpp::sqlite::mapping::type

Blob type.

typedef oatpp::data::mapping::type::ObjectWrapper<std::string, __class::Blob> Blob
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/orm/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/orm/index.html deleted file mode 100644 index 46f3a6611..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/orm/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - orm.hpp | Oat++ - - - - - - - -

# orm.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/orm.hpp"

This is just a header file which includes all oatpp-sqlite components:

#include "Executor.hpp"
-#include "Types.hpp"
-#include "Utils.hpp"
-#include "oatpp/orm/SchemaMigration.hpp"
-#include "oatpp/orm/DbClient.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/Parser/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/Parser/index.html deleted file mode 100644 index e5301faae..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/Parser/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Parser.hpp | Oat++ - - - - - - - -

# Parser.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/ql_template/Parser.hpp"

# Parser

Query template parser.

namespace oatpp { namespace sqlite { namespace ql_template { 
-  class Parser {}
-}}}
-

# Methods

Return Type Name Summary
oatpp::String preprocess Preprocess text.
data::share::StringTemplate parseTemplate Parse query template.

# Parser::preprocess

Preprocess text.

  • @param text
  • @param cleanSections - out vector of clean sections.
  • @return

static oatpp::String preprocess(const oatpp::String& text, std::vector<CleanSection>& cleanSections)
-

# Parser::parseTemplate

Parse query template.

static data::share::StringTemplate parseTemplate(const oatpp::String& text)
-

# Parser::TemplateExtra

Template extra info.

namespace oatpp { namespace sqlite { namespace ql_template { 
-  class Parser {
-    struct TemplateExtra {}
-  };
-}}}
-

# Fields

Type Name Summary
oatpp::String templateName Template name.
oatpp::String preparedTemplate Template text with parameters substituted to SQLite parameter placeholders.
bool prepare Use prepared statement for this query.

# Parser::TemplateExtra::templateName

Template name.

oatpp::String templateName
-

# Parser::TemplateExtra::preparedTemplate

Template text with parameters substituted to SQLite parameter placeholders.

oatpp::String preparedTemplate
-

# Parser::TemplateExtra::prepare

Use prepared statement for this query.

bool prepare
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/TemplateValueProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/TemplateValueProvider/index.html deleted file mode 100644 index a7a56198a..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-sqlite/ql_template/TemplateValueProvider/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - TemplateValueProvider.hpp | Oat++ - - - - - - - -

# TemplateValueProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-sqlite
#include "oatpp-sqlite/ql_template/TemplateValueProvider.hpp"

# TemplateValueProvider

oatpp::data::share::StringTemplate::ValueProvider

namespace oatpp { namespace sqlite { namespace ql_template { 
-  class TemplateValueProvider : public data::share::StringTemplate::ValueProvider {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleSsdpUdpStreamProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleSsdpUdpStreamProvider/index.html deleted file mode 100644 index dae8e6bdb..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleSsdpUdpStreamProvider/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - SimpleSsdpUdpStreamProvider.hpp | Oat++ - - - - - - - -

# SimpleSsdpUdpStreamProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-ssdp
#include "oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp"

# SimpleSsdpUdpStreamProvider

Simple provider of UDP streams from SSDP Messages

namespace oatpp { namespace ssdp { 
-  class SimpleSsdpUdpStreamProvider : public SimpleUdpStreamProvider {}
-}}
-

# Methods

Return Type Name Summary
[none] SimpleSsdpUdpStreamProvider Constructor.
std::shared_ptr<SimpleSsdpUdpStreamProvider> createShared Create shared SimpleUDPConnectionProvider.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.

# SimpleSsdpUdpStreamProvider::SimpleSsdpUdpStreamProvider

Constructor.

SimpleSsdpUdpStreamProvider()
-

# SimpleSsdpUdpStreamProvider::createShared

Create shared SimpleUDPConnectionProvider.

  • @return - std::shared_ptr to SimpleUDPConnectionProvider.

static std::shared_ptr<SimpleSsdpUdpStreamProvider> createShared()
-

# SimpleSsdpUdpStreamProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleUdpStreamProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleUdpStreamProvider/index.html deleted file mode 100644 index e63b2dd18..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SimpleUdpStreamProvider/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - SimpleUdpStreamProvider.hpp | Oat++ - - - - - - - -

# SimpleUdpStreamProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-ssdp
#include "oatpp-ssdp/SimpleUdpStreamProvider.hpp"

# SimpleUdpStreamProvider

Simple implementation of provider of UDP streams.

namespace oatpp { namespace ssdp { 
-  class SimpleUdpStreamProvider : public network::ServerConnectionProvider {}
-}}
-

# Methods

Return Type Name Summary
explicit SimpleUdpStreamProvider Constructor.
void stop Close accept-socket.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync No need to implement this.

# SimpleUdpStreamProvider::SimpleUdpStreamProvider

Constructor.

  • @param port

explicit SimpleUdpStreamProvider(v_uint16 port)
-

# SimpleUdpStreamProvider::stop

Close accept-socket.

void stop() override
-

# SimpleUdpStreamProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# SimpleUdpStreamProvider::getAsync

No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later

async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpMessage/index.html b/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpMessage/index.html deleted file mode 100644 index 5cc4c1563..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpMessage/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - SsdpMessage.hpp | Oat++ - - - - - - - -

# SsdpMessage.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-ssdp
#include "oatpp-ssdp/SsdpMessage.hpp"

# SsdpMessage

Class Adaptor, representing a single SSDP message.

namespace oatpp { namespace ssdp { 
-  class SsdpMessage : public base::Countable, public data::stream::IOStream {}
-}}
-

# Methods

Return Type Name Summary
[none] SsdpMessage Constructor.
v_io_size flushToStream This flushes the buffered data to any other stream.
v_io_size flush This flushes the buffered data to the given input stream
v_io_size write Implementation of oatpp::data::stream::IOStream::write.
v_io_size read Implementation of oatpp::data::stream::IOStream::read.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.

# SsdpMessage::SsdpMessage

Constructor.

  • @param incomingStream

SsdpMessage(const provider::ResourceHandle<data::stream::IOStream>& incomingStream)
-

# SsdpMessage::flushToStream

This flushes the buffered data to any other stream.

v_io_size flushToStream(OutputStream* stream)
-

# SsdpMessage::flush

This flushes the buffered data to the given input stream

v_io_size flush()
-

# SsdpMessage::write

Implementation of oatpp::data::stream::IOStream::write.

  • @param buff - buffer containing data to write.
  • @param count - bytes count you want to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes written. See oatpp::v_io_size.

v_io_size write(const void *buff, v_buff_size count, async::Action& action) override
-

# SsdpMessage::read

Implementation of oatpp::data::stream::IOStream::read.

  • @param buff - buffer to read data to.
  • @param count - buffer size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes read. See oatpp::v_io_size.

v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# SsdpMessage::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# SsdpMessage::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# SsdpMessage::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# SsdpMessage::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# SsdpMessage::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# SsdpMessage::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpStreamHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpStreamHandler/index.html deleted file mode 100644 index c446f3d5b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-ssdp/SsdpStreamHandler/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - SsdpStreamHandler.hpp | Oat++ - - - - - - - -

# SsdpStreamHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-ssdp
#include "oatpp-ssdp/SsdpStreamHandler.hpp"

# SsdpStreamHandler

Handler of SSDP packet stream.

namespace oatpp { namespace ssdp { 
-  class SsdpStreamHandler : public base::Countable, public network::ConnectionHandler, public web::server::HttpProcessor::TaskProcessingListener {}
-}}
-

# Methods

Return Type Name Summary
[none] SsdpStreamHandler Multiple implementations:
  1. Constructor.
  2. Constructor.
  3. Constructor.
std::shared_ptr<SsdpStreamHandler> createShared Create shared SsdpStreamHandler.
void setErrorHandler Set root error handler for all requests coming through this Connection Handler.
void addRequestInterceptor Set request interceptor. Request intercepted after route is resolved but before corresponding route endpoint is called.
void handleConnection Implementation of oatpp::network::server::ConnectionHandler::handleConnection.
void stop Tell all worker threads to exit when done.

# SsdpStreamHandler::SsdpStreamHandler

  1. Constructor.
    SsdpStreamHandler(const std::shared_ptr<web::server::HttpProcessor::Components>& components)
    -
  2. Constructor.
    SsdpStreamHandler(const std::shared_ptr<web::server::HttpRouter>& router)
    -  : SsdpStreamHandler(std::make_shared<web::server::HttpProcessor::Components>(router))
    -
  3. Constructor.
    SsdpStreamHandler(const std::shared_ptr<web::server::HttpRouter>& router,
    -                  const std::shared_ptr<web::server::HttpProcessor::Config>& config)
    -  : SsdpStreamHandler(std::make_shared<web::server::HttpProcessor::Components>(router, config))
    -

# SsdpStreamHandler::createShared

Create shared SsdpStreamHandler.

static std::shared_ptr<SsdpStreamHandler> createShared(const std::shared_ptr<web::server::HttpRouter>& router)
-

# SsdpStreamHandler::setErrorHandler

Set root error handler for all requests coming through this Connection Handler. All unhandled errors will be handled by this error handler.

void setErrorHandler(const std::shared_ptr<web::server::handler::ErrorHandler>& errorHandler)
-

# SsdpStreamHandler::addRequestInterceptor

Set request interceptor. Request intercepted after route is resolved but before corresponding route endpoint is called.

  • @param interceptor - oatpp::web::server::handler::RequestInterceptor.

void addRequestInterceptor(const std::shared_ptr<web::server::interceptor::RequestInterceptor>& interceptor)
-

# SsdpStreamHandler::handleConnection

Implementation of oatpp::network::server::ConnectionHandler::handleConnection.

void handleConnection(const provider::ResourceHandle<data::stream::IOStream>& connection, const std::shared_ptr<const ParameterMap>& params) override
-

# SsdpStreamHandler::stop

Tell all worker threads to exit when done.

void stop() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-ssdp/UdpStream/index.html b/docs/.vuepress/dist/api/latest/oatpp-ssdp/UdpStream/index.html deleted file mode 100644 index 6ace3c33f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-ssdp/UdpStream/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - UdpStream.hpp | Oat++ - - - - - - - -

# UdpStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-ssdp
#include "oatpp-ssdp/UdpStream.hpp"

# UdpStream

Class to read/write UDP packets - packet-by-packet.

namespace oatpp { namespace ssdp { 
-  class UdpStream : public base::Countable, public data::stream::IOStream {}
-}}
-

# Methods

Return Type Name Summary
[none] UdpStream Constructor. Takes an UDP server handle and directly recvfrom it via populate.
v_io_size write A single call to write will produce a single UDP-packet.
v_io_size read Read a UDP-packet payload data.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
v_io_handle getHandle Get an underlying IO handle.

# UdpStream::UdpStream

Constructor. Takes an UDP server handle and directly recvfrom it via populate.

  • @param - UDP server handle

UdpStream(v_io_handle handle)
-

# UdpStream::write

A single call to write will produce a single UDP-packet.
Implementation of oatpp::data::stream::IOStream::write.

  • @param buff - buffer containing data to write.
  • @param count - bytes count you want to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes written. See oatpp::v_io_size.

v_io_size write(const void *buff, v_buff_size count, async::Action& action) override
-

# UdpStream::read

Read a UDP-packet payload data. Multiple calls to read() will read data from the same UDP-packet. Once data of a single UDP-packet is exhausted, the oatpp::IOError::ZERO is returned to designate the end of a packet.
Implementation of oatpp::data::stream::IOStream::read.

  • @param buff - buffer to read data to.
  • @param count - buffer size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes read. See oatpp::v_io_size.

v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# UdpStream::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# UdpStream::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# UdpStream::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# UdpStream::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# UdpStream::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# UdpStream::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-

# UdpStream::getHandle

Get an underlying IO handle.

  • @return

v_io_handle getHandle()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/AsyncController/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/AsyncController/index.html deleted file mode 100644 index 3f990c9fe..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/AsyncController/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - AsyncController.hpp | Oat++ - - - - - - - -

# AsyncController.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/AsyncController.hpp"

# AsyncController

Asynchronous Controller for Swagger-UI. Extends oatpp::web::server::api::ApiController.
Should be used with oatpp Async API and non-blocking I/O.
For more information about integrating swagger-ui in oatpp application see oatpp-swagger module.
Exposed endpoints:

  • ENDPOINT_ASYNC("GET", "/api-docs/oas-3.0.0.json", Api) - Server Open API Specification.
  • ENDPOINT_ASYNC("GET", "/swagger/ui", GetUIRoot) - Server Swagger-UI. (index.html).
  • ENDPOINT_ASYNC("GET", "/swagger/{filename}", GetUIResource) - Serve Swagger-UI resources.

namespace oatpp { namespace swagger { 
-  class AsyncController : public oatpp::web::server::api::ApiController {}
-}}
-

# Methods

Return Type Name Summary
std::shared_ptr<AsyncController> createShared Create shared AsyncController.

# AsyncController::createShared

Create shared AsyncController.

static std::shared_ptr<AsyncController> createShared(const web::server::api::Endpoints& endpointsList,
-                                                     OATPP_COMPONENT(std::shared_ptr<oatpp::swagger::DocumentInfo>, documentInfo),
-                                                     OATPP_COMPONENT(std::shared_ptr<oatpp::swagger::Resources>, resources))
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/Controller/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/Controller/index.html deleted file mode 100644 index 0653b7e01..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/Controller/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Controller.hpp | Oat++ - - - - - - - -

# Controller.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/Controller.hpp"

# Controller

Controller for Swagger-UI. Extends oatpp::web::server::api::ApiController.
Should be used with oatpp Simple API and multithreaded server.
For more information about integrating swagger-ui in oatpp application see oatpp-swagger module.
Exposed endpoints:

  • ENDPOINT("GET", "/api-docs/oas-3.0.0.json", api) - Server Open API Specification.
  • ENDPOINT("GET", "/swagger/ui", getUIRoot) - Server Swagger-UI. (index.html).
  • ENDPOINT("GET", "/swagger/{filename}", getUIResource) - Serve Swagger-UI resources.

namespace oatpp { namespace swagger { 
-  class Controller : public oatpp::web::server::api::ApiController {}
-}}
-

# Methods

Return Type Name Summary
std::shared_ptr<Controller> createShared Create shared Controller.

# Controller::createShared

Create shared Controller.

static std::shared_ptr<Controller> createShared(const web::server::api::Endpoints& endpointsList,
-                                                OATPP_COMPONENT(std::shared_ptr<oatpp::swagger::DocumentInfo>, documentInfo),
-                                                OATPP_COMPONENT(std::shared_ptr<oatpp::swagger::Resources>, resources))
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/Generator/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/Generator/index.html deleted file mode 100644 index 8a90a6c33..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/Generator/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Generator.hpp | Oat++ - - - - - - - -

# Generator.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/Generator.hpp"

# Generator

Generator of Open Api Specification 3.0.0.

namespace oatpp { namespace swagger { 
-  class Generator {}
-}}
-

# Typedefs

Type Name Summary
oatpp::web::server::api::Endpoint Endpoint Convenience typedef for oatpp::web::server::api::Endpoint.
oatpp::web::server::api::Endpoints Endpoints Convenience typedef for list of Generator::Endpoint.

# Methods

Return Type Name Summary
oatpp::Object<oas3::Document> generateDocument Generate Open Api Specification 3.0.0. from Generator::Endpoints.

# Generator::Endpoint

Convenience typedef for oatpp::web::server::api::Endpoint.

typedef oatpp::web::server::api::Endpoint Endpoint
-

# Generator::Endpoints

Convenience typedef for list of Generator::Endpoint.

typedef oatpp::web::server::api::Endpoints Endpoints
-

# Generator::generateDocument

Generate Open Api Specification 3.0.0. from Generator::Endpoints.

oatpp::Object<oas3::Document> generateDocument(const std::shared_ptr<oatpp::swagger::DocumentInfo>& docInfo, const Endpoints& endpoints)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/Model/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/Model/index.html deleted file mode 100644 index 7f08bee47..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/Model/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Model.hpp | Oat++ - - - - - - - -

# Model.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/Model.hpp"

This is the general model for swagger info. It is used as a base model -to generate API info for a particular API specification. Ex. for OAS3

# Contact

Contact.

namespace oatpp { namespace swagger { 
-  struct Contact {}
-}}
-

# Fields

Type Name Summary
String name name.
String url url.
String email email.

# Methods

Return Type Name Summary
std::shared_ptr<Contact> createShared Create shared Contact.

# Contact::name

name.

String name
-

# Contact::url

url.

String url
-

# Contact::email

email.

String email
-

# Contact::createShared

Create shared Contact.

  • @return - 'std::shared_ptr' to Contact.

static std::shared_ptr<Contact> createShared()
-

# License

License.

namespace oatpp { namespace swagger { 
-  struct License {}
-}}
-

# Fields

Type Name Summary
String name name.
String url Url.

# Methods

Return Type Name Summary
std::shared_ptr<License> createShared Create shared License.

# License::name

name.

String name
-

# License::url

Url.

String url
-

# License::createShared

Create shared License.

  • @return - 'std::shared_ptr' to License.

static std::shared_ptr<License> createShared()
-

# DocumentHeader

Document Header.

namespace oatpp { namespace swagger { 
-  struct DocumentHeader {}
-}}
-

# Fields

Type Name Summary
String title Document title.
String description Document description.
String termsOfService Terms of service.
std::shared_ptr<Contact> contact Contact.
std::shared_ptr<License> license License.
String version Version.

# Methods

Return Type Name Summary
std::shared_ptr<DocumentHeader> createShared Create shared DocumentHeader.

# DocumentHeader::title

Document title.

String title
-

# DocumentHeader::description

Document description.

String description
-

# DocumentHeader::termsOfService

Terms of service.

String termsOfService
-

# DocumentHeader::contact

Contact.

std::shared_ptr<Contact> contact
-

# DocumentHeader::license

License.

std::shared_ptr<License> license
-

# DocumentHeader::version

Version.

String version
-

# DocumentHeader::createShared

Create shared DocumentHeader.

  • @return - 'std::shared_ptr' to DocumentHeader.

static std::shared_ptr<DocumentHeader> createShared()
-

# ServerVariable

Server variable.

namespace oatpp { namespace swagger { 
-  struct ServerVariable {}
-}}
-

# Fields

Type Name Summary
String description Description.
std::shared_ptr<std::list<String>> enumValues Enum values.
String defaultValue Default value.

# Methods

Return Type Name Summary
std::shared_ptr<ServerVariable> createShared Create shared ServerVariable.

# ServerVariable::description

Description.

String description
-

# ServerVariable::enumValues

Enum values.

std::shared_ptr<std::list<String>> enumValues
-

# ServerVariable::defaultValue

Default value.

String defaultValue
-

# ServerVariable::createShared

Create shared ServerVariable.

  • @return - 'std::shared_ptr' to ServerVariable.

static std::shared_ptr<ServerVariable> createShared()
-

# Server

Server

namespace oatpp { namespace swagger { 
-  struct Server {}
-}}
-

# Fields

Type Name Summary
String url Url.
String description Description.
std::shared_ptr<std::unordered_map<String, std::shared_ptr<ServerVariable>>> variables Variables.

# Methods

Return Type Name Summary
std::shared_ptr<Server> createShared Create shared Server.

# Server::url

Url.

String url
-

# Server::description

Description.

String description
-

# Server::variables

Variables.

std::shared_ptr<std::unordered_map<String, std::shared_ptr<ServerVariable>>> variables
-

# Server::createShared

Create shared Server.

  • @return - 'std::shared_ptr' to Server.

static std::shared_ptr<Server> createShared()
-

# OAuthFlow

OAuth flow Object https://swagger.io/specification/#oauthFlowObject

namespace oatpp { namespace swagger { 
-  struct OAuthFlow {}
-}}
-

# Fields

Type Name Summary
oatpp::String authorizationUrl Authorization Url
oatpp::String tokenUrl Token Url
oatpp::String refreshUrl Refresh Url
std::shared_ptr<std::unordered_map<String, String>> scopes Scopes

# OAuthFlow::authorizationUrl

Authorization Url

oatpp::String authorizationUrl
-

# OAuthFlow::tokenUrl

Token Url

oatpp::String tokenUrl
-

# OAuthFlow::refreshUrl

Refresh Url

oatpp::String refreshUrl
-

# OAuthFlow::scopes

Scopes

std::shared_ptr<std::unordered_map<String, String>> scopes
-

# OAuthFlows

OAuth Flows Object https://swagger.io/specification/#oauthFlowObject

namespace oatpp { namespace swagger { 
-  struct OAuthFlows {}
-}}
-

# Fields

Type Name Summary
std::shared_ptr<OAuthFlow> implicit Implicit
std::shared_ptr<OAuthFlow> password Password
std::shared_ptr<OAuthFlow> clientCredentials Client Credentials
std::shared_ptr<OAuthFlow> authorizationCode Authorization Code

# OAuthFlows::implicit

Implicit

std::shared_ptr<OAuthFlow> implicit
-

# OAuthFlows::password

Password

std::shared_ptr<OAuthFlow> password
-

# OAuthFlows::clientCredentials

Client Credentials

std::shared_ptr<OAuthFlow> clientCredentials
-

# OAuthFlows::authorizationCode

Authorization Code

std::shared_ptr<OAuthFlow> authorizationCode
-

# SecurityScheme

Security Scheme object - https://swagger.io/specification/#securitySchemeObject .

namespace oatpp { namespace swagger { 
-  struct SecurityScheme {}
-}}
-

# Fields

Type Name Summary
oatpp::String type Type
oatpp::String description Description
oatpp::String name Name
oatpp::String in In
oatpp::String scheme Scheme
oatpp::String bearerFormat Bearer Format.
std::shared_ptr<OAuthFlows> flows Flows.
oatpp::String openIdConnectUrl Open Id Connect Url.

# SecurityScheme::type

Type

oatpp::String type
-

# SecurityScheme::description

Description

oatpp::String description
-

# SecurityScheme::name

Name

oatpp::String name
-

# SecurityScheme::in

In

oatpp::String in
-

# SecurityScheme::scheme

Scheme

oatpp::String scheme
-

# SecurityScheme::bearerFormat

Bearer Format.

oatpp::String bearerFormat
-

# SecurityScheme::flows

Flows.

std::shared_ptr<OAuthFlows> flows
-

# SecurityScheme::openIdConnectUrl

Open Id Connect Url.

oatpp::String openIdConnectUrl
-

# DocumentInfo

Document Info.

namespace oatpp { namespace swagger { 
-  class DocumentInfo {}
-}}
-

# Fields

Type Name Summary
std::shared_ptr<DocumentHeader> header DocumentHeader.
std::shared_ptr<std::list<std::shared_ptr<Server>>> servers List of Server.
std::shared_ptr<std::unordered_map<oatpp::String, std::shared_ptr<SecurityScheme>>> securitySchemes Map of oatpp::String to SecurityScheme.

# Methods

Return Type Name Summary
std::shared_ptr<DocumentInfo> createShared Create shared DocumentInfo.

# DocumentInfo::header

DocumentHeader.

std::shared_ptr<DocumentHeader> header
-

# DocumentInfo::servers

List of Server.

std::shared_ptr<std::list<std::shared_ptr<Server>>> servers
-

# DocumentInfo::securitySchemes

Map of oatpp::String to SecurityScheme.

std::shared_ptr<std::unordered_map<oatpp::String, std::shared_ptr<SecurityScheme>>> securitySchemes
-

# DocumentInfo::createShared

Create shared DocumentInfo.

  • @return - 'std::shared_ptr' to DocumentInfo.

static std::shared_ptr<DocumentInfo> createShared()
-

# DocumentInfo::SecuritySchemeBuilder

SecurityScheme Builder.

namespace oatpp { namespace swagger { 
-  class DocumentInfo {
-    class SecuritySchemeBuilder {}
-  };
-}}
-

# Methods

Return Type Name Summary
std::shared_ptr<SecurityScheme> DefaultBasicAuthorizationSecurityScheme Convenience default Basic-Authorization SecurityScheme.
std::shared_ptr<SecurityScheme> DefaultBearerAuthorizationSecurityScheme Convenience default Bearer-Authorization SecurityScheme.
SecuritySchemeBuilder& setType Set type.
SecuritySchemeBuilder& setDescription Set description.
SecuritySchemeBuilder& setName Set name.
SecuritySchemeBuilder& setIn Set 'in'.
SecuritySchemeBuilder& setScheme Set scheme.
SecuritySchemeBuilder& setBearerFormat Set bearer format.
SecuritySchemeBuilder& setImplicitFlow Set implicit flow.
SecuritySchemeBuilder& setPasswordFlow Set password flow.
SecuritySchemeBuilder& setClientCredentialsFlow Set client credentials flow.
SecuritySchemeBuilder& setAuthorizationCodeFlow Set authorization code flow.
SecuritySchemeBuilder& setOpenIdConnectUrl Set open id connect url.
std::shared_ptr<SecurityScheme> build Build SecurityScheme.

# DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme

Convenience default Basic-Authorization SecurityScheme.

static std::shared_ptr<SecurityScheme> DefaultBasicAuthorizationSecurityScheme()
-

# DocumentInfo::SecuritySchemeBuilder::DefaultBearerAuthorizationSecurityScheme

Convenience default Bearer-Authorization SecurityScheme.

  • @param bearerFormat - for documentation purposes.
  • @return - SecurityScheme.

static std::shared_ptr<SecurityScheme> DefaultBearerAuthorizationSecurityScheme(const oatpp::String& bearerFormat = nullptr)
-

# DocumentInfo::SecuritySchemeBuilder::setType

Set type.

  • @param type
  • @return

SecuritySchemeBuilder& setType(const String& type)
-

# DocumentInfo::SecuritySchemeBuilder::setDescription

Set description.

  • @param description
  • @return

SecuritySchemeBuilder& setDescription(const String& description)
-

# DocumentInfo::SecuritySchemeBuilder::setName

Set name.

  • @param name
  • @return

SecuritySchemeBuilder& setName(const String& name)
-

# DocumentInfo::SecuritySchemeBuilder::setIn

Set 'in'.

  • @param in
  • @return

SecuritySchemeBuilder& setIn(const String& in)
-

# DocumentInfo::SecuritySchemeBuilder::setScheme

Set scheme.

  • @param scheme
  • @return

SecuritySchemeBuilder& setScheme(const String& scheme)
-

# DocumentInfo::SecuritySchemeBuilder::setBearerFormat

Set bearer format.

  • @param bearerFormat
  • @return

SecuritySchemeBuilder& setBearerFormat(const String& bearerFormat)
-

# DocumentInfo::SecuritySchemeBuilder::setImplicitFlow

Set implicit flow.

SecuritySchemeBuilder& setImplicitFlow(const std::shared_ptr<OAuthFlow>& flow)
-

# DocumentInfo::SecuritySchemeBuilder::setPasswordFlow

Set password flow.

SecuritySchemeBuilder& setPasswordFlow(const std::shared_ptr<OAuthFlow>& flow)
-

# DocumentInfo::SecuritySchemeBuilder::setClientCredentialsFlow

Set client credentials flow.

SecuritySchemeBuilder& setClientCredentialsFlow(const std::shared_ptr<OAuthFlow>& flow)
-

# DocumentInfo::SecuritySchemeBuilder::setAuthorizationCodeFlow

Set authorization code flow.

SecuritySchemeBuilder& setAuthorizationCodeFlow(const std::shared_ptr<OAuthFlow>& flow)
-

# DocumentInfo::SecuritySchemeBuilder::setOpenIdConnectUrl

Set open id connect url.

  • @param openIdConnectUrl
  • @return

SecuritySchemeBuilder& setOpenIdConnectUrl(const String& openIdConnectUrl)
-

# DocumentInfo::SecuritySchemeBuilder::build

Build SecurityScheme.

std::shared_ptr<SecurityScheme> build()
-

# DocumentInfo::OAuthFlowBuilder

OAuthFlow Builder.

namespace oatpp { namespace swagger { 
-  class DocumentInfo {
-    class OAuthFlowBuilder {}
-  };
-}}
-

# Methods

Return Type Name Summary
OAuthFlowBuilder& setAuthorizationUrl Set authorization url.
OAuthFlowBuilder& setTokenUrl Set token url.
OAuthFlowBuilder& setRefreshUrl Set refresh url.
OAuthFlowBuilder& addScope add scope.
std::shared_ptr<OAuthFlow> build Build OAuthFlow.

# DocumentInfo::OAuthFlowBuilder::setAuthorizationUrl

Set authorization url.

  • @param authorizationUrl
  • @return

OAuthFlowBuilder& setAuthorizationUrl(const String& authorizationUrl)
-

# DocumentInfo::OAuthFlowBuilder::setTokenUrl

Set token url.

  • @param tokenUrl
  • @return

OAuthFlowBuilder& setTokenUrl(const String& tokenUrl)
-

# DocumentInfo::OAuthFlowBuilder::setRefreshUrl

Set refresh url.

  • @param refreshUrl
  • @return

OAuthFlowBuilder& setRefreshUrl(const String& refreshUrl)
-

# DocumentInfo::OAuthFlowBuilder::addScope

add scope.

  • @param name
  • @param scope
  • @return

OAuthFlowBuilder& addScope(const String& name, const String& scope)
-

# DocumentInfo::OAuthFlowBuilder::build

Build OAuthFlow.

std::shared_ptr<OAuthFlow> build()
-

# DocumentInfo::Builder

Document Info Builder.

namespace oatpp { namespace swagger { 
-  class DocumentInfo {
-    class Builder {}
-  };
-}}
-

# Methods

Return Type Name Summary
Builder& setTitle Set document title.
Builder& setDescription Set document description.
Builder& setTermsOfService Set terms of service.
Builder& setVersion Set version.
Builder& setContactName Set contact name.
Builder& setContactUrl Set contact url.
Builder& setContactEmail Set contact email.
Builder& setLicenseName Set license name.
Builder& setLicenseUrl Set license url.
Builder& addServer Multiple implementations:
  1. Add Server.
  2. Add Server.
Builder& addSecurityScheme Add SecurityScheme.
std::shared_ptr<DocumentInfo> build Build Document Info.

# DocumentInfo::Builder::setTitle

Set document title.

Builder& setTitle(const oatpp::String& title)
-

# DocumentInfo::Builder::setDescription

Set document description.

Builder& setDescription(const oatpp::String& description)
-

# DocumentInfo::Builder::setTermsOfService

Set terms of service.

Builder& setTermsOfService(const oatpp::String& termsOfService)
-

# DocumentInfo::Builder::setVersion

Set version.

Builder& setVersion(const oatpp::String& version)
-

# DocumentInfo::Builder::setContactName

Set contact name.

Builder& setContactName(const oatpp::String& name)
-

# DocumentInfo::Builder::setContactUrl

Set contact url.

Builder& setContactUrl(const oatpp::String& url)
-

# DocumentInfo::Builder::setContactEmail

Set contact email.

Builder& setContactEmail(const oatpp::String& email)
-

# DocumentInfo::Builder::setLicenseName

Set license name.

Builder& setLicenseName(const oatpp::String& name)
-

# DocumentInfo::Builder::setLicenseUrl

Set license url.

Builder& setLicenseUrl(const oatpp::String& url)
-

# DocumentInfo::Builder::addServer

  1. Add Server.
    Builder& addServer(const std::shared_ptr<Server>& server)
    -
  2. Add Server.
    Builder& addServer(const oatpp::String& url, const oatpp::String& description)
    -

# DocumentInfo::Builder::addSecurityScheme

Add SecurityScheme. When you are using the AUTHENTICATION() Endpoint-Macro you must add an SecurityScheme. For basic-authentication you can use the default oatpp::swagger::DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme(). For more complex authentication schemes you can use the oatpp::swagger::DocumentInfo::SecuritySchemeBuilder builder. Don't forget to add info->addSecurityRequirement(name) to your ENDPOINT_INFO() macro!

Builder& addSecurityScheme(const oatpp::String& name, const std::shared_ptr<SecurityScheme> &ss)
-

# DocumentInfo::Builder::build

Build Document Info.

std::shared_ptr<DocumentInfo> build()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/Resources/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/Resources/index.html deleted file mode 100644 index 9cc44f3aa..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/Resources/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Resources.hpp | Oat++ - - - - - - - -

# Resources.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/Resources.hpp"

# Resources

This class is responsible for loading Swagger-UI resources.

namespace oatpp { namespace swagger { 
-  class Resources {}
-}}
-

# Methods

Return Type Name Summary
[none] Resources Constructor.
std::shared_ptr<Resources> loadResources Load and cache Swagger-UI resources.
std::shared_ptr<Resources> streamResources Stream Swagger-UI resources directly from disk.
oatpp::String getResource Get cached resource by filename.
std::shared_ptr<ReadCallback> getResourceStream Get streamed resource by filename.
bool isStreaming Returns true if this is a streaming ressource instance.

# Resources::Resources

Constructor.

  • @param resDir - directory containing swagger-ui resources.

Resources(const oatpp::String& resDir, bool streaming = false)
-

# Resources::loadResources

Load and cache Swagger-UI resources.

  • @param resDir - directory containing swagger-ui resources.
  • @return - std::shared_ptr to Resources.

static std::shared_ptr<Resources> loadResources(const oatpp::String& resDir)
-

# Resources::streamResources

Stream Swagger-UI resources directly from disk.

  • @param resDir - directory containing swagger-ui resources.
  • @return - std::shared_ptr to Resources.

static std::shared_ptr<Resources> streamResources(const oatpp::String& resDir)
-

# Resources::getResource

Get cached resource by filename.

  • @param filename - name of the resource file.
  • @return - oatpp::String containing resource binary data.

oatpp::String getResource(const oatpp::String& filename)
-

# Resources::getResourceStream

Get streamed resource by filename.

std::shared_ptr<ReadCallback> getResourceStream(const oatpp::String& filename)
-

# Resources::isStreaming

Returns true if this is a streaming ressource instance.

  • @return

bool isStreaming()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/Types/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/Types/index.html deleted file mode 100644 index 08498e3f7..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/Types/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Types.hpp | Oat++ - - - - - - - -

# Types.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/Types.hpp"

# Binary

Binary type class info.

namespace oatpp { namespace swagger { namespace __class { 
-  class Binary {}
-}}}
-

# Fields

Type Name Summary
const oatpp::data::mapping::type::ClassId CLASS_ID CLASS_NAME = "string".

# Methods

Return Type Name Summary
oatpp::Type* getType Get type information.

# Binary::CLASS_ID

CLASS_NAME = "string".

static const oatpp::data::mapping::type::ClassId CLASS_ID
-

# Binary::getType

Get type information.

static oatpp::Type* getType()
-

# Binary

Namespace: oatpp::swagger

Typedef for Binary. It is used to indicate file upload in Swagger-UI.
Usage example: info->addConsumes<oatpp::swagger::Binary>("application/octet-stream");.
For more info see: Endpoint Annotation And API Documentation.

typedef oatpp::data::mapping::type::ObjectWrapper<std::string, __class::Binary> Binary
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-swagger/oas3/Model/index.html b/docs/.vuepress/dist/api/latest/oatpp-swagger/oas3/Model/index.html deleted file mode 100644 index e29e4ceef..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-swagger/oas3/Model/index.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - Model.hpp | Oat++ - - - - - - - -

# Model.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-swagger
#include "oatpp-swagger/oas3/Model.hpp"

This file contains Open Api 3.0.0 Specification Model.

# Contact

Contact.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Contact : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String name Name.
String url Url.
String email Email.

# Methods

Return Type Name Summary
Wrapper createFromBaseModel Create Contact from oatpp::swagger::Contact.

# Contact::name

Name.

DTO_FIELD(String, name)
-

# Contact::url

Url.

DTO_FIELD(String, url)
-

# Contact::email

Email.

DTO_FIELD(String, email)
-

# Contact::createFromBaseModel

Create Contact from oatpp::swagger::Contact.

static Wrapper createFromBaseModel(const std::shared_ptr<oatpp::swagger::Contact>& model)
-

# License

License.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class License : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String name Name.
String url Url.

# Methods

Return Type Name Summary
Wrapper createFromBaseModel Create Liscense from oatpp::swagger::License.

# License::name

Name.

DTO_FIELD(String, name)
-

# License::url

Url.

DTO_FIELD(String, url)
-

# License::createFromBaseModel

Create Liscense from oatpp::swagger::License.

static Wrapper createFromBaseModel(const std::shared_ptr<oatpp::swagger::License>& model)
-

# Info

Info.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Info : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String title Title.
String description Description.
String termsOfService Terms of service.
Object<Contact> contact oatpp::swagger::oas3::Contact.
Object<License> license oatpp::swagger::oas3::License.
String version Version.

# Methods

Return Type Name Summary
Wrapper createFromBaseModel Create Info from oatpp::swagger::DocumentHeader.

# Info::title

Title.

DTO_FIELD(String, title)
-

# Info::description

Description.

DTO_FIELD(String, description)
-

# Info::termsOfService

Terms of service.

DTO_FIELD(String, termsOfService)
-

# Info::contact

oatpp::swagger::oas3::Contact.

DTO_FIELD(Object<Contact>, contact)
-

# Info::license

oatpp::swagger::oas3::License.

DTO_FIELD(Object<License>, license)
-

# Info::version

Version.

DTO_FIELD(String, version)
-

# Info::createFromBaseModel

Create Info from oatpp::swagger::DocumentHeader.

static Wrapper createFromBaseModel(const std::shared_ptr<oatpp::swagger::DocumentHeader>& model)
-

# ServerVariable

Server Variable.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class ServerVariable : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String description Description.
List<String> enumValues Enum values.
String defaultValue Default value.

# Methods

Return Type Name Summary
Wrapper createFromBaseModel Create ServerVariable from oatpp::swagger::ServerVariable.

# ServerVariable::description

Description.

DTO_FIELD(String, description)
-

# ServerVariable::enumValues

Enum values.

DTO_FIELD(List<String>, enumValues, "enum")
-

# ServerVariable::defaultValue

Default value.

DTO_FIELD(String, defaultValue, "default")
-

# ServerVariable::createFromBaseModel

Create ServerVariable from oatpp::swagger::ServerVariable.

static Wrapper createFromBaseModel(const std::shared_ptr<oatpp::swagger::ServerVariable>& model)
-

# Server

Server.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Server : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String url Url.
String description Description.
Fields<Object<ServerVariable>> variables Variables.

# Methods

Return Type Name Summary
Wrapper createFromBaseModel Create Server from oatpp::swagger::Server.

# Server::url

Url.

DTO_FIELD(String, url)
-

# Server::description

Description.

DTO_FIELD(String, description)
-

# Server::variables

Variables.

DTO_FIELD(Fields<Object<ServerVariable>>, variables)
-

# Server::createFromBaseModel

Create Server from oatpp::swagger::Server.

static Wrapper createFromBaseModel(const std::shared_ptr<oatpp::swagger::Server>& model)
-

# Schema

Schema.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Schema : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String type Type. Ex.: integer, string, etc.
String format Format. Ex.: int32, int64, etc.
String description Description of the field.
Any defaultValue Default value for the field.
String pattern Pattern value for the field.
Int64 minimum Minimum value.
Int64 maximum Maximum value.
Fields<Object<Schema>> properties Map of oatpp::String to Schema.
Object<Schema> additionalProperties Additional properties.
Object<Schema> items Items.
Boolean uniqueItems Items should be unique.
  • @return
List<Any> enumValues Enum of possible values.
List<String> required List of required fields.
String ref Ref.

# Schema::type

Type. Ex.: integer, string, etc.

DTO_FIELD(String, type)
-

# Schema::format

Format. Ex.: int32, int64, etc.

DTO_FIELD(String, format)
-

# Schema::description

Description of the field.

DTO_FIELD(String, description)
-

# Schema::defaultValue

Default value for the field.

DTO_FIELD(Any, defaultValue, "default")
-

# Schema::pattern

Pattern value for the field.

DTO_FIELD(String, pattern, "pattern")
-

# Schema::minimum

Minimum value.

DTO_FIELD(Int64, minimum)
-

# Schema::maximum

Maximum value.

DTO_FIELD(Int64, maximum)
-

# Schema::properties

Map of oatpp::String to Schema.

DTO_FIELD(Fields<Object<Schema>>, properties)
-

# Schema::additionalProperties

Additional properties.

DTO_FIELD(Object<Schema>, additionalProperties)
-

# Schema::items

Items.

DTO_FIELD(Object<Schema>, items)
-

# Schema::uniqueItems

Items should be unique.

  • @return

DTO_FIELD(Boolean, uniqueItems)
-

# Schema::enumValues

Enum of possible values.

DTO_FIELD(List<Any>, enumValues, "enum")
-

# Schema::required

List of required fields.

DTO_FIELD(List<String>, required, "required")
-

# Schema::ref

Ref.

DTO_FIELD(String, ref, "$ref")
-

# Example

Example.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Example : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Any value Example value.
String summary Summary.

# Example::value

Example value.

DTO_FIELD(Any, value)
-

# Example::summary

Summary.

DTO_FIELD(String, summary)
-

# MediaTypeObject

Media type object.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class MediaTypeObject : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Object<Schema> schema Schema.
Fields<Object<Example>> examples Examples.

# MediaTypeObject::schema

Schema.

DTO_FIELD(Object<Schema>, schema)
-

# MediaTypeObject::examples

Examples.

DTO_FIELD(Fields<Object<Example>>, examples)
-

# OAuthFlow

OAuth flow Object https://swagger.io/specification/#oauthFlowObject

namespace oatpp { namespace swagger { namespace oas3 { 
-  class OAuthFlow : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String authorizationUrl Authorization url.
String tokenUrl Token url.
String refreshUrl Refresh url.
Fields<String> scopes Scopes.

# OAuthFlow::authorizationUrl

Authorization url.

DTO_FIELD(String, authorizationUrl)
-

# OAuthFlow::tokenUrl

Token url.

DTO_FIELD(String, tokenUrl)
-

# OAuthFlow::refreshUrl

Refresh url.

DTO_FIELD(String, refreshUrl)
-

# OAuthFlow::scopes

Scopes.

DTO_FIELD(Fields<String>, scopes)
-

# OAuthFlows

OAuth Flows Object https://swagger.io/specification/#oauthFlowObject

namespace oatpp { namespace swagger { namespace oas3 { 
-  class OAuthFlows : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Object<OAuthFlow> implicit Implicit.
Object<OAuthFlow> password Password.
Object<OAuthFlow> clientCredentials Client credentials.
Object<OAuthFlow> authorizationCode Authorization code.

# OAuthFlows::implicit

Implicit.

DTO_FIELD(Object<OAuthFlow>, implicit)
-

# OAuthFlows::password

Password.

DTO_FIELD(Object<OAuthFlow>, password)
-

# OAuthFlows::clientCredentials

Client credentials.

DTO_FIELD(Object<OAuthFlow>, clientCredentials)
-

# OAuthFlows::authorizationCode

Authorization code.

DTO_FIELD(Object<OAuthFlow>, authorizationCode)
-

# SecurityScheme

Security Scheme object.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class SecurityScheme : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String type Type.
String description Description.
String name Name.
String in 'In'.
String scheme Scheme.
String bearerFormat Bearer format.
Object<OAuthFlows> flows Flows.
String openIdConnectUrl Open id connect url.

# SecurityScheme::type

Type.

DTO_FIELD(String, type)
-

# SecurityScheme::description

Description.

DTO_FIELD(String, description)
-

# SecurityScheme::name

Name.

DTO_FIELD(String, name)
-

# SecurityScheme::in

'In'.

DTO_FIELD(String, in)
-

# SecurityScheme::scheme

Scheme.

DTO_FIELD(String, scheme)
-

# SecurityScheme::bearerFormat

Bearer format.

DTO_FIELD(String, bearerFormat)
-

# SecurityScheme::flows

Flows.

DTO_FIELD(Object<OAuthFlows>, flows)
-

# SecurityScheme::openIdConnectUrl

Open id connect url.

DTO_FIELD(String, openIdConnectUrl)
-

# OperationResponse

Operation Response.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class OperationResponse : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String description Description.
Fields<Object<MediaTypeObject>> content MediaTypeObject.

# OperationResponse::description

Description.

DTO_FIELD(String, description)
-

# OperationResponse::content

MediaTypeObject.

DTO_FIELD(Fields<Object<MediaTypeObject>>, content)
-

# RequestBody

Request body.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class RequestBody : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String description Description.
Boolean required Required.
Fields<Object<MediaTypeObject>> content MediaTypeObject.

# RequestBody::description

Description.

DTO_FIELD(String, description)
-

# RequestBody::required

Required.

DTO_FIELD(Boolean, required)
-

# RequestBody::content

MediaTypeObject.

DTO_FIELD(Fields<Object<MediaTypeObject>>, content)
-

# PathItemParameter

Path item parameter.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class PathItemParameter : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String name Parameter name.
String description Parameter description.
String in Parameter place - "query", "header", "path"
Boolean required Is Parameter required.
Boolean deprecated Is Parameter deprecated.
Object<Schema> schema Parameter schema. Schema.
Fields<Object<Example>> examples Examples.

# PathItemParameter::name

Parameter name.

DTO_FIELD(String, name)
-

# PathItemParameter::description

Parameter description.

DTO_FIELD(String, description)
-

# PathItemParameter::in

Parameter place - "query", "header", "path"

DTO_FIELD(String, in)
-

# PathItemParameter::required

Is Parameter required.

DTO_FIELD(Boolean, required)
-

# PathItemParameter::deprecated

Is Parameter deprecated.

DTO_FIELD(Boolean, deprecated)
-

# PathItemParameter::schema

Parameter schema. Schema.

DTO_FIELD(Object<Schema>, schema)
-

# PathItemParameter::examples

Examples.

DTO_FIELD(Fields<Object<Example>>, examples)
-

# PathItemOperation

Path item operation.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class PathItemOperation : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String description Description.
String summary Summary.
String operationId Operation ID.
Object<RequestBody> requestBody Request Body.
List<String> tags List of tags.
Fields<Object<OperationResponse>> responses Map of oatpp::String to OperationResponse.
List<Object<PathItemParameter>> parameters List of PathItemParameter.
List<Fields<List<String>>> security Security requirements.

# PathItemOperation::description

Description.

DTO_FIELD(String, description)
-

# PathItemOperation::summary

Summary.

DTO_FIELD(String, summary)
-

# PathItemOperation::operationId

Operation ID.

DTO_FIELD(String, operationId)
-

# PathItemOperation::requestBody

Request Body.

DTO_FIELD(Object<RequestBody>, requestBody)
-

# PathItemOperation::tags

List of tags.

DTO_FIELD(List<String>, tags)
-

# PathItemOperation::responses

Map of oatpp::String to OperationResponse.

DTO_FIELD(Fields<Object<OperationResponse>>, responses)
-

# PathItemOperation::parameters

List of PathItemParameter.

DTO_FIELD(List<Object<PathItemParameter>>, parameters)
-

# PathItemOperation::security

Security requirements.

DTO_FIELD(List<Fields<List<String>>>, security)
-

# PathItem

Path item.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class PathItem : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Object<PathItemOperation> operationGet Operation GET.
Object<PathItemOperation> operationPut Operation PUT.
Object<PathItemOperation> operationPost Operation POST.
Object<PathItemOperation> operationDelete Operation DELETE.
Object<PathItemOperation> operationOptions Operation OPTIONS.
Object<PathItemOperation> operationHead Operation HEAD.
Object<PathItemOperation> operationPatch Operation PATCH.
Object<PathItemOperation> operationTrace Operation TRACE.

# PathItem::operationGet

Operation GET.

DTO_FIELD(Object<PathItemOperation>, operationGet, "get")
-

# PathItem::operationPut

Operation PUT.

DTO_FIELD(Object<PathItemOperation>, operationPut, "put")
-

# PathItem::operationPost

Operation POST.

DTO_FIELD(Object<PathItemOperation>, operationPost, "post")
-

# PathItem::operationDelete

Operation DELETE.

DTO_FIELD(Object<PathItemOperation>, operationDelete, "delete")
-

# PathItem::operationOptions

Operation OPTIONS.

DTO_FIELD(Object<PathItemOperation>, operationOptions, "options")
-

# PathItem::operationHead

Operation HEAD.

DTO_FIELD(Object<PathItemOperation>, operationHead, "head")
-

# PathItem::operationPatch

Operation PATCH.

DTO_FIELD(Object<PathItemOperation>, operationPatch, "patch")
-

# PathItem::operationTrace

Operation TRACE.

DTO_FIELD(Object<PathItemOperation>, operationTrace, "trace")
-

# Components

Component.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Components : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
Fields<Object<Schema>> schemas Map of oatpp::String to Schema.
Fields<Object<SecurityScheme>> securitySchemes Map of oatpp::String to SecurityScheme.

# Components::schemas

Map of oatpp::String to Schema.

DTO_FIELD(Fields<Object<Schema>>, schemas)
-

# Components::securitySchemes

Map of oatpp::String to SecurityScheme.

DTO_FIELD(Fields<Object<SecurityScheme>>, securitySchemes)
-

# Document

Document.

namespace oatpp { namespace swagger { namespace oas3 { 
-  class Document : public oatpp::DTO {}
-}}}
-

# Fields

Type Name Summary
String openapi Open Api Version.
Object<Info> info Info.
List<Object<Server>> servers List of Server.
Fields<Object<PathItem>> paths Map of oatpp::String to PathItem.
Object<Components> components Components.

# Document::openapi

Open Api Version.

DTO_FIELD(String, openapi, "openapi") = "3.0.0"
-

# Document::info

Info.

DTO_FIELD(Object<Info>, info)
-

# Document::servers

List of Server.

DTO_FIELD(List<Object<Server>>, servers)
-

# Document::paths

Map of oatpp::String to PathItem.

DTO_FIELD(Fields<Object<PathItem>>, paths)
-

# Document::components

Components.

DTO_FIELD(Object<Components>, components)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-test/Checker/index.html b/docs/.vuepress/dist/api/latest/oatpp-test/Checker/index.html deleted file mode 100644 index fbba56620..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-test/Checker/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Checker.hpp | Oat++ - - - - - - - -

# Checker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp-test/Checker.hpp"

# PerformanceChecker

Helper class to check performance of code block.

namespace oatpp { namespace test { 
-  class PerformanceChecker {}
-}}
-

# Methods

Return Type Name Summary
[none] PerformanceChecker Constructor.
[none] ~PerformanceChecker Non virtual destructor.
v_int64 getElapsedTicks Get elapsed time from checker creation.

# PerformanceChecker::PerformanceChecker

Constructor.

  • @param tag - log tag.

PerformanceChecker(const char* tag)
-

# PerformanceChecker::~PerformanceChecker

Non virtual destructor. Will print time elapsed ticks on destruction.

~PerformanceChecker()
-

# PerformanceChecker::getElapsedTicks

Get elapsed time from checker creation.

  • @return - ticks in microseconds.

v_int64 getElapsedTicks()
-

# ThreadLocalObjectsChecker

Helper class to check block of code on memory leaks. Checks oatpp::base::Countable objects, and objects allocated on memory pools.

namespace oatpp { namespace test { 
-  class ThreadLocalObjectsChecker {}
-}}
-

# Methods

Return Type Name Summary
[none] ThreadLocalObjectsChecker Constructor.
[none] ~ThreadLocalObjectsChecker Non virtual destructor.

# ThreadLocalObjectsChecker::ThreadLocalObjectsChecker

Constructor.

  • @param tag - log tag.

ThreadLocalObjectsChecker(const char* tag)
-

# ThreadLocalObjectsChecker::~ThreadLocalObjectsChecker

Non virtual destructor. Will halt program execution if memory leaks detected.

~ThreadLocalObjectsChecker()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-test/UnitTest/index.html b/docs/.vuepress/dist/api/latest/oatpp-test/UnitTest/index.html deleted file mode 100644 index 0ad65cb71..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-test/UnitTest/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - UnitTest.hpp | Oat++ - - - - - - - -

# UnitTest.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp-test/UnitTest.hpp"

# UnitTest

Base class for unit tests.

namespace oatpp { namespace test { 
-  class UnitTest {}
-}}
-

# Methods

Return Type Name Summary
[none] UnitTest Constructor.
[none] ~UnitTest Default virtual destructor.
void run Multiple implementations:
  1. Run this test repeatedly for specified number of times.
  2. Run this test.
void onRun Override this method. It should contain test logic.
void before Optionally override this method. It should contain logic run before all test iterations.
void after Optionally override this method. It should contain logic run after all test iterations.
void runTest Run this test repeatedly for specified number of times.

# UnitTest::UnitTest

Constructor.

  • @param testTAG - tag used for logs.

UnitTest(const char* testTAG)
-  : TAG(testTAG)
-

# UnitTest::~UnitTest

Default virtual destructor.

virtual ~UnitTest() = default
-

# UnitTest::run

  1. Run this test repeatedly for specified number of times.
    • @param times - number of times to run this test.
    void run(v_int32 times)
    -
  2. Run this test.
    void run()
    -

# UnitTest::onRun

Override this method. It should contain test logic.

virtual void onRun() = 0
-

# UnitTest::before

Optionally override this method. It should contain logic run before all test iterations.

virtual void before()
-

# UnitTest::after

Optionally override this method. It should contain logic run after all test iterations.

virtual void after()
-

# UnitTest::runTest

Run this test repeatedly for specified number of times.

  • @tparam T - Test class.
  • @param times - number of times to run this test.

template<class T>
-static void runTest(v_int32 times)
-

# OATPP_RUN_TEST

Convenience macro to run test.
Usage Example:
OATPP_RUN_TEST(oatpp::test::web::FullTest); Running the test 10 times: OATPP_RUN_TEST(oatpp::test::web::FullTest, 10);

#define OATPP_RUN_TEST(...)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-test/web/ClientServerTestRunner/index.html b/docs/.vuepress/dist/api/latest/oatpp-test/web/ClientServerTestRunner/index.html deleted file mode 100644 index a007edee3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-test/web/ClientServerTestRunner/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ClientServerTestRunner.hpp | Oat++ - - - - - - - -

# ClientServerTestRunner.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp-test/web/ClientServerTestRunner.hpp"

# ClientServerTestRunner

Helper class to run Client-Server tests

namespace oatpp { namespace test { namespace web { 
-  class ClientServerTestRunner {}
-}}}
-

# Methods

Return Type Name Summary
void addController Add controller's endpoints to router
void run Start server, execute code block passed as lambda, stop server.

# ClientServerTestRunner::addController

Add controller's endpoints to router

  • @param controller

void addController(const std::shared_ptr<ApiController>& controller)
-

# ClientServerTestRunner::run

Start server, execute code block passed as lambda, stop server.

  • @tparam Lambda
  • @param lambda
  • @param timeout

template<typename Lambda>
-void run(
-  const Lambda& lambda,
-  const std::chrono::duration<v_int64, std::micro>& timeout = std::chrono::hours(12)
-)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncConnectionHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncConnectionHandler/index.html deleted file mode 100644 index 1090d4026..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncConnectionHandler/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - AsyncConnectionHandler.hpp | Oat++ - - - - - - - -

# AsyncConnectionHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/AsyncConnectionHandler.hpp"

# AsyncConnectionHandler

Asynchronous websocket connection handler. Extends oatpp::base::Countable, oatpp::network::ConnectionHandler.

namespace oatpp { namespace websocket { 
-  class AsyncConnectionHandler : public base::Countable, public network::ConnectionHandler {}
-}}
-

# Methods

Return Type Name Summary
[none] AsyncConnectionHandler Multiple implementations:
  1. Constructor. With threadCount.
  2. Constructor. With oatpp::async::Executor.
std::shared_ptr<AsyncConnectionHandler> createShared Multiple implementations:
  1. Create shared AsyncConnectionHandler with threadCount.
  2. Create shared AsyncConnectionHandler with oatpp::async::Executor.
void setSocketInstanceListener Set AsyncConnectionHandler::SocketInstanceListener.
void handleConnection Implementation of oatpp::network::ConnectionHandler::handleConnection().
void stop Will call oatpp::async::Executor::stop().

# AsyncConnectionHandler::AsyncConnectionHandler

  1. Constructor. With threadCount. Will create oatpp::async::Executor.
    AsyncConnectionHandler(v_int32 threadCount = oatpp::async::Executor::VALUE_SUGGESTED)
    -
  2. Constructor. With oatpp::async::Executor.
    AsyncConnectionHandler(const std::shared_ptr<oatpp::async::Executor>& executor)
    -

# AsyncConnectionHandler::createShared

  1. Create shared AsyncConnectionHandler with threadCount.
    • @param threadCount - number of threads for oatpp::async::Executor.
    • @return - std::shared_ptr to AsyncConnectionHandler.
    static std::shared_ptr<AsyncConnectionHandler> createShared(v_int32 threadCount = oatpp::async::Executor::VALUE_SUGGESTED)
    -
  2. Create shared AsyncConnectionHandler with oatpp::async::Executor.
    static std::shared_ptr<AsyncConnectionHandler> createShared(const std::shared_ptr<oatpp::async::Executor>& executor)
    -

# AsyncConnectionHandler::setSocketInstanceListener

Set AsyncConnectionHandler::SocketInstanceListener.

void setSocketInstanceListener(const std::shared_ptr<SocketInstanceListener>& listener)
-

# AsyncConnectionHandler::handleConnection

Implementation of oatpp::network::ConnectionHandler::handleConnection().

void handleConnection(const provider::ResourceHandle<IOStream>& connection, const std::shared_ptr<const ParameterMap>& params) override
-

# AsyncConnectionHandler::stop

Will call oatpp::async::Executor::stop().

void stop() override
-

# AsyncConnectionHandler::SocketInstanceListener

Listener for new websocket instances.

namespace oatpp { namespace websocket { 
-  class AsyncConnectionHandler : public base::Countable, public network::ConnectionHandler {
-    class SocketInstanceListener {}
-  };
-}}
-

# Typedefs

Type Name Summary
oatpp::websocket::AsyncWebSocket AsyncWebSocket Convenience typedef for oatpp::websocket::AsyncWebSocket.
oatpp::network::ConnectionHandler::ParameterMap ParameterMap Convenience typedef for oatpp::network::ConnectionHandler::ParameterMap.

# Methods

Return Type Name Summary
[none] ~SocketInstanceListener Default virtual destructor.
void onAfterCreate_NonBlocking Called when socket is created.
void onBeforeDestroy_NonBlocking Called before socket instance is destroyed.

# AsyncConnectionHandler::SocketInstanceListener::AsyncWebSocket

Convenience typedef for oatpp::websocket::AsyncWebSocket.

typedef oatpp::websocket::AsyncWebSocket AsyncWebSocket
-

# AsyncConnectionHandler::SocketInstanceListener::ParameterMap

Convenience typedef for oatpp::network::ConnectionHandler::ParameterMap.

typedef oatpp::network::ConnectionHandler::ParameterMap ParameterMap
-

# AsyncConnectionHandler::SocketInstanceListener::~SocketInstanceListener

Default virtual destructor.

virtual ~SocketInstanceListener() = default
-

# AsyncConnectionHandler::SocketInstanceListener::onAfterCreate_NonBlocking

Called when socket is created.
This method should not block.

virtual void onAfterCreate_NonBlocking(const std::shared_ptr<AsyncWebSocket>& socket, const std::shared_ptr<const ParameterMap>& params) = 0
-

# AsyncConnectionHandler::SocketInstanceListener::onBeforeDestroy_NonBlocking

Called before socket instance is destroyed.
This method should not block.

virtual void onBeforeDestroy_NonBlocking(const std::shared_ptr<AsyncWebSocket>& socket) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncWebSocket/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncWebSocket/index.html deleted file mode 100644 index 139c4991a..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/AsyncWebSocket/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - AsyncWebSocket.hpp | Oat++ - - - - - - - -

# AsyncWebSocket.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/AsyncWebSocket.hpp"

# AsyncWebSocket

Asynchronous WebSocket.

namespace oatpp { namespace websocket { 
-  class AsyncWebSocket : public oatpp::base::Countable, public std::enable_shared_from_this<AsyncWebSocket> {}
-}}
-

# Typedefs

Type Name Summary
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.
oatpp::async::CoroutineStarter CoroutineStarter Convenince typedef for oatpp::async::CoroutineStarter.

# Methods

Return Type Name Summary
[none] AsyncWebSocket Multiple implementations:
  1. Constructor with Config.
  2. Constructor.
  3. Deleted copy-constructor.
std::shared_ptr<AsyncWebSocket> createShared Multiple implementations:
  1. Create shared AsyncWebSocket with Config.
  2. Create shared AsyncWebSocket.
void setConfig Set WebSocket config.
provider::ResourceHandle<oatpp::data::stream::IOStream> getConnection Get socket connection.
void setListener Set socket event listener.
std::shared_ptr<Listener> getListener Get socket event listener
CoroutineStarter listenAsync Start listening Coroutine.
CoroutineStarter writeFrameHeaderAsync Send custom frame to peer.
CoroutineStarter sendFrameHeaderAsync Send default frame to peer with fin, opcode and messageSize set.
CoroutineStarter sendOneFrameAsync Send one frame message with custom fin and opcode.
CoroutineStarter sendCloseAsync Multiple implementations:
  1. Send close frame.
  2. Send close frame without message.
CoroutineStarter sendPingAsync Send ping frame.
CoroutineStarter sendPongAsync Send pong frame.
CoroutineStarter sendOneFrameTextAsync Send one frame text message.
CoroutineStarter sendOneFrameBinaryAsync Send one frame binary message.

# AsyncWebSocket::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# AsyncWebSocket::CoroutineStarter

Convenince typedef for oatpp::async::CoroutineStarter.

typedef oatpp::async::CoroutineStarter CoroutineStarter
-

# AsyncWebSocket::AsyncWebSocket

  1. Constructor with Config.
    AsyncWebSocket(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, const Config& config)
    -
  2. Constructor.
    AsyncWebSocket(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, bool maskOutgoingMessages)
    -
  3. Deleted copy-constructor.
    AsyncWebSocket(const AsyncWebSocket&) = delete
    -

# AsyncWebSocket::createShared

  1. Create shared AsyncWebSocket with Config.
    static std::shared_ptr<AsyncWebSocket> createShared(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, const Config& config)
    -
  2. Create shared AsyncWebSocket.
    • @param connection - oatpp::data::stream::IOStream.
    • @param maskOutgoingMessages - for servers should be false. For clients should be true.
    • @return - std::shared_ptr to AsyncWebSocket.
    static std::shared_ptr<AsyncWebSocket> createShared(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, bool maskOutgoingMessages)
    -

# AsyncWebSocket::setConfig

Set WebSocket config.

void setConfig(const Config& config)
-

# AsyncWebSocket::getConnection

Get socket connection.

provider::ResourceHandle<oatpp::data::stream::IOStream> getConnection() const
-

# AsyncWebSocket::setListener

Set socket event listener.

void setListener(const std::shared_ptr<Listener>& listener)
-

# AsyncWebSocket::getListener

Get socket event listener

std::shared_ptr<Listener> getListener()
-

# AsyncWebSocket::listenAsync

Start listening Coroutine.
Read incoming frames and call corresponding methods of listener. See AsyncWebSocket::setListener().

CoroutineStarter listenAsync()
-

# AsyncWebSocket::writeFrameHeaderAsync

Send custom frame to peer.
Use this method if you know what you are doing.

CoroutineStarter writeFrameHeaderAsync(const std::shared_ptr<Frame::Header>& frameHeader)
-

# AsyncWebSocket::sendFrameHeaderAsync

Send default frame to peer with fin, opcode and messageSize set.
Use this method if you know what you are doing.

CoroutineStarter sendFrameHeaderAsync(const std::shared_ptr<Frame::Header>& frameHeader, bool fin, v_uint8 opcode, v_int64 messageSize)
-

# AsyncWebSocket::sendOneFrameAsync

Send one frame message with custom fin and opcode.

CoroutineStarter sendOneFrameAsync(bool fin, v_uint8 opcode, const oatpp::String& message)
-

# AsyncWebSocket::sendCloseAsync

  1. Send close frame.
    CoroutineStarter sendCloseAsync(v_uint16 code, const oatpp::String& message)
    -
  2. Send close frame without message.
    CoroutineStarter sendCloseAsync()
    -

# AsyncWebSocket::sendPingAsync

Send ping frame.

CoroutineStarter sendPingAsync(const oatpp::String& message)
-

# AsyncWebSocket::sendPongAsync

Send pong frame.

CoroutineStarter sendPongAsync(const oatpp::String& message)
-

# AsyncWebSocket::sendOneFrameTextAsync

Send one frame text message.

CoroutineStarter sendOneFrameTextAsync(const oatpp::String& message)
-

# AsyncWebSocket::sendOneFrameBinaryAsync

Send one frame binary message.

CoroutineStarter sendOneFrameBinaryAsync(const oatpp::String& message)
-

# AsyncWebSocket::Listener

Listener for websocket events.

namespace oatpp { namespace websocket { 
-  class AsyncWebSocket : public oatpp::base::Countable, public std::enable_shared_from_this<AsyncWebSocket> {
-    class Listener {}
-  };
-}}
-

# Typedefs

Type Name Summary
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.
oatpp::async::CoroutineStarter CoroutineStarter Convenince typedef for oatpp::async::CoroutineStarter.
oatpp::websocket::AsyncWebSocket AsyncWebSocket Convenience typedef for oatpp::websocket::AsyncWebSocket.

# Methods

Return Type Name Summary
[none] ~Listener Default virtual destructor.
CoroutineStarter onPing Called when "ping" frame received
CoroutineStarter onPong Called when "pong" frame received
CoroutineStarter onClose Called when "close" frame received
CoroutineStarter readMessage Called when "text" or "binary" frame received.

# AsyncWebSocket::Listener::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# AsyncWebSocket::Listener::CoroutineStarter

Convenince typedef for oatpp::async::CoroutineStarter.

typedef oatpp::async::CoroutineStarter CoroutineStarter
-

# AsyncWebSocket::Listener::AsyncWebSocket

Convenience typedef for oatpp::websocket::AsyncWebSocket.

typedef oatpp::websocket::AsyncWebSocket AsyncWebSocket
-

# AsyncWebSocket::Listener::~Listener

Default virtual destructor.

virtual ~Listener() = default
-

# AsyncWebSocket::Listener::onPing

Called when "ping" frame received

virtual CoroutineStarter onPing(const std::shared_ptr<AsyncWebSocket>& socket, const oatpp::String& message) = 0
-

# AsyncWebSocket::Listener::onPong

Called when "pong" frame received

virtual CoroutineStarter onPong(const std::shared_ptr<AsyncWebSocket>& socket, const oatpp::String& message) = 0
-

# AsyncWebSocket::Listener::onClose

Called when "close" frame received

virtual CoroutineStarter onClose(const std::shared_ptr<AsyncWebSocket>& socket, v_uint16 code, const oatpp::String& message) = 0
-

# AsyncWebSocket::Listener::readMessage

Called when "text" or "binary" frame received.
When all data of message is read, readMessage is called again with size == 0 to indicate end of the message.

virtual CoroutineStarter readMessage(const std::shared_ptr<AsyncWebSocket>& socket, v_uint8 opcode, p_char8 data, oatpp::v_io_size size) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/Config/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/Config/index.html deleted file mode 100644 index 34e7bf5d2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/Config/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Config.hpp | Oat++ - - - - - - - -

# Config.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/Config.hpp"

# Config

WebSocket configuration data.

namespace oatpp { namespace websocket { 
-  class Config {}
-}}
-

# Fields

Type Name Summary
bool maskOutgoingMessages Mask outgoing messages payload.
If true - Outgoing messages will be masked with random 32-bit masking key.
For servers should be false. For clients should be true.
v_int32 readBufferSize Size of the read buffer in bytes.
Buffer used to read payload of the message.
The smaller is buffer the more iterations will be made in order to read the whole message.

# Config::maskOutgoingMessages

Mask outgoing messages payload.
If true - Outgoing messages will be masked with random 32-bit masking key.
For servers should be false. For clients should be true.

bool maskOutgoingMessages = false
-

# Config::readBufferSize

Size of the read buffer in bytes.
Buffer used to read payload of the message.
The smaller is buffer the more iterations will be made in order to read the whole message.

v_int32 readBufferSize = 1024
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/ConnectionHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/ConnectionHandler/index.html deleted file mode 100644 index c6f49d013..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/ConnectionHandler/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ConnectionHandler.hpp | Oat++ - - - - - - - -

# ConnectionHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/ConnectionHandler.hpp"

# ConnectionHandler

Websocket connection handler. Extends oatpp::network::ConnectionHandler.
Will create one thread per each connection to handle communication.

namespace oatpp { namespace websocket { 
-  class ConnectionHandler : public oatpp::base::Countable, public network::ConnectionHandler {}
-}}
-

# Methods

Return Type Name Summary
[none] ConnectionHandler Constructor.
std::shared_ptr<ConnectionHandler> createShared Create shared ConnectionHandler.
void setSocketInstanceListener Set socket instance listener.
void handleConnection Implementation of oatpp::network::ConnectionHandler::handleConnection().
void stop Implementation of oatpp::network::ConnectionHandler::stop().

# ConnectionHandler::ConnectionHandler

Constructor.

ConnectionHandler()
-

# ConnectionHandler::createShared

Create shared ConnectionHandler.

  • @return - std::shared_ptr to ConnectionHandler.

static std::shared_ptr<ConnectionHandler> createShared()
-

# ConnectionHandler::setSocketInstanceListener

Set socket instance listener.

void setSocketInstanceListener(const std::shared_ptr<SocketInstanceListener>& listener)
-

# ConnectionHandler::handleConnection

Implementation of oatpp::network::ConnectionHandler::handleConnection().

void handleConnection(const provider::ResourceHandle<IOStream>& connection, const std::shared_ptr<const ParameterMap>& params) override
-

# ConnectionHandler::stop

Implementation of oatpp::network::ConnectionHandler::stop(). Here does nothing.

void stop() override
-

# ConnectionHandler::SocketInstanceListener

Listener for new websocket instances.

namespace oatpp { namespace websocket { 
-  class ConnectionHandler : public oatpp::base::Countable, public network::ConnectionHandler {
-    class SocketInstanceListener {}
-  };
-}}
-

# Typedefs

Type Name Summary
oatpp::websocket::WebSocket WebSocket Convenience typedef fo oatpp::websocket::WebSocket.
oatpp::network::ConnectionHandler::ParameterMap ParameterMap Convenience typedef for oatpp::network::ConnectionHandler::ParameterMap.

# Methods

Return Type Name Summary
void onAfterCreate Called when socket is created
void onBeforeDestroy Called before socket instance is destroyed.

# ConnectionHandler::SocketInstanceListener::WebSocket

Convenience typedef fo oatpp::websocket::WebSocket.

typedef oatpp::websocket::WebSocket WebSocket
-

# ConnectionHandler::SocketInstanceListener::ParameterMap

Convenience typedef for oatpp::network::ConnectionHandler::ParameterMap.

typedef oatpp::network::ConnectionHandler::ParameterMap ParameterMap
-

# ConnectionHandler::SocketInstanceListener::onAfterCreate

Called when socket is created

virtual void onAfterCreate(const WebSocket& socket, const std::shared_ptr<const ParameterMap>& params) = 0
-

# ConnectionHandler::SocketInstanceListener::onBeforeDestroy

Called before socket instance is destroyed.

virtual void onBeforeDestroy(const WebSocket& socket) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/Connector/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/Connector/index.html deleted file mode 100644 index 4221d1bf6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/Connector/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - Connector.hpp | Oat++ - - - - - - - -

# Connector.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/Connector.hpp"

# Connector

Helper class to do client websocket connect.

namespace oatpp { namespace websocket { 
-  class Connector {}
-}}
-

# Typedefs

Type Name Summary
oatpp::data::stream::IOStream Connection Convenience typedef for oatpp::data::stream::IOStream.
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.
oatpp::web::protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.

# Methods

Return Type Name Summary
[none] Connector Constructor.
std::shared_ptr<Connector> createShared Create shared Connector.
provider::ResourceHandle<Connection> connect Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor.
CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> connectAsync Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor.

# Connector::Connection

Convenience typedef for oatpp::data::stream::IOStream.

typedef oatpp::data::stream::IOStream Connection
-

# Connector::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# Connector::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef oatpp::web::protocol::http::Headers Headers
-

# Connector::Connector

Constructor.

Connector(const std::shared_ptr<oatpp::network::ClientConnectionProvider>& connectionProvider)
-

# Connector::createShared

Create shared Connector.

static std::shared_ptr<Connector> createShared(const std::shared_ptr<oatpp::network::ClientConnectionProvider>& connectionProvider)
-

# Connector::connect

Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor.
(Blocking call)

  • @param path - path to websocket endpoint.
  • @param headers - websocket connect request headers.
  • @return - Connector::Connection.

provider::ResourceHandle<Connection> connect(const oatpp::String& path, const Headers& headers =
-

# Connector::connectAsync

Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor.
(Async call)

  • @param path - path to websocket endpoint.
  • @param headers - websocket connect request headers.
  • @return - oatpp::async::Action.

CoroutineStarterForResult<const provider::ResourceHandle<Connection>&> connectAsync(const oatpp::String& path, const Headers& headers =
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/Frame/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/Frame/index.html deleted file mode 100644 index ed8e2a5d2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/Frame/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - Frame.hpp | Oat++ - - - - - - - -

# Frame.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/Frame.hpp"

# Frame

WebSocket frame.

namespace oatpp { namespace websocket { 
-  class Frame {}
-}}
-

# Fields

Type Name Summary
v_uint8 OPCODE_CONTINUATION Continuation frame.
v_uint8 OPCODE_TEXT Text frame.
v_uint8 OPCODE_BINARY Binary frame.
v_uint8 OPCODE_CLOSE Close frame.
v_uint8 OPCODE_PING Ping frame.
v_uint8 OPCODE_PONG Pong frame.

# Methods

Return Type Name Summary
void packHeaderBits Serialize Frame::Header.
void unpackHeaderBits Deserialize Frame::Header.

# Frame::OPCODE_CONTINUATION

Continuation frame.

static constexpr v_uint8 OPCODE_CONTINUATION = 0x0
-

# Frame::OPCODE_TEXT

Text frame.

static constexpr v_uint8 OPCODE_TEXT = 0x1
-

# Frame::OPCODE_BINARY

Binary frame.

static constexpr v_uint8 OPCODE_BINARY = 0x2
-

# Frame::OPCODE_CLOSE

Close frame.

static constexpr v_uint8 OPCODE_CLOSE = 0x8
-

# Frame::OPCODE_PING

Ping frame.

static constexpr v_uint8 OPCODE_PING = 0x9
-

# Frame::OPCODE_PONG

Pong frame.

static constexpr v_uint8 OPCODE_PONG = 0xA
-

# Frame::packHeaderBits

Serialize Frame::Header.

  • @param bits - out parameter. Two bytes header.
  • @param frameHeader - Frame::Header.
  • @param messageLengthScenario - out parameter. Depending on message length scenario. Message length can be encoded in 1, 2, or 8 bytes.

static void packHeaderBits(v_uint16& bits, const Header& frameHeader, v_uint8& messageLengthScenario)
-

# Frame::unpackHeaderBits

Deserialize Frame::Header.

  • @param bits - two bytes header.
  • @param frameHeader - out parameter. Frame::Header.
  • @param messageLen1 - first byte of encoded message length.

static void unpackHeaderBits(v_uint16 bits, Header& frameHeader, v_uint8& messageLen1)
-

# Frame::Header

Frame header.

namespace oatpp { namespace websocket { 
-  class Frame {
-    struct Header {}
-  };
-}}
-

# Fields

Type Name Summary
bool fin FIN bit.
bool rsv1 RSV1 bit. Should be false.
bool rsv2 RSV2 bit. Should be false.
bool rsv3 RSV3 bit. Should be false.
v_uint8 opcode Operation code.
bool hasMask Mask bit. For client-to-server messages should be true. For server-to-client messages should be false.
v_int64 payloadLength Decoded payload length.
v_uint8 mask Payload mask.

# Frame::Header::fin

FIN bit.

bool fin
-

# Frame::Header::rsv1

RSV1 bit. Should be false.

bool rsv1
-

# Frame::Header::rsv2

RSV2 bit. Should be false.

bool rsv2
-

# Frame::Header::rsv3

RSV3 bit. Should be false.

bool rsv3
-

# Frame::Header::opcode

Operation code.

v_uint8 opcode
-

# Frame::Header::hasMask

Mask bit. For client-to-server messages should be true. For server-to-client messages should be false.

bool hasMask
-

# Frame::Header::payloadLength

Decoded payload length.

v_int64 payloadLength
-

# Frame::Header::mask

Payload mask.

v_uint8 mask[4] =
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/Handshaker/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/Handshaker/index.html deleted file mode 100644 index a34661a82..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/Handshaker/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - Handshaker.hpp | Oat++ - - - - - - - -

# Handshaker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/Handshaker.hpp"

# Handshaker

Helper class providing WebSocket handshake functionality.

namespace oatpp { namespace websocket { 
-  class Handshaker {}
-}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::outgoing::Response OutgoingResponse Convenience typedef for oatpp::web::protocol::http::outgoing::Response.
oatpp::web::protocol::http::incoming::Response IncomingResponse Convenience typedef for oatpp::web::protocol::http::incoming::Response.

# Fields

Type Name Summary
v_int32 STATUS_OK Handshake OK.
v_int32 STATUS_SERVER_ERROR Server response-code != 101.
v_int32 STATUS_SERVER_WRONG_KEY Server response "Sec-WebSocket-Accept" header is wrong.
v_int32 STATUS_UNKNOWN_PROTOCOL_SUGGESTED Server's response contains unexpected headers values

# Methods

Return Type Name Summary
std::shared_ptr<OutgoingResponse> serversideHandshake Prepare OutgoingResponse as for websocket-handshake based on requestHeaders.
void clientsideHandshake Set client request headers as for websocket-handshake.
v_int32 clientsideConfirmHandshake Check if client's handshake corresponds to server's handshake

# Handshaker::OutgoingResponse

Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse
-

# Handshaker::IncomingResponse

Convenience typedef for oatpp::web::protocol::http::incoming::Response.

typedef oatpp::web::protocol::http::incoming::Response IncomingResponse
-

# Handshaker::STATUS_OK

Handshake OK.

static constexpr v_int32 STATUS_OK = 0
-

# Handshaker::STATUS_SERVER_ERROR

Server response-code != 101.

static constexpr v_int32 STATUS_SERVER_ERROR = 1
-

# Handshaker::STATUS_SERVER_WRONG_KEY

Server response "Sec-WebSocket-Accept" header is wrong.

static constexpr v_int32 STATUS_SERVER_WRONG_KEY = 2
-

# Handshaker::STATUS_UNKNOWN_PROTOCOL_SUGGESTED

Server's response contains unexpected headers values

static constexpr v_int32 STATUS_UNKNOWN_PROTOCOL_SUGGESTED = 3
-

# Handshaker::serversideHandshake

Prepare OutgoingResponse as for websocket-handshake based on requestHeaders.

static std::shared_ptr<OutgoingResponse> serversideHandshake(const Headers& requestHeaders, const std::shared_ptr<ConnectionHandler>& connectionUpgradeHandler)
-

# Handshaker::clientsideHandshake

Set client request headers as for websocket-handshake.

static void clientsideHandshake(Headers& requestHeaders)
-

# Handshaker::clientsideConfirmHandshake

Check if client's handshake corresponds to server's handshake

static v_int32 clientsideConfirmHandshake(const Headers& clientHandshakeHeaders, const std::shared_ptr<IncomingResponse>& serverResponse)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/SHA1/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/SHA1/index.html deleted file mode 100644 index 1ab423503..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/SHA1/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - SHA1.hpp | Oat++ - - - - - - - -

# SHA1.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/SHA1.hpp"

# SHA1

SHA1 implementation needed for websocket handshake key.

namespace oatpp { namespace websocket { 
-  class SHA1 {}
-}}
-

# Methods

Return Type Name Summary
[none] SHA1 Constructor.
void update Multiple implementations:
  1. Update digest.
  2. Update digest from std::istream.
oatpp::String finalBinary Add padding and return the message digest.
oatpp::String fromFile Get digest of the file content.

# SHA1::SHA1

Constructor.

SHA1()
-

# SHA1::update

  1. Update digest.
    void update(const oatpp::String& s)
    -
  2. Update digest from std::istream.
    • @param is - std::istream.
    void update(std::istream& is)
    -

# SHA1::finalBinary

Add padding and return the message digest.

oatpp::String finalBinary()
-

# SHA1::fromFile

Get digest of the file content.

static oatpp::String fromFile(const oatpp::String& filename)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/Utils/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/Utils/index.html deleted file mode 100644 index 901d35df6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/Utils/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Utils.hpp | Oat++ - - - - - - - -

# Utils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/Utils.hpp"

# Utils

Collection of utility methods.

namespace oatpp { namespace websocket { 
-  class Utils {}
-}}
-

# Methods

Return Type Name Summary
void generateMaskForFrame Generate random mask for frame.
oatpp::String generateKey Generate "Sec-WebSocket-Key" header

# Utils::generateMaskForFrame

Generate random mask for frame.

static void generateMaskForFrame(Frame::Header& frameHeader)
-

# Utils::generateKey

Generate "Sec-WebSocket-Key" header

static oatpp::String generateKey()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-websocket/WebSocket/index.html b/docs/.vuepress/dist/api/latest/oatpp-websocket/WebSocket/index.html deleted file mode 100644 index 8882ef657..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-websocket/WebSocket/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - WebSocket.hpp | Oat++ - - - - - - - -

# WebSocket.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-websocket
#include "oatpp-websocket/WebSocket.hpp"

# WebSocket

WebSocket.

namespace oatpp { namespace websocket { 
-  class WebSocket : public oatpp::base::Countable {}
-}}
-

# Methods

Return Type Name Summary
void readPayload if(shortMessageStream == nullptr) - read call readMessage() method of listener
[none] WebSocket Multiple implementations:
  1. Constructor with Config.
  2. Constructor.
  3. Deleted copy-constructor.
std::shared_ptr<WebSocket> createShared Multiple implementations:
  1. Create shared WebSocket with Config.
  2. Create shared WebSocket.
void setConfig Set WebSocket config.
provider::ResourceHandle<oatpp::data::stream::IOStream> getConnection Get WebSocket connection.
void setListener Set WebSocket events listener.
std::shared_ptr<Listener> getListener Get socket event listener
void iterateFrame Read one frame from connection and call corresponding methods of listener.
void listen Blocks until stopListening() is called or error occurred
void stopListening Break listen loop. See WebSocket::listen().
void writeFrameHeader Send custom frame to peer.
void sendFrameHeader Send default frame to peer with fin, opcode and messageSize set.
bool sendOneFrame Send one frame message with custom fin and opcode.
void sendClose Multiple implementations:
  1. Send close frame.
  2. Send close frame without message.
void sendPing Send ping frame.
void sendPong Send pong message.
void sendOneFrameText Send one-frame text message.
void sendOneFrameBinary Send one-frame binary message.

# WebSocket::readPayload

if(shortMessageStream == nullptr) - read call readMessage() method of listener if(shortMessageStream) - read message to shortMessageStream. Don't call listener

void readPayload(const Frame::Header& frameHeader, oatpp::data::stream::BufferOutputStream* shortMessageStream) const
-

# WebSocket::WebSocket

  1. Constructor with Config.
    WebSocket(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, const Config& config)
    -
  2. Constructor.
    WebSocket(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, bool maskOutgoingMessages)
    -
  3. Deleted copy-constructor.
    WebSocket(const WebSocket&) = delete
    -

# WebSocket::createShared

  1. Create shared WebSocket with Config.
    static std::shared_ptr<WebSocket> createShared(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, const Config& config)
    -
  2. Create shared WebSocket.
    • @param connection - oatpp::data::stream::IOStream.
    • @param maskOutgoingMessages - for servers should be false. For clients should be true.
    • @return
    static std::shared_ptr<WebSocket> createShared(const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection, bool maskOutgoingMessages)
    -

# WebSocket::setConfig

Set WebSocket config.

void setConfig(const Config& config)
-

# WebSocket::getConnection

Get WebSocket connection.

provider::ResourceHandle<oatpp::data::stream::IOStream> getConnection() const
-

# WebSocket::setListener

Set WebSocket events listener.

void setListener(const std::shared_ptr<Listener>& listener) const
-

# WebSocket::getListener

Get socket event listener

std::shared_ptr<Listener> getListener() const
-

# WebSocket::iterateFrame

Read one frame from connection and call corresponding methods of listener.
Use this method if you know what you are doing.

void iterateFrame(Frame::Header& frameHeader)
-

# WebSocket::listen

Blocks until stopListening() is called or error occurred Read incoming frames and call corresponding methods of listener. See WebSocket::setListener().

void listen()
-

# WebSocket::stopListening

Break listen loop. See WebSocket::listen().

void stopListening() const
-

# WebSocket::writeFrameHeader

Send custom frame to peer.
Use this method if you know what you are doing.

void writeFrameHeader(const Frame::Header& frameHeader) const
-

# WebSocket::sendFrameHeader

Send default frame to peer with fin, opcode and messageSize set.
Use this method if you know what you are doing.

void sendFrameHeader(Frame::Header& frameHeader, bool fin, v_uint8 opcode, v_int64 messageSize) const
-

# WebSocket::sendOneFrame

Send one frame message with custom fin and opcode.

  • @param fin - FIN bit.
  • @param opcode - operation code.
  • @param message - message text. oatpp::String.
  • @return - true on success, false on error. if false returned socket should be closed manually.

bool sendOneFrame(bool fin, v_uint8 opcode, const oatpp::String& message) const
-

# WebSocket::sendClose

  1. Send close frame.
    • @param code - close message code.
    • @param message - message text. oatpp::String.
    • @throws - runtime_error.
    void sendClose(v_uint16 code, const oatpp::String& message) const
    -
  2. Send close frame without message.
    • @throws - runtime_error.
    void sendClose() const
    -

# WebSocket::sendPing

Send ping frame.

  • @param message - message text. oatpp::String.
  • @throws - runtime_error.

void sendPing(const oatpp::String& message) const
-

# WebSocket::sendPong

Send pong message.

  • @param message - message text. oatpp::String.
  • @throws - runtime_error.

void sendPong(const oatpp::String& message) const
-

# WebSocket::sendOneFrameText

Send one-frame text message.

  • @param message - message text. oatpp::String.
  • @throws - runtime_error.

void sendOneFrameText(const oatpp::String& message) const
-

# WebSocket::sendOneFrameBinary

Send one-frame binary message.

  • @param message - message text. oatpp::String.
  • @throws - runtime_error.

void sendOneFrameBinary(const oatpp::String& message) const
-

# WebSocket::Listener

Listener for websocket events.

namespace oatpp { namespace websocket { 
-  class WebSocket : public oatpp::base::Countable {
-    class Listener {}
-  };
-}}
-

# Typedefs

Type Name Summary
oatpp::websocket::WebSocket WebSocket Convenience typedef fo oatpp::websocket::WebSocket.

# Methods

Return Type Name Summary
[none] ~Listener Default virtual destructor.
void onPing Called when "ping" frame received
void onPong Called when "pong" frame received
void onClose Called when "close" frame received
void readMessage Called when "text" or "binary" frame received.

# WebSocket::Listener::WebSocket

Convenience typedef fo oatpp::websocket::WebSocket.

typedef oatpp::websocket::WebSocket WebSocket
-

# WebSocket::Listener::~Listener

Default virtual destructor.

virtual ~Listener() = default
-

# WebSocket::Listener::onPing

Called when "ping" frame received

virtual void onPing(const WebSocket& socket, const oatpp::String& message) = 0
-

# WebSocket::Listener::onPong

Called when "pong" frame received

virtual void onPong(const WebSocket& socket, const oatpp::String& message) = 0
-

# WebSocket::Listener::onClose

Called when "close" frame received

virtual void onClose(const WebSocket& socket, v_uint16 code, const oatpp::String& message) = 0
-

# WebSocket::Listener::readMessage

Called when "text" or "binary" frame received.
When all data of message is read, readMessage is called again with size == 0 to indicate end of the message.

virtual void readMessage(const WebSocket& socket, v_uint8 opcode, p_char8 data, oatpp::v_io_size size) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-zlib/EncoderProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp-zlib/EncoderProvider/index.html deleted file mode 100644 index d56faad7e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-zlib/EncoderProvider/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - EncoderProvider.hpp | Oat++ - - - - - - - -

# EncoderProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-zlib
#include "oatpp-zlib/EncoderProvider.hpp"

# DeflateEncoderProvider

EncoderProvider for "deflate" encoding.

namespace oatpp { namespace zlib { 
-  class DeflateEncoderProvider : public web::protocol::http::encoding::EncoderProvider {}
-}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked encoding.

# DeflateEncoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# DeflateEncoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked encoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-

# DeflateDecoderProvider

EncoderProvider for "deflate" decoding.

namespace oatpp { namespace zlib { 
-  class DeflateDecoderProvider : public web::protocol::http::encoding::EncoderProvider {}
-}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked decoding.

# DeflateDecoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# DeflateDecoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked decoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-

# GzipEncoderProvider

EncoderProvider for "gzip" encoding.

namespace oatpp { namespace zlib { 
-  class GzipEncoderProvider : public web::protocol::http::encoding::EncoderProvider {}
-}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked encoding.

# GzipEncoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# GzipEncoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked encoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-

# GzipDecoderProvider

EncoderProvider for "gzip" decoding.

namespace oatpp { namespace zlib { 
-  class GzipDecoderProvider : public web::protocol::http::encoding::EncoderProvider {}
-}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked decoding.

# GzipDecoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# GzipDecoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked decoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp-zlib/Processor/index.html b/docs/.vuepress/dist/api/latest/oatpp-zlib/Processor/index.html deleted file mode 100644 index 12183afb4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp-zlib/Processor/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - Processor.hpp | Oat++ - - - - - - - -

# Processor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp-zlib
#include "oatpp-zlib/Processor.hpp"

# DeflateEncoder

Deflate encoder.

namespace oatpp { namespace zlib { 
-  class DeflateEncoder : public oatpp::data::buffer::Processor {}
-}}
-

# Methods

Return Type Name Summary
[none] DeflateEncoder Constructor.
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# DeflateEncoder::DeflateEncoder

Constructor.

  • @param bufferSize
  • @param compressionLevel
  • @param useGzip

DeflateEncoder(v_buff_size bufferSize = 1024, bool gzip = false, v_int32 compressionLevel = Z_DEFAULT_COMPRESSION)
-

# DeflateEncoder::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

v_io_size suggestInputStreamReadSize() override
-

# DeflateEncoder::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

v_int32 iterate(data::buffer::InlineReadData& dataIn, data::buffer::InlineReadData& dataOut) override
-

# DeflateDecoder

Deflate decoder.

namespace oatpp { namespace zlib { 
-  class DeflateDecoder : public oatpp::data::buffer::Processor {}
-}}
-

# Methods

Return Type Name Summary
[none] DeflateDecoder Constructor.
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# DeflateDecoder::DeflateDecoder

Constructor.

  • @param bufferSize
  • @param gzip

DeflateDecoder(v_buff_size bufferSize = 1024, bool gzip = false)
-

# DeflateDecoder::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

v_io_size suggestInputStreamReadSize() override
-

# DeflateDecoder::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

v_int32 iterate(data::buffer::InlineReadData& dataIn, data::buffer::InlineReadData& dataOut) override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/algorithm/CRC/index.html b/docs/.vuepress/dist/api/latest/oatpp/algorithm/CRC/index.html deleted file mode 100644 index 64fb7d2b9..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/algorithm/CRC/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - CRC.hpp | Oat++ - - - - - - - -

# CRC.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/algorithm/CRC.hpp"

# CRC32

Implementation of CRC-32. Cyclic redundancy check algorithm.

namespace oatpp { namespace algorithm { 
-  class CRC32 {}
-}}
-

# Fields

Type Name Summary
const p_uint32 TABLE_04C11DB7 Precalculated table

# Methods

Return Type Name Summary
p_uint32 generateTable Generates v_uint32 table[256] for polynomial
v_uint32 calc Calculate CRC32 value for buffer of defined size

# CRC32::TABLE_04C11DB7

Precalculated table

static const p_uint32 TABLE_04C11DB7
-

# CRC32::generateTable

Generates v_uint32 table[256] for polynomial

static p_uint32 generateTable(v_uint32 poly)
-

# CRC32::calc

Calculate CRC32 value for buffer of defined size

  • @param buffer
  • @param size
  • @param crc
  • @param initValue
  • @param xorOut
  • @param table
  • @return - CRC32 value (v_uint32)

static v_uint32 calc(const void *buffer, v_buff_size size, v_uint32 crc = 0, v_uint32 initValue = 0xFFFFFFFF, v_uint32 xorOut = 0xFFFFFFFF, p_uint32 table = TABLE_04C11DB7)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_define/index.html deleted file mode 100644 index 1ac5c66ce..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_define/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - ApiClient_define.hpp | Oat++ - - - - - - - -

# ApiClient_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/ApiClient_define.hpp"

This file contains "defines" for ApiClient code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(ApiClient)
-...
-// Generated API-Calls.
-...
-#include OATPP_CODEGEN_END(ApiClient)
-

For details see:

# API_CLIENT_INIT

Codegen macoro to be used in classes extending oatpp::web::client::ApiClient to generate required fields/methods/constructors for ApiClient.

  • @param NAME - name of the ApiClient class.

#define API_CLIENT_INIT(NAME)
-

# API_CALL

Codegen macoro to be used in oatpp::web::client::ApiClient to generate REST API-Calls.

#define API_CALL(METHOD, PATH, ...)
-

# API_CALL_ASYNC

Codegen macro to be used in oatpp::web::client::ApiClient to generate Asynchronous REST API-Calls.

  • @param METHOD - Http method ("GET", "POST", "PUT", etc.)
  • @param PATH - Path to endpoint (without host)
  • @param NAME - Name of the generated method
  • @return - oatpp::async::CoroutineStarterForResult<const std::shared_ptr<oatpp::web::protocol::http::incoming::Response>>.

#define API_CALL_ASYNC(METHOD, PATH, ...)
-

# API_CALL_HEADERS

Codegen macro to add default headers to API_CALL

#define API_CALL_HEADERS(NAME)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_undef/index.html deleted file mode 100644 index f916d25ec..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiClient_undef/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - ApiClient_undef.hpp | Oat++ - - - - - - - -

# ApiClient_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/ApiClient_undef.hpp"

This file contains "undefs" for ApiClient code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(ApiClient)
-...
-// Generated API-Calls.
-...
-#include OATPP_CODEGEN_END(ApiClient)
-

For details see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_define/index.html deleted file mode 100644 index 7c8031a1d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_define/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - ApiController_define.hpp | Oat++ - - - - - - - -

# ApiController_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/ApiController_define.hpp"

This file contains "defines" for ApiController code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(ApiController)
-...
-// Generated Endpoints.
-...
-#include OATPP_CODEGEN_END(ApiController)
-

For details see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_undef/index.html deleted file mode 100644 index b83d58a5d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/ApiController_undef/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - ApiController_undef.hpp | Oat++ - - - - - - - -

# ApiController_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/ApiController_undef.hpp"

This file contains "undefs" for ApiController code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(ApiController)
-...
-// Generated Endpoints.
-...
-#include OATPP_CODEGEN_END(ApiController)
-

For details see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_define/index.html deleted file mode 100644 index 3974aa6a1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_define/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - DTO_define.hpp | Oat++ - - - - - - - -

# DTO_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/DTO_define.hpp"

This file contains "defines" for DTO code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(DTO)
-...
-// Generated Endpoints.
-...
-#include OATPP_CODEGEN_END(DTO)
-

For details see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_undef/index.html deleted file mode 100644 index d2d6777ee..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/DTO_undef/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - DTO_undef.hpp | Oat++ - - - - - - - -

# DTO_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/DTO_undef.hpp"

This file contains "undefs" for DTO code generating macro.
-Usage:

#include OATPP_CODEGEN_BEGIN(DTO)
-...
-// Generated Endpoints.
-...
-#include OATPP_CODEGEN_END(DTO)
-

For details see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_define/index.html deleted file mode 100644 index 2ce26c2cf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_define/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - DbClient_define.hpp | Oat++ - - - - - - - -

# DbClient_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/DbClient_define.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_undef/index.html deleted file mode 100644 index 5f7091965..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/DbClient_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - DbClient_undef.hpp | Oat++ - - - - - - - -

# DbClient_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/DbClient_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_define/index.html deleted file mode 100644 index b9b721f3d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_define/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - auth_define.hpp | Oat++ - - - - - - - -

# auth_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/auth_define.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_undef/index.html deleted file mode 100644 index 5e325d67c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/auth_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - auth_undef.hpp | Oat++ - - - - - - - -

# auth_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/auth_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_define/index.html deleted file mode 100644 index 7fea7e0bd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_define/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - base_define.hpp | Oat++ - - - - - - - -

# base_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/base_define.hpp"

# ENDPOINT

Codegen macoro to be used in oatpp::web::server::api::ApiController to generate Endpoint.

#define ENDPOINT(METHOD, PATH, ...)
-

# ENDPOINT_INTERCEPTOR

Endpoint interceptor

#define ENDPOINT_INTERCEPTOR(ENDPOINT_NAME, NAME)
-

# ENDPOINT_ASYNC

Codegen macoro to be used in oatpp::web::server::api::ApiController to generate Asynchronous Endpoint.

  • @param METHOD - Http method ("GET", "POST", "PUT", etc.).
  • @param PATH - Path to endpoint (without host).
  • @param NAME - Name of the generated method.
  • @return - oatpp::async::Action.

#define ENDPOINT_ASYNC(METHOD, PATH, NAME)
-

# ENDPOINT_ASYNC_INIT

Auxiliary codegen macro for ENDPOINT_ASYNC to generate correct constructor for Asynchronous Endpoint Coroutine. NAME - Name of the endpoint. Exact the same name as was passed to ENDPOINT_ASYNC macro.

#define ENDPOINT_ASYNC_INIT(NAME)
-

# ENDPOINT_INTERCEPTOR_ASYNC

Endpoint interceptor

#define ENDPOINT_INTERCEPTOR_ASYNC(ENDPOINT_NAME, NAME)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_undef/index.html deleted file mode 100644 index f0ef420e0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/base_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - base_undef.hpp | Oat++ - - - - - - - -

# base_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/base_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_define/index.html deleted file mode 100644 index e631fb430..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_define/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - bundle_define.hpp | Oat++ - - - - - - - -

# bundle_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/bundle_define.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_undef/index.html deleted file mode 100644 index e7713f42d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/bundle_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - bundle_undef.hpp | Oat++ - - - - - - - -

# bundle_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/bundle_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_define/index.html deleted file mode 100644 index 94f26610f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_define/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - cors_define.hpp | Oat++ - - - - - - - -

# cors_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/cors_define.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_undef/index.html deleted file mode 100644 index 074c9ece9..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/api_controller/cors_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - cors_undef.hpp | Oat++ - - - - - - - -

# cors_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/api_controller/cors_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_define/index.html deleted file mode 100644 index f40fae992..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_define/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - base_define.hpp | Oat++ - - - - - - - -

# base_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/dto/base_define.hpp"

# DTO_INIT

Codegen macoro to be used in classes extending oatpp::data::mapping::type::Object to generate required fields/methods/constructors for DTO object.

  • @param TYPE_NAME - name of the DTO class.
  • @param TYPE_EXTEND - name of the parent DTO class. If DTO extends oatpp::data::mapping::type::Object TYPE_EXETENDS should be Object.

#define DTO_INIT(TYPE_NAME, TYPE_EXTEND)
-

# DTO_FIELD

Codegen macro to generate fields of DTO object.

  • @param TYPE - type of the field.
  • @param NAME - name of the field.
  • @param QUALIFIER_NAME - additional (optional) field to specify serialized name of the field. If not specified it will be same as NAME.

#define DTO_FIELD(TYPE, ...)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_undef/index.html deleted file mode 100644 index 0bf9837fd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/base_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - base_undef.hpp | Oat++ - - - - - - - -

# base_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/dto/base_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_define/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_define/index.html deleted file mode 100644 index cc492af5b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_define/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - enum_define.hpp | Oat++ - - - - - - - -

# enum_define.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/dto/enum_define.hpp"

# VALUE

Enum entry value.

  • @param NAME - name of the enum. required.
  • @param ORDINAL_VALUE - corresponding ordinal value. required.
  • @param QUALIFIER - name qualifier to be used instead of the NAME. optional.
  • @param DESCRIPTION - description of the enum value. optional.

#define VALUE(NAME, ...)
-

# ENUM

Codegen macoro to generate oatpp mapping-enabled enum.

  • @param NAME - name of the enum. required.
  • @param UNDERLYING_TYPE - underlying ordinal type. required.
  • @param ... - enum values defined with VALUE(...). macro.

#define ENUM(NAME, ...)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_undef/index.html b/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_undef/index.html deleted file mode 100644 index 874cc4a6f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/codegen/dto/enum_undef/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - enum_undef.hpp | Oat++ - - - - - - - -

# enum_undef.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/codegen/dto/enum_undef.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/IODefinitions/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/IODefinitions/index.html deleted file mode 100644 index 1cd684ddd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/IODefinitions/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - IODefinitions.hpp | Oat++ - - - - - - - -

# IODefinitions.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/IODefinitions.hpp"

# [unknown]

Namespace: oatpp

Represents I/O handle (ex.: file descriptor).

#if defined(WIN32) || defined(_WIN32)
-  #if defined(_WIN64)
-    typedef unsigned long long v_io_handle
-

# isValidIOHandle

Namespace: oatpp

Check if IO handle is valid.

  • @param handle - IO handle.
  • @return - true if valid.

bool isValidIOHandle(v_io_handle handle)
-

# v_io_size

Namespace: oatpp

All I/O buffer operations (like read/write(buffer, size)) should return v_io_size.
Possible return values:

  • On Success - [1..max_int64].
  • On Error - IOError values.
All other values are considered to be a fatal error. application should be terminated.

typedef v_int64 v_io_size
-

# IOError

Final set of possible I/O operation error values. I/O operation should not return any other error values.

namespace oatpp { 
-  enum IOError : v_io_size;
-}
-

# IOError::ZERO_VALUE

In oatpp 0 is considered to be an Error as for I/O operation size.
As for argument value 0 should be handled separately of the main flow.
As for return value 0 should not be returned.
I/O method should return an error describing a reason why I/O is empty instead of a zero itself.
if zero is returned, client should treat it like a bad api implementation and as an error in the flow.

ZERO_VALUE = 0
-

# IOError::BROKEN_PIPE

I/O operation is not possible any more. Client should give up trying and free all related resources.

BROKEN_PIPE = -1001
-

# IOError::RETRY_READ

I/O operation was interrupted because of some reason. Client may retry read immediately.

RETRY_READ = -1002
-

# IOError::RETRY_WRITE

I/O operation was interrupted because of some reason. Client may retry immediately.

RETRY_WRITE = -1003
-

# AsyncIOError

Asynchronous I/O error.
Extends oatpp::async::Error.

namespace oatpp { 
-  class AsyncIOError : public oatpp::async::Error {}
-}
-

# Methods

Return Type Name Summary
[none] AsyncIOError Multiple implementations:
  1. Constructor.
  2. Constructor.
v_io_size getCode Get I/O opersation error code.

# AsyncIOError::AsyncIOError

  1. Constructor.
    • @param what - description of error type.
    • @param code - I/O opersation error code. IOError.
    AsyncIOError(const char* what, v_io_size code)
    -  : oatpp::async::Error(what)
    -  , m_code(code)
    -
  2. Constructor.
    • @param code - I/O opersation error code. IOError.
    AsyncIOError(v_io_size code)
    -  : oatpp::async::Error("AsyncIOError")
    -  , m_code(code)
    -

# AsyncIOError::getCode

Get I/O opersation error code.

  • @return - I/O opersation error code. IOError.

v_io_size getCode() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/Types/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/Types/index.html deleted file mode 100644 index 88542f39d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/Types/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Types.hpp | Oat++ - - - - - - - -

# Types.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/Types.hpp"

# Type

Namespace: oatpp

oatpp::data::mapping::type::Type.

typedef oatpp::data::mapping::type::Type Type
-

# ClassId

Namespace: oatpp

oatpp::data::mapping::type::ClassId.

typedef oatpp::data::mapping::type::ClassId ClassId
-

# ObjectWrapper

Namespace: oatpp

ObjectWrapper.

template <class T, class Clazz = oatpp::data::mapping::type::__class::Void>
-using ObjectWrapper = oatpp::data::mapping::type::ObjectWrapper<T, Clazz>
-

# Void

Namespace: oatpp

ObjectWrapper over the void*.

typedef oatpp::data::mapping::type::Void Void
-

# Any

Namespace: oatpp

Any - container for mapping-enabled types. oatpp::data::mapping::type::Any

typedef oatpp::data::mapping::type::Any Any
-

# String

Namespace: oatpp

Mapping-Enabled String type. oatpp::data::mapping::type::String
For oatpp::String methods see std::string

typedef oatpp::data::mapping::type::String String
-

# Int8

Namespace: oatpp

Mapping-Enabled 8-bits int. Can hold nullptr value. oatpp::data::mapping::type::Int8

typedef oatpp::data::mapping::type::Int8 Int8
-

# UInt8

Namespace: oatpp

Mapping-Enabled 8-bits unsigned int. Can hold nullptr value. oatpp::data::mapping::type::UInt8

typedef oatpp::data::mapping::type::UInt8 UInt8
-

# Int16

Namespace: oatpp

Mapping-Enabled 16-bits int. Can hold nullptr value. oatpp::data::mapping::type::Int16

typedef oatpp::data::mapping::type::Int16 Int16
-

# UInt16

Namespace: oatpp

Mapping-Enabled 16-bits unsigned int. Can hold nullptr value. oatpp::data::mapping::type::UInt16

typedef oatpp::data::mapping::type::UInt16 UInt16
-

# Int32

Namespace: oatpp

Mapping-Enabled 32-bits int. Can hold nullptr value. oatpp::data::mapping::type::Int32

typedef oatpp::data::mapping::type::Int32 Int32
-

# UInt32

Namespace: oatpp

Mapping-Enabled 32-bits unsigned int. Can hold nullptr value. oatpp::data::mapping::type::UInt32

typedef oatpp::data::mapping::type::UInt32 UInt32
-

# Int64

Namespace: oatpp

Mapping-Enabled 64-bits int. Can hold nullptr value. oatpp::data::mapping::type::Int64

typedef oatpp::data::mapping::type::Int64 Int64
-

# UInt64

Namespace: oatpp

Mapping-Enabled 64-bits unsigned int. Can hold nullptr value. oatpp::data::mapping::type::UInt64

typedef oatpp::data::mapping::type::UInt64 UInt64
-

# Float32

Namespace: oatpp

Mapping-Enabled 32-bits float. Can hold nullptr value. oatpp::data::mapping::type::Float32

typedef oatpp::data::mapping::type::Float32 Float32
-

# Float64

Namespace: oatpp

Mapping-Enabled 64-bits float (double). Can hold nullptr value. oatpp::data::mapping::type::Float64

typedef oatpp::data::mapping::type::Float64 Float64
-

# Boolean

Namespace: oatpp

Mapping-Enabled Boolean. Can hold nullptr value. oatpp::data::mapping::type::Boolean

typedef oatpp::data::mapping::type::Boolean Boolean
-

# BaseObject

Namespace: oatpp

Base class for all Object-like Mapping-enabled structures. oatpp::data::mapping::type::BaseObject

typedef oatpp::data::mapping::type::BaseObject BaseObject
-

# DTO

Namespace: oatpp

Base class for all DTO objects. oatpp::data::mapping::type::DTO

typedef oatpp::data::mapping::type::DTO DTO
-

# Object

Namespace: oatpp

Mapping-Enabled DTO Object. oatpp::data::mapping::type::DTOWrapper

template <class T>
-using Object = oatpp::data::mapping::type::DTOWrapper<T>
-

# Enum

Namespace: oatpp

Mapping-Enabled Enum. oatpp::data::mapping::type::Enum

template <class T>
-using Enum = oatpp::data::mapping::type::Enum<T>
-

# Vector

Namespace: oatpp

Mapping-Enabled Vector. oatpp::data::mapping::type::Vector

template <class T>
-using Vector = oatpp::data::mapping::type::Vector<T>
-

# AbstractVector

Namespace: oatpp

Abstract Vector.

typedef oatpp::data::mapping::type::AbstractVector AbstractVector
-

# List

Namespace: oatpp

Mapping-Enabled List. oatpp::data::mapping::type::List

template <class T>
-using List = oatpp::data::mapping::type::List<T>
-

# AbstractList

Namespace: oatpp

Abstract List.

typedef oatpp::data::mapping::type::AbstractList AbstractList
-

# UnorderedSet

Namespace: oatpp

Mapping-Enabled UnorderedSet. oatpp::data::mapping::type::UnorderedSet

template <class T>
-using UnorderedSet = oatpp::data::mapping::type::UnorderedSet<T>
-

# AbstractUnorderedSet

Namespace: oatpp

Abstract UnorderedSet.

typedef oatpp::data::mapping::type::AbstractUnorderedSet AbstractUnorderedSet
-

# PairList

Namespace: oatpp

Mapping-Enabled PairList<Key, Value>. oatpp::data::mapping::type::PairList

template <class Key, class Value>
-using PairList = oatpp::data::mapping::type::PairList<Key, Value>
-

# Fields

Namespace: oatpp

Mapping-Enabled PairList<String, Value>. oatpp::data::mapping::type::PairList

template <class Value>
-using Fields = oatpp::PairList<String, Value>
-

# AbstractFields

Namespace: oatpp

Abstract Fields

typedef Fields<oatpp::Void> AbstractFields
-

# UnorderedMap

Namespace: oatpp

Mapping-Enabled UnorderedMap<Key, Value>. oatpp::data::mapping::type::UnorderedMap.

template <class Key, class Value>
-using UnorderedMap = oatpp::data::mapping::type::UnorderedMap<Key, Value>
-

# UnorderedFields

Namespace: oatpp

Mapping-Enabled UnorderedMap<String, Value>. oatpp::data::mapping::type::UnorderedMap.

template <class Value>
-using UnorderedFields = oatpp::UnorderedMap<String, Value>
-

# AbstractUnorderedFields

Namespace: oatpp

Abstract UnorderedFields

typedef UnorderedFields<oatpp::Void> AbstractUnorderedFields
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/Coroutine/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/Coroutine/index.html deleted file mode 100644 index 74891a040..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/Coroutine/index.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - Coroutine.hpp | Oat++ - - - - - - - -

# Coroutine.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/Coroutine.hpp"

# Action

Class Action represents an asynchronous action.

namespace oatpp { namespace async { 
-  class Action {}
-}}
-

# Fields

Type Name Summary
const v_int32 TYPE_NONE None - invalid Action.
const v_int32 TYPE_COROUTINE Indicate that Action is to start coroutine.
const v_int32 TYPE_YIELD_TO Indicate that Action is to YIELD control to other method of Coroutine.
const v_int32 TYPE_REPEAT Indicate that Action is to REPEAT call to current method of Coroutine.
const v_int32 TYPE_WAIT_REPEAT Indicate that Action is to WAIT for some time and then REPEAT call to current method of Coroutine.
const v_int32 TYPE_IO_WAIT Indicate that Action is waiting for IO and should be assigned to corresponding worker.
const v_int32 TYPE_IO_REPEAT Indicate that Action is to repeat previously successful I/O operation.
const v_int32 TYPE_FINISH Indicate that Action is to FINISH current Coroutine and return control to a caller-Coroutine.
const v_int32 TYPE_ERROR Indicate that Error occurred.
const v_int32 TYPE_WAIT_LIST Indicate that coroutine should be put on a wait-list provided.
const v_int32 TYPE_WAIT_LIST_WITH_TIMEOUT Indicate that coroutine should be put on a wait-list provided with a timeout.
const v_int32 CODE_IO_WAIT_READ Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.
const v_int32 CODE_IO_WAIT_WRITE Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.
const v_int32 CODE_IO_WAIT_RESCHEDULE Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.
const v_int32 CODE_IO_REPEAT_READ Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.
const v_int32 CODE_IO_REPEAT_WRITE Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.
const v_int32 CODE_IO_REPEAT_RESCHEDULE Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.

# Methods

Return Type Name Summary
[none] Action Multiple implementations:
  1. Default constructor.
  2. Constructor. Create start-coroutine Action.
  3. Constructor. Create yield_to Action.
  4. Constructor. Create Error Action.
  5. Deleted copy-constructor.
  6. Move-constructor.
Action clone Clone action.
Action createActionByType Create action of specific type
Action createIOWaitAction Create TYPE_IO_WAIT Action
Action createIORepeatAction Create TYPE_IO_REPEAT Action
Action createWaitRepeatAction Create TYPE_WAIT_REPEAT Action.
Action createWaitListAction Create TYPE_WAIT_LIST Action.
Action createWaitListActionWithTimeout Create TYPE_WAIT_LIST_WITH_TIMEOUT Action.
[none] ~Action Non-virtual destructor.
bool isError Check if action is an error reporting action.
bool isNone Check if action is of TYPE_NONE.
v_int32 getType Get Action type.
v_int64 getTimePointMicroseconds Get microseconds tick when timer should call coroutine again.
oatpp::v_io_handle getIOHandle Get I/O handle which is passed with this action to I/O worker.
IOEventType getIOEventType This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT.
v_int32 getIOEventCode Convenience method to get I/O Event code.

# Action::TYPE_NONE

None - invalid Action.

static constexpr const v_int32 TYPE_NONE = 0
-

# Action::TYPE_COROUTINE

Indicate that Action is to start coroutine.

static constexpr const v_int32 TYPE_COROUTINE = 1
-

# Action::TYPE_YIELD_TO

Indicate that Action is to YIELD control to other method of Coroutine.

static constexpr const v_int32 TYPE_YIELD_TO = 2
-

# Action::TYPE_REPEAT

Indicate that Action is to REPEAT call to current method of Coroutine.

static constexpr const v_int32 TYPE_REPEAT = 3
-

# Action::TYPE_WAIT_REPEAT

Indicate that Action is to WAIT for some time and then REPEAT call to current method of Coroutine.

static constexpr const v_int32 TYPE_WAIT_REPEAT = 4
-

# Action::TYPE_IO_WAIT

Indicate that Action is waiting for IO and should be assigned to corresponding worker.

static constexpr const v_int32 TYPE_IO_WAIT = 5
-

# Action::TYPE_IO_REPEAT

Indicate that Action is to repeat previously successful I/O operation.

static constexpr const v_int32 TYPE_IO_REPEAT = 6
-

# Action::TYPE_FINISH

Indicate that Action is to FINISH current Coroutine and return control to a caller-Coroutine.

static constexpr const v_int32 TYPE_FINISH = 7
-

# Action::TYPE_ERROR

Indicate that Error occurred.

static constexpr const v_int32 TYPE_ERROR = 8
-

# Action::TYPE_WAIT_LIST

Indicate that coroutine should be put on a wait-list provided.

static constexpr const v_int32 TYPE_WAIT_LIST = 9
-

# Action::TYPE_WAIT_LIST_WITH_TIMEOUT

Indicate that coroutine should be put on a wait-list provided with a timeout.

static constexpr const v_int32 TYPE_WAIT_LIST_WITH_TIMEOUT = 10
-

# Action::CODE_IO_WAIT_READ

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.

static constexpr const v_int32 CODE_IO_WAIT_READ = TYPE_IO_WAIT | IOEventType::IO_EVENT_READ
-

# Action::CODE_IO_WAIT_WRITE

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.

static constexpr const v_int32 CODE_IO_WAIT_WRITE = TYPE_IO_WAIT | IOEventType::IO_EVENT_WRITE
-

# Action::CODE_IO_WAIT_RESCHEDULE

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.

static constexpr const v_int32 CODE_IO_WAIT_RESCHEDULE = TYPE_IO_WAIT | IOEventType::IO_EVENT_READ | IOEventType::IO_EVENT_WRITE
-

# Action::CODE_IO_REPEAT_READ

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.

static constexpr const v_int32 CODE_IO_REPEAT_READ = TYPE_IO_REPEAT | IOEventType::IO_EVENT_READ
-

# Action::CODE_IO_REPEAT_WRITE

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.

static constexpr const v_int32 CODE_IO_REPEAT_WRITE = TYPE_IO_REPEAT | IOEventType::IO_EVENT_WRITE
-

# Action::CODE_IO_REPEAT_RESCHEDULE

Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.

static constexpr const v_int32 CODE_IO_REPEAT_RESCHEDULE = TYPE_IO_REPEAT | IOEventType::IO_EVENT_READ | IOEventType::IO_EVENT_WRITE
-

# Action::Action

  1. Default constructor.
    Action()
    -
  2. Constructor. Create start-coroutine Action.
    Action(AbstractCoroutine* coroutine)
    -
  3. Constructor. Create yield_to Action.
    • @param functionPtr - pointer to function.
    Action(const FunctionPtr& functionPtr)
    -
  4. Constructor. Create Error Action.
    Action(Error* error)
    -
  5. Deleted copy-constructor.
    Action(const Action&) = delete
    -
  6. Move-constructor.
    • @param other
    Action(Action&& other)
    -

# Action::clone

Clone action.

  • @param action - action to clone.
  • @return - cloned action.

static Action clone(const Action& action)
-

# Action::createActionByType

Create action of specific type

  • @param type
  • @return

static Action createActionByType(v_int32 type)
-

# Action::createIOWaitAction

Create TYPE_IO_WAIT Action

  • @param ioHandle - oatpp::v_io_handle.
  • @return - Action.

static Action createIOWaitAction(v_io_handle ioHandle, IOEventType ioEventType)
-

# Action::createIORepeatAction

Create TYPE_IO_REPEAT Action

  • @param ioHandle - oatpp::v_io_handle.
  • @return - Action.

static Action createIORepeatAction(v_io_handle ioHandle, IOEventType ioEventType)
-

# Action::createWaitRepeatAction

Create TYPE_WAIT_REPEAT Action.

  • @param timePointMicroseconds - time since epoch.
  • @return - Action.

static Action createWaitRepeatAction(v_int64 timePointMicroseconds)
-

# Action::createWaitListAction

Create TYPE_WAIT_LIST Action.

  • @param waitList - wait-list to put coroutine on.
  • @return - Action.

static Action createWaitListAction(CoroutineWaitList* waitList)
-

# Action::createWaitListActionWithTimeout

Create TYPE_WAIT_LIST_WITH_TIMEOUT Action.

  • @param waitList - wait-list to put coroutine on.
  • @param timeout - latest time point at which the coroutine should be continued.
  • @return - Action.

static Action createWaitListActionWithTimeout(CoroutineWaitList* waitList, const std::chrono::steady_clock::time_point& timeout)
-

# Action::~Action

Non-virtual destructor.

~Action()
-

# Action::isError

Check if action is an error reporting action.

  • @return true if action is an error reporting action.

bool isError() const
-

# Action::isNone

Check if action is of TYPE_NONE.

  • @return

bool isNone() const
-

# Action::getType

Get Action type.

  • @return - action type.

v_int32 getType() const
-

# Action::getTimePointMicroseconds

Get microseconds tick when timer should call coroutine again. This method returns meaningful value only if Action is TYPE_WAIT_REPEAT.

  • @return - microseconds tick.

v_int64 getTimePointMicroseconds() const
-

# Action::getIOHandle

Get I/O handle which is passed with this action to I/O worker. This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT.

  • @return - oatpp::v_io_handle.

oatpp::v_io_handle getIOHandle() const
-

# Action::getIOEventType

This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT.

  • @return - should return one of

IOEventType getIOEventType() const
-

# Action::getIOEventCode

Convenience method to get I/O Event code.

  • @return - getType() | getIOEventType().

v_int32 getIOEventCode() const
-

# Action::IOEventType

Event type qualifier for Actions of type Action::TYPE_IO_WAIT, Action::TYPE_IO_REPEAT.

namespace oatpp { namespace async { 
-  class Action {}
-}}
-

# Action::IOEventType::IO_EVENT_READ

IO event type READ.

IO_EVENT_READ = 256
-

# Action::IOEventType::IO_EVENT_WRITE

IO event type WRITE.

IO_EVENT_WRITE = 512
-

# CoroutineStarter

CoroutineStarter of Coroutine calls.

namespace oatpp { namespace async { 
-  class CoroutineStarter {}
-}}
-

# Methods

Return Type Name Summary
[none] CoroutineStarter Multiple implementations:
  1. Constructor.
  2. Deleted copy-constructor.
  3. Move constructor.
[none] ~CoroutineStarter Non-virtual destructor.
Action next Multiple implementations:
  1. Set final starter action.
  2. Pipeline coroutine starter.

# CoroutineStarter::CoroutineStarter

  1. Constructor.
    • @param coroutine - coroutine.
    CoroutineStarter(AbstractCoroutine* coroutine)
    -
  2. Deleted copy-constructor.
    CoroutineStarter(const CoroutineStarter&) = delete
    -
  3. Move constructor.
    • @param other - other starter.
    CoroutineStarter(CoroutineStarter&& other)
    -

# CoroutineStarter::~CoroutineStarter

Non-virtual destructor.

~CoroutineStarter()
-

# CoroutineStarter::next

  1. Set final starter action.
    Action next(Action&& action)
    -
  2. Pipeline coroutine starter.
    • @param starter - starter to add.
    • @return - this starter.
    CoroutineStarter& next(CoroutineStarter&& starter)
    -

# CoroutineHandle

This class manages coroutines processing state and a chain of coroutine calls.

namespace oatpp { namespace async { 
-  class CoroutineHandle : public oatpp::base::Countable {}
-}}
-

# AbstractCoroutine

Abstract Coroutine. Base class for Coroutines. It provides state management, coroutines stack management and error reporting functionality.

namespace oatpp { namespace async { 
-  class AbstractCoroutine : public oatpp::base::Countable {}
-}}
-

# Typedefs

Type Name Summary
oatpp::async::Action Action Convenience typedef for Action

# Methods

Return Type Name Summary
[none] AbstractCoroutine Constructor.
[none] ~AbstractCoroutine Virtual Destructor
Action act Entrypoint of Coroutine.
Action call Call function of Coroutine specified by ptr.
Action handleError Default implementation of handleError(error) function.
AbstractCoroutine* getParent Get parent coroutine
Action repeat Convenience method to generate Action of type == Action::TYPE_REPEAT.
Action waitRepeat Convenience method to generate Action of type == Action::TYPE_WAIT_REPEAT.
CoroutineStarter waitFor Wait asynchronously for the specified time.
Action ioWait Convenience method to generate Action of type == Action::TYPE_IO_WAIT.
Action ioRepeat Convenience method to generate Action of type == Action::TYPE_IO_WAIT.
Action error Multiple implementations:
  1. Convenience method to generate error reporting Action.
  2. Convenience method to generate error reporting Action.

# AbstractCoroutine::Action

Convenience typedef for Action

typedef oatpp::async::Action Action
-

# AbstractCoroutine::AbstractCoroutine

Constructor.

AbstractCoroutine()
-

# AbstractCoroutine::~AbstractCoroutine

Virtual Destructor

virtual ~AbstractCoroutine() = default
-

# AbstractCoroutine::act

Entrypoint of Coroutine.

  • @return - Action

virtual Action act() = 0
-

# AbstractCoroutine::call

Call function of Coroutine specified by ptr.
This method is called from iterate().
Coroutine keeps track of function ptr and calls corresponding function on each iteration. When Coroutine starts, function ptr points to act().

  • @param ptr - pointer of the function to call.
  • @return - Action.

virtual Action call(const FunctionPtr& ptr) = 0
-

# AbstractCoroutine::handleError

Default implementation of handleError(error) function. User may override this function in order to handle errors.

  • @param error - oatpp::async::Error.
  • @return - Action. If handleError function returns Error, current coroutine will finish, return control to caller coroutine and handleError is called for caller coroutine.

virtual Action handleError(Error* error)
-

# AbstractCoroutine::getParent

Get parent coroutine

  • @return - pointer to a parent coroutine

AbstractCoroutine* getParent() const
-

# AbstractCoroutine::repeat

Convenience method to generate Action of type == Action::TYPE_REPEAT.

  • @return - repeat Action.

static Action repeat()
-

# AbstractCoroutine::waitRepeat

Convenience method to generate Action of type == Action::TYPE_WAIT_REPEAT.

  • @return - TYPE_WAIT_REPEAT Action.

static Action waitRepeat(const std::chrono::duration<v_int64, std::micro>& timeout)
-

# AbstractCoroutine::waitFor

Wait asynchronously for the specified time.

  • @return - repeat Action.

CoroutineStarter waitFor(const std::chrono::duration<v_int64, std::micro>& timeout)
-

# AbstractCoroutine::ioWait

Convenience method to generate Action of type == Action::TYPE_IO_WAIT.

  • @return - TYPE_WAIT_FOR_IO Action.

static Action ioWait(v_io_handle ioHandle, Action::IOEventType ioEventType)
-

# AbstractCoroutine::ioRepeat

Convenience method to generate Action of type == Action::TYPE_IO_WAIT.

  • @return - TYPE_IO_REPEAT Action.

static Action ioRepeat(v_io_handle ioHandle, Action::IOEventType ioEventType)
-

# AbstractCoroutine::error

  1. Convenience method to generate error reporting Action.
    • @param error - oatpp:async::Error.
    • @return - error reporting Action.
    static Action error(Error* error)
    -
  2. Convenience method to generate error reporting Action.
    • @tparam E - Error class type.
    • @tparam Args - Error constructor arguments.
    • @param args - actual error constructor arguments.
    • @return - error reporting oatpp::async::Action.
    template<class E, typename ... Args>
    -Action error(Args... args)
    -

# Coroutine

Coroutine template.
Example usage:
class MyCoroutine : public oatpp::async::Coroutine<MyCoroutine>

  • @tparam T - child class type

namespace oatpp { namespace async { 
-  template<class T>
-  class Coroutine : public AbstractCoroutine {}
-}}
-

# Methods

Return Type Name Summary
CoroutineStarter start Create coroutine and return it's starter
Action call Call function of Coroutine specified by ptr.
Action yieldTo Convenience method to generate Action of type == Action::TYPE_YIELD_TO.
Action finish Convenience method to generate Action of type == Action::TYPE_FINISH.

# Coroutine::start

Create coroutine and return it's starter

  • @tparam ConstructorArgs - coroutine constructor arguments.
  • @param args - actual coroutine constructor arguments.
  • @return - oatpp::async::CoroutineStarter.

template<typename ...ConstructorArgs>
-static CoroutineStarter start(ConstructorArgs&&... args)
-

# Coroutine::call

Call function of Coroutine specified by ptr.
Overridden AbstractCoroutine::call() method.

  • @param ptr - pointer of the function to call.
  • @return - Action.

Action call(const FunctionPtr& ptr) override
-

# Coroutine::yieldTo

Convenience method to generate Action of type == Action::TYPE_YIELD_TO.

  • @param function - pointer to function.
  • @return - yield Action.

Action yieldTo(const Function& function) const
-

# Coroutine::finish

Convenience method to generate Action of type == Action::TYPE_FINISH.

  • @return - finish Action.

Action finish() const
-

# AbstractCoroutineWithResult

Abstract coroutine with result.

namespace oatpp { namespace async { 
-  template<typename ...Args>
-  class AbstractCoroutineWithResult : public AbstractCoroutine {}
-}}
-

# AbstractCoroutineWithResult::StarterForResult

Class representing Coroutine call for result;

namespace oatpp { namespace async { 
-  template<typename ...Args>
-  class AbstractCoroutineWithResult : public AbstractCoroutine {
-    class StarterForResult {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] StarterForResult Multiple implementations:
  1. Constructor.
  2. Deleted copy-constructor.
  3. Move constructor.
[none] ~StarterForResult Non-virtual destructor.
Action callbackTo Set callback for result and return coroutine starting Action.

# AbstractCoroutineWithResult::StarterForResult::StarterForResult

  1. Constructor.
    • @param coroutine - coroutine.
    StarterForResult(AbstractCoroutineWithResult* coroutine)
    -  : m_coroutine(coroutine)
    -
  2. Deleted copy-constructor.
    StarterForResult(const StarterForResult&) = delete
    -
  3. Move constructor.
    • @param other - other starter.
    StarterForResult(StarterForResult&& other)
    -  : m_coroutine(other.m_coroutine)
    -

# AbstractCoroutineWithResult::StarterForResult::~StarterForResult

Non-virtual destructor.

~StarterForResult()
-

# AbstractCoroutineWithResult::StarterForResult::callbackTo

Set callback for result and return coroutine starting Action.

  • @tparam C - caller coroutine type.
  • @tparam Args - callback params.
  • @param callback - callback to obtain result.
  • @return - oatpp::async::Action.

template<typename C>
-Action callbackTo(Action (C::*callback)(Args...))
-

# CoroutineWithResult

Coroutine with result template.
Example usage:
class CoroutineWithResult : public oatpp::async::CoroutineWithResult<CoroutineWithResult, const char*>

  • @tparam T - child class type.
  • @tparam Args - return argumet type.

namespace oatpp { namespace async { 
-  template<class T, typename ...Args>
-  class CoroutineWithResult : public AbstractCoroutineWithResult<Args...> {}
-}}
-

# Methods

Return Type Name Summary
CoroutineStarterForResult<Args...> startForResult Call coroutine for result.
Action call Call function of Coroutine specified by ptr.
Action yieldTo Convenience method to generate Action of type == Action::TYPE_YIELD_TO.
Action _return Call caller's Callback passing returned value, and generate Action of type == Action::TYPE_FINISH.

# CoroutineWithResult::startForResult

Call coroutine for result.

template<typename ...ConstructorArgs>
-static CoroutineStarterForResult<Args...> startForResult(ConstructorArgs... args)
-

# CoroutineWithResult::call

Call function of Coroutine specified by ptr.
Overridden AbstractCoroutine::call() method.

  • @param ptr - pointer of the function to call.
  • @return - Action.

Action call(const AbstractCoroutine::FunctionPtr& ptr) override
-

# CoroutineWithResult::yieldTo

Convenience method to generate Action of type == Action::TYPE_YIELD_TO.

  • @param function - pointer to function.
  • @return - yield Action.

Action yieldTo(const Function& function) const
-

# CoroutineWithResult::_return

Call caller's Callback passing returned value, and generate Action of type == Action::TYPE_FINISH.

  • @param args - argumets to be passed to callback.
  • @return - finish Action.

Action _return(const Args&... args)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/CoroutineWaitList/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/CoroutineWaitList/index.html deleted file mode 100644 index 6f2ffd062..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/CoroutineWaitList/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - CoroutineWaitList.hpp | Oat++ - - - - - - - -

# CoroutineWaitList.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/CoroutineWaitList.hpp"

# CoroutineWaitList

List of oatpp::async::Coroutine waiting to be notified.

namespace oatpp { namespace async { 
-  class CoroutineWaitList {}
-}}
-

# Methods

Return Type Name Summary
[none] CoroutineWaitList Multiple implementations:
  1. Deleted copy-constructor.
  2. Default constructor.
  3. Move-constructor.
[none] ~CoroutineWaitList Virtual destructor.
void setListener Set wait list listener.
void notifyFirst Put first-in-list coroutine back to its processor.
void notifyAll Put all coroutines back to its processors and clear wait-list.

# CoroutineWaitList::CoroutineWaitList

  1. Deleted copy-constructor.
    • @param other
    CoroutineWaitList(const CoroutineWaitList&) = delete
    -
  2. Default constructor.
    CoroutineWaitList() = default
    -
  3. Move-constructor.
    • @param other
    CoroutineWaitList(CoroutineWaitList&& other)
    -

# CoroutineWaitList::~CoroutineWaitList

Virtual destructor. Will call notifyAllAndClear().

virtual ~CoroutineWaitList()
-

# CoroutineWaitList::setListener

Set wait list listener.
Listener will be called when processor puts coroutine on a wait-list.

  • @param listener

void setListener(Listener* listener)
-

# CoroutineWaitList::notifyFirst

Put first-in-list coroutine back to its processor.

void notifyFirst()
-

# CoroutineWaitList::notifyAll

Put all coroutines back to its processors and clear wait-list.

void notifyAll()
-

# CoroutineWaitList::Listener

Listener for new items in the wait-list.

namespace oatpp { namespace async { 
-  class CoroutineWaitList {
-    class Listener {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] ~Listener Default virtual destructor.
void onNewItem Called when new item is pushed to the list.

# CoroutineWaitList::Listener::~Listener

Default virtual destructor.

virtual ~Listener() = default
-

# CoroutineWaitList::Listener::onNewItem

Called when new item is pushed to the list.

  • @param list - list where new item was pushed to.

virtual void onNewItem(CoroutineWaitList& list) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/Error/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/Error/index.html deleted file mode 100644 index 07d0194e3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/Error/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - Error.hpp | Oat++ - - - - - - - -

# Error.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/Error.hpp"

# Error

Class to hold and communicate errors between Coroutines

namespace oatpp { namespace async { 
-  class Error : public oatpp::base::Countable {}
-}}
-

# Methods

Return Type Name Summary
[none] Error Constructor.
[none] ~Error Virtual destructor.
const char* what Error explanation.
bool is Check if error belongs to specified class.

# Error::Error

Constructor.

  • @param what - error explanation.

Error(const std::string& what)
-

# Error::~Error

Virtual destructor.

virtual ~Error() = default
-

# Error::what

Error explanation.

  • @return

const char* what() const
-

# Error::is

Check if error belongs to specified class.

  • @tparam ErrorClass
  • @return - true if error is of specified class

template<class ErrorClass>
-bool is() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/Executor/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/Executor/index.html deleted file mode 100644 index 0e3acf41e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/Executor/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Executor.hpp | Oat++ - - - - - - - -

# Executor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/Executor.hpp"

# Executor

Asynchronous Executor.
Executes coroutines in multiple oatpp::async::Processor allocating one thread per processor.

namespace oatpp { namespace async { 
-  class Executor {}
-}}
-

# Fields

Type Name Summary
const v_int32 VALUE_SUGGESTED Special value to indicate that Executor should choose it's own the value of specified parameter.
const v_int32 IO_WORKER_TYPE_NAIVE IO Worker type naive.
const v_int32 IO_WORKER_TYPE_EVENT IO Worker type event.

# Methods

Return Type Name Summary
[none] Executor Constructor.
[none] ~Executor Non-virtual Destructor.
void join Join all worker-threads.
void detach Detach all worker-threads.
void stop Stop Executor.
void execute Execute Coroutine.
v_int32 getTasksCount Get number of all not finished tasks.
void waitTasksFinished Wait until all tasks are finished.

# Executor::VALUE_SUGGESTED

Special value to indicate that Executor should choose it's own the value of specified parameter.

static constexpr const v_int32 VALUE_SUGGESTED = -1000
-

# Executor::IO_WORKER_TYPE_NAIVE

IO Worker type naive.

static constexpr const v_int32 IO_WORKER_TYPE_NAIVE = 0
-

# Executor::IO_WORKER_TYPE_EVENT

IO Worker type event.

static constexpr const v_int32 IO_WORKER_TYPE_EVENT = 1
-

# Executor::Executor

Constructor.

  • @param processorWorkersCount - number of data processing workers.
  • @param ioWorkersCount - number of I/O processing workers.
  • @param timerWorkersCount - number of timer processing workers.
  • @param IOWorkerType

Executor(v_int32 processorWorkersCount = VALUE_SUGGESTED,
-         v_int32 ioWorkersCount = VALUE_SUGGESTED,
-         v_int32 timerWorkersCount = VALUE_SUGGESTED,
-         v_int32 ioWorkerType = VALUE_SUGGESTED)
-

# Executor::~Executor

Non-virtual Destructor.

~Executor() = default
-

# Executor::join

Join all worker-threads.

void join()
-

# Executor::detach

Detach all worker-threads.

void detach()
-

# Executor::stop

Stop Executor.
After all worker-threads are stopped. Join should unblock.

void stop()
-

# Executor::execute

Execute Coroutine.

  • @tparam CoroutineType - type of coroutine to execute.
  • @tparam Args - types of arguments to be passed to Coroutine constructor.
  • @param params - actual arguments to be passed to Coroutine constructor.

template<typename CoroutineType, typename ... Args>
-void execute(Args... params)
-

# Executor::getTasksCount

Get number of all not finished tasks.

  • @return - number of all not finished tasks.

v_int32 getTasksCount()
-

# Executor::waitTasksFinished

Wait until all tasks are finished.

  • @param timeout

void waitTasksFinished(const std::chrono::duration<v_int64, std::micro>& timeout = std::chrono::minutes(1))
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/Lock/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/Lock/index.html deleted file mode 100644 index 53bb70973..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/Lock/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - Lock.hpp | Oat++ - - - - - - - -

# Lock.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/Lock.hpp"

# Lock

Lock (mutex) for coroutines/threads synchronization.
- When called from a thread - must be used with std::lock_guard. - When called from coroutine - must be used with LockGuard.

namespace oatpp { namespace async { 
-  class Lock : private CoroutineWaitList::Listener {}
-}}
-

# Methods

Return Type Name Summary
[none] Lock Constructor.
Action waitAsync Wait until lock is unlocked, and repeat.
void lock Lock on current thread. !Should NOT be called from within the Coroutine!
void unlock Unlock
bool try_lock Try to lock.

# Lock::Lock

Constructor.

Lock()
-

# Lock::waitAsync

Wait until lock is unlocked, and repeat.

Action waitAsync()
-

# Lock::lock

Lock on current thread. !Should NOT be called from within the Coroutine!

void lock()
-

# Lock::unlock

Unlock

void unlock()
-

# Lock::try_lock

Try to lock.

  • @return - true if the lock was acquired, false otherwise.

bool try_lock()
-

# LockGuard

Asynchronous lock guard.
Should be used as a lock guard in coroutines.

namespace oatpp { namespace async { 
-  class LockGuard {}
-}}
-

# Typedefs

Type Name Summary
oatpp::async::CoroutineStarter CoroutineStarter Convenince typedef for oatpp::async::CoroutineStarter.

# Methods

Return Type Name Summary
[none] LockGuard Multiple implementations:
  1. Default constructor.
  2. Constructor with lock.
[none] ~LockGuard Non-virtual destructor.
void setLockObject Set lock object.
CoroutineStarter lockAsync Multiple implementations:
  1. Lock the lock.
  2. Lock and guard the lock.
Action lockAsyncInline Lock the lock. (Async-inline usage. Should be called from a separate method of coroutine).
void unlock Unlock guarded lock.

# LockGuard::CoroutineStarter

Convenince typedef for oatpp::async::CoroutineStarter.

typedef oatpp::async::CoroutineStarter CoroutineStarter
-

# LockGuard::LockGuard

  1. Default constructor.
    LockGuard()
    -
  2. Constructor with lock.
    LockGuard(Lock* lock)
    -

# LockGuard::~LockGuard

Non-virtual destructor.
Will unlock the Lock if owns lock.

~LockGuard()
-

# LockGuard::setLockObject

Set lock object.

  • @param lock - lock object.

void setLockObject(Lock* lock)
-

# LockGuard::lockAsync

  1. Lock the lock.
    CoroutineStarter lockAsync()
    -
  2. Lock and guard the lock.
    Same as setLockObject(lock) + lockAsync();.
    CoroutineStarter lockAsync(Lock* lock)
    -

# LockGuard::lockAsyncInline

Lock the lock. (Async-inline usage. Should be called from a separate method of coroutine).

Action lockAsyncInline(oatpp::async::Action&& nextAction)
-

# LockGuard::unlock

Unlock guarded lock.

void unlock()
-

# synchronize

Namespace: oatpp::async

Synchronize coroutine execution by lock.

CoroutineStarter synchronize(oatpp::async::Lock *lock, CoroutineStarter&& starter)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/Processor/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/Processor/index.html deleted file mode 100644 index 92ca22fc6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/Processor/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - Processor.hpp | Oat++ - - - - - - - -

# Processor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/Processor.hpp"

# Processor

Asynchronous Processor.
Responsible for processing and managing multiple Coroutines. Do not use bare processor to run coroutines. Use oatpp::async::Executor instead;.

namespace oatpp { namespace async { 
-  class Processor {}
-}}
-

# Methods

Return Type Name Summary
void addWorker Add dedicated co-worker to processor.
void pushOneTask Push one Coroutine back to processor.
void pushTasks Push list of Coroutines back to processor.
void execute Execute Coroutine.
void waitForTasks Sleep and wait for tasks.
bool iterate Iterate Coroutines.
void stop Stop waiting for new tasks.
v_int32 getTasksCount Get number of all not-finished tasks including tasks rescheduled for processor's co-workers.

# Processor::addWorker

Add dedicated co-worker to processor.

void addWorker(const std::shared_ptr<worker::Worker>& worker)
-

# Processor::pushOneTask

Push one Coroutine back to processor.

void pushOneTask(CoroutineHandle* coroutine)
-

# Processor::pushTasks

Push list of Coroutines back to processor.

  • @param tasks - oatpp::async::utils::FastQueue of oatpp::async::CoroutineHandle previously popped-out(rescheduled to coworker) from this processor.

void pushTasks(utils::FastQueue<CoroutineHandle>& tasks)
-

# Processor::execute

Execute Coroutine.

  • @tparam CoroutineType - type of coroutine to execute.
  • @tparam Args - types of arguments to be passed to Coroutine constructor.
  • @param params - actual arguments to be passed to Coroutine constructor.

template<typename CoroutineType, typename ... Args>
-void execute(Args... params)
-

# Processor::waitForTasks

Sleep and wait for tasks.

void waitForTasks()
-

# Processor::iterate

Iterate Coroutines.

  • @param numIterations - number of iterations.
  • @return - true if there are active Coroutines.

bool iterate(v_int32 numIterations)
-

# Processor::stop

Stop waiting for new tasks.

void stop()
-

# Processor::getTasksCount

Get number of all not-finished tasks including tasks rescheduled for processor's co-workers.

  • @return - number of not-finished tasks.

v_int32 getTasksCount()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/utils/FastQueue/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/utils/FastQueue/index.html deleted file mode 100644 index d23c33b86..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/utils/FastQueue/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - FastQueue.hpp | Oat++ - - - - - - - -

# FastQueue.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/utils/FastQueue.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOEventWorker/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOEventWorker/index.html deleted file mode 100644 index cccd81b71..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOEventWorker/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - IOEventWorker.hpp | Oat++ - - - - - - - -

# IOEventWorker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/worker/IOEventWorker.hpp"

# IOEventWorker

Event-based implementation of I/O worker.

  • kqueue based implementation - for Mac/BSD systems
  • epoll based implementation - for Linux systems

namespace oatpp { namespace async { namespace worker { 
-  class IOEventWorker : public Worker {}
-}}}
-

# Methods

Return Type Name Summary
[none] IOEventWorker Constructor.
[none] ~IOEventWorker Virtual destructor.
void pushTasks Push list of tasks to worker.
void pushOneTask Push one task to worker.
void run Run worker.
void stop Break run loop.
void join Join all worker-threads.
void detach Detach all worker-threads.

# IOEventWorker::IOEventWorker

Constructor.

IOEventWorker(IOEventWorkerForeman* foreman, Action::IOEventType specialization)
-

# IOEventWorker::~IOEventWorker

Virtual destructor.

~IOEventWorker()
-

# IOEventWorker::pushTasks

Push list of tasks to worker.

void pushTasks(utils::FastQueue<CoroutineHandle>& tasks) override
-

# IOEventWorker::pushOneTask

Push one task to worker.

  • @param task - CoroutineHandle.

void pushOneTask(CoroutineHandle* task) override
-

# IOEventWorker::run

Run worker.

void run()
-

# IOEventWorker::stop

Break run loop.

void stop() override
-

# IOEventWorker::join

Join all worker-threads.

void join() override
-

# IOEventWorker::detach

Detach all worker-threads.

void detach() override
-

# IOEventWorkerForeman

Class responsible to assign I/O tasks to specific IOEventWorker according to worker's "specialization".
Needed in order to support full-duplex I/O mode without duplicating file-descriptors.

namespace oatpp { namespace async { namespace worker { 
-  class IOEventWorkerForeman : public Worker {}
-}}}
-

# Methods

Return Type Name Summary
[none] IOEventWorkerForeman Constructor.
[none] ~IOEventWorkerForeman Virtual destructor.
void pushTasks Push list of tasks to worker.
void pushOneTask Push one task to worker.
void stop Break run loop.
void join Join all worker-threads.
void detach Detach all worker-threads.

# IOEventWorkerForeman::IOEventWorkerForeman

Constructor.

IOEventWorkerForeman()
-

# IOEventWorkerForeman::~IOEventWorkerForeman

Virtual destructor.

~IOEventWorkerForeman()
-

# IOEventWorkerForeman::pushTasks

Push list of tasks to worker.

void pushTasks(utils::FastQueue<CoroutineHandle>& tasks) override
-

# IOEventWorkerForeman::pushOneTask

Push one task to worker.

  • @param task - CoroutineHandle.

void pushOneTask(CoroutineHandle* task) override
-

# IOEventWorkerForeman::stop

Break run loop.

void stop() override
-

# IOEventWorkerForeman::join

Join all worker-threads.

void join() override
-

# IOEventWorkerForeman::detach

Detach all worker-threads.

void detach() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOWorker/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOWorker/index.html deleted file mode 100644 index d3ece2dc3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/IOWorker/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - IOWorker.hpp | Oat++ - - - - - - - -

# IOWorker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/worker/IOWorker.hpp"

# IOWorker

Naive implementation of IOWorker. Polls all I/O handles in a loop. Reschedules long-waiting handles to Timer.

namespace oatpp { namespace async { namespace worker { 
-  class IOWorker : public Worker {}
-}}}
-

# Methods

Return Type Name Summary
[none] IOWorker Constructor.
void pushTasks Push list of tasks to worker.
void pushOneTask Push one task to worker.
void run Run worker.
void stop Break run loop.
void join Join all worker-threads.
void detach Detach all worker-threads.

# IOWorker::IOWorker

Constructor.

IOWorker()
-

# IOWorker::pushTasks

Push list of tasks to worker.

void pushTasks(utils::FastQueue<CoroutineHandle>& tasks) override
-

# IOWorker::pushOneTask

Push one task to worker.

  • @param task - CoroutineHandle.

void pushOneTask(CoroutineHandle* task) override
-

# IOWorker::run

Run worker.

void run()
-

# IOWorker::stop

Break run loop.

void stop() override
-

# IOWorker::join

Join all worker-threads.

void join() override
-

# IOWorker::detach

Detach all worker-threads.

void detach() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/TimerWorker/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/TimerWorker/index.html deleted file mode 100644 index e06d20c4b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/TimerWorker/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - TimerWorker.hpp | Oat++ - - - - - - - -

# TimerWorker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/worker/TimerWorker.hpp"

# TimerWorker

Timer worker. Used to wait for timer-scheduled coroutines.

namespace oatpp { namespace async { namespace worker { 
-  class TimerWorker : public Worker {}
-}}}
-

# Methods

Return Type Name Summary
[none] TimerWorker Constructor.
void pushTasks Push list of tasks to worker.
void pushOneTask Push one task to worker.
void run Run worker.
void stop Break run loop.
void join Join all worker-threads.
void detach Detach all worker-threads.

# TimerWorker::TimerWorker

Constructor.

  • @param granularity - minimum possible time to wait.

TimerWorker(const std::chrono::duration<v_int64, std::micro>& granularity = std::chrono::milliseconds(100))
-

# TimerWorker::pushTasks

Push list of tasks to worker.

void pushTasks(utils::FastQueue<CoroutineHandle>& tasks) override
-

# TimerWorker::pushOneTask

Push one task to worker.

  • @param task - CoroutineHandle.

void pushOneTask(CoroutineHandle* task) override
-

# TimerWorker::run

Run worker.

void run()
-

# TimerWorker::stop

Break run loop.

void stop() override
-

# TimerWorker::join

Join all worker-threads.

void join() override
-

# TimerWorker::detach

Detach all worker-threads.

void detach() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/Worker/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/Worker/index.html deleted file mode 100644 index a55c8d725..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/async/worker/Worker/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Worker.hpp | Oat++ - - - - - - - -

# Worker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/async/worker/Worker.hpp"

# Worker

Worker base class. Workers are used by oatpp::async::Executor to reschedule worker-specific tasks from oatpp::async::Processor.

namespace oatpp { namespace async { namespace worker { 
-  class Worker {}
-}}}
-

# Methods

Return Type Name Summary
[none] Worker Constructor.
[none] ~Worker Default virtual destructor.
void pushTasks Push list of tasks to worker.
void pushOneTask Push one task to worker.
void stop Break run loop.
void join Join all worker-threads.
void detach Detach all worker-threads.
Type getType Get worker type.

# Worker::Worker

Constructor.

Worker(Type type)
-

# Worker::~Worker

Default virtual destructor.

virtual ~Worker() = default
-

# Worker::pushTasks

Push list of tasks to worker.

virtual void pushTasks(utils::FastQueue<CoroutineHandle>& tasks) = 0
-

# Worker::pushOneTask

Push one task to worker.

virtual void pushOneTask(CoroutineHandle* task) = 0
-

# Worker::stop

Break run loop.

virtual void stop() = 0
-

# Worker::join

Join all worker-threads.

virtual void join() = 0
-

# Worker::detach

Detach all worker-threads.

virtual void detach() = 0
-

# Worker::getType

Get worker type.

Type getType()
-

# Worker::Type

Worker type

namespace oatpp { namespace async { namespace worker { 
-  class Worker {}
-}}}
-

# Worker::Type::PROCESSOR

Worker type - general processor.

PROCESSOR = 0
-

# Worker::Type::TIMER

Worker type - timer processor.

TIMER = 1
-

# Worker::Type::IO

Worker type - I/O processor.

IO = 2
-

# Worker::Type::TYPES_COUNT

Number of types in this enum.

TYPES_COUNT = 3
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/base/CommandLineArguments/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/base/CommandLineArguments/index.html deleted file mode 100644 index 3670d4214..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/base/CommandLineArguments/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - CommandLineArguments.hpp | Oat++ - - - - - - - -

# CommandLineArguments.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/base/CommandLineArguments.hpp"

# CommandLineArguments

Class for storing and managing Command Line arguments.

namespace oatpp { namespace base { 
-  class CommandLineArguments {}
-}}
-

# Methods

Return Type Name Summary
[none] CommandLineArguments Multiple implementations:
  1. Default constructor.
  2. Constructor.
bool hasArgument Check the specified argument is present.
v_int32 getArgumentIndex Get index of the argument specified by name.
const char* getArgumentStartingWith Get argument which starts with the prefix.
const char* getNamedArgumentValue Get value preceded by the argument.

# CommandLineArguments::CommandLineArguments

  1. Default constructor.
    CommandLineArguments()
    -
  2. Constructor.
    • @param argc - count of arguments in argv[] array.
    • @param argv - array of arguments.
    CommandLineArguments(int argc, const char * argv[])
    -

# CommandLineArguments::hasArgument

Check the specified argument is present.

  • @param argName - name of the target argument.
  • @return - true if present.

bool hasArgument(const char* argName) const
-

# CommandLineArguments::getArgumentIndex

Get index of the argument specified by name.

  • @param argName - name of the target argument.
  • @return - index of the argument in argv[] array. -1 if there is no such argument.

v_int32 getArgumentIndex(const char* argName) const
-

# CommandLineArguments::getArgumentStartingWith

Get argument which starts with the prefix.
Example:
For command line: -k -c 1000 -n 100 'http://127.0.0.1:8000/'
getArgumentWhichStartsWith("http") == http://127.0.0.1:8000/

  • @param argNamePrefix - prefix to search.
  • @param defaultValue - default value to return in case not found.
  • @return - argument which starts with the specified prefix. defaultValue if not found.

const char* getArgumentStartingWith(const char* argNamePrefix, const char* defaultValue = nullptr) const
-

# CommandLineArguments::getNamedArgumentValue

Get value preceded by the argument.
Example:
For command line: -k -c 1000 -n 100
getNamedArgumentValue("-c") == "1000", getNamedArgumentValue("-n") == "100"

  • @param argName - name of the preceded argument.
  • @param defaultValue - default value to return in case not found.
  • @return - value preceded by the argument. defaultValue if not found.

const char* getNamedArgumentValue(const char* argName, const char* defaultValue = nullptr) const
-

# CommandLineArguments::Parser

Command Line arguments parser.

namespace oatpp { namespace base { 
-  class CommandLineArguments {
-    class Parser {}
-  };
-}}
-

# Methods

Return Type Name Summary
bool hasArgument Check the specified argument is present among command line arguments.
v_int32 getArgumentIndex get index of the argument with the name == argName
const char* getArgumentStartingWith Get argument which starts with the prefix.
const char* getNamedArgumentValue Get value preceded by the argument.

# CommandLineArguments::Parser::hasArgument

Check the specified argument is present among command line arguments.

  • @param argc - count of arguments in argv array.
  • @param argv - array of arguments.
  • @param argName - name of the target argument.
  • @return - true if getArgumentIndex(argName) >= 0

static bool hasArgument(int argc, const char * argv[], const char* argName)
-

# CommandLineArguments::Parser::getArgumentIndex

get index of the argument with the name == argName

static v_int32 getArgumentIndex(int argc, const char * argv[], const char* argName)
-

# CommandLineArguments::Parser::getArgumentStartingWith

Get argument which starts with the prefix.
Example:
For command line: -k -c 1000 -n 100 http://127.0.0.1:8000/
getArgumentWhichStartsWith("http") == http://127.0.0.1:8000/

  • @param argc - count of arguments in argv array.
  • @param argv - array of arguments.
  • @param argNamePrefix - prefix to search.
  • @param defaultValue - default value to return in case not found.
  • @return - argument which starts with the specified prefix.

static const char* getArgumentStartingWith(int argc, const char * argv[], const char* argNamePrefix, const char* defaultValue = nullptr)
-

# CommandLineArguments::Parser::getNamedArgumentValue

Get value preceded by the argument.
Example:
For command line: -k -c 1000 -n 100
getNamedArgumentValue("-c") == "1000", getNamedArgumentValue("-n") == "100"

  • @param argc - count of arguments in argv array.
  • @param argv - array of arguments.
  • @param argName - name of the preceded argument.
  • @param defaultValue - default value to return in case not found.
  • @return - value preceded by the argument.

static const char* getNamedArgumentValue(int argc, const char * argv[], const char* argName, const char* defaultValue = nullptr)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/base/Config/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/base/Config/index.html deleted file mode 100644 index 5fc024f9e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/base/Config/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Config.hpp | Oat++ - - - - - - - -

# Config.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/base/Config.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/base/Countable/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/base/Countable/index.html deleted file mode 100644 index b501dbbf0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/base/Countable/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Countable.hpp | Oat++ - - - - - - - -

# Countable.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/base/Countable.hpp"

# Countable

Class instantiations of which can be counted.

namespace oatpp { namespace base { 
-  class Countable {}
-}}
-

# Methods

Return Type Name Summary
[none] Countable Multiple implementations:
  1. Constructor. Increment counter calling oatpp::base::Environment::incObjects().
  2. Copy constructor. Increment counter calling oatpp::base::Environment::incObjects().
[none] ~Countable Virtual destructor. Decrement counter calling oatpp::base::Environment::decObjects().

# Countable::Countable

  1. Constructor. Increment counter calling oatpp::base::Environment::incObjects().
    Countable()
    -
  2. Copy constructor. Increment counter calling oatpp::base::Environment::incObjects().
    • @param other
    Countable(const Countable& other)
    -

# Countable::~Countable

Virtual destructor. Decrement counter calling oatpp::base::Environment::decObjects().

virtual ~Countable()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/base/Environment/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/base/Environment/index.html deleted file mode 100644 index e6aa7e1e8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/base/Environment/index.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - Environment.hpp | Oat++ - - - - - - - -

# Environment.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/base/Environment.hpp"

# v_buff_size

Namespace: ``

This type is the integer type capable of storing a pointer. Thus is capable of storing size of allocated memory.
Use this type to define a size for the buffer.

typedef intptr_t v_buff_size
-

# Logger

Interface for system-wide Logger.
All calls to OATPP_DISABLE_LOGV, OATPP_DISABLE_LOGD, OATPP_DISABLE_LOGI, OATPP_DISABLE_LOGW, OATPP_DISABLE_LOGE will come here.

namespace oatpp { namespace base { 
-  class Logger {}
-}}
-

# Fields

Type Name Summary
v_uint32 PRIORITY_V Log priority V-verbouse.
v_uint32 PRIORITY_D Log priority D-debug.
v_uint32 PRIORITY_I Log priority I-Info.
v_uint32 PRIORITY_W Log priority W-Warning.
v_uint32 PRIORITY_E Log priority E-error.

# Methods

Return Type Name Summary
[none] ~Logger Virtual Destructor.
void log Log message with priority, tag, message.
bool isLogPriorityEnabled Returns wether or not a priority should be logged/printed
v_buff_size getMaxFormattingBufferSize Should return the maximum amount of bytes that should be allocated for a single log message

# Logger::PRIORITY_V

Log priority V-verbouse.

static constexpr v_uint32 PRIORITY_V = 0
-

# Logger::PRIORITY_D

Log priority D-debug.

static constexpr v_uint32 PRIORITY_D = 1
-

# Logger::PRIORITY_I

Log priority I-Info.

static constexpr v_uint32 PRIORITY_I = 2
-

# Logger::PRIORITY_W

Log priority W-Warning.

static constexpr v_uint32 PRIORITY_W = 3
-

# Logger::PRIORITY_E

Log priority E-error.

static constexpr v_uint32 PRIORITY_E = 4
-

# Logger::~Logger

Virtual Destructor.

virtual ~Logger() = default
-

# Logger::log

Log message with priority, tag, message.

  • @param priority - priority channel of the message.
  • @param tag - tag of the log message.
  • @param message - message.

virtual void log(v_uint32 priority, const std::string& tag, const std::string& message) = 0
-

# Logger::isLogPriorityEnabled

Returns wether or not a priority should be logged/printed

  • @param priority
  • @return - true if given priority should be logged

virtual bool isLogPriorityEnabled(v_uint32 )
-

# Logger::getMaxFormattingBufferSize

Should return the maximum amount of bytes that should be allocated for a single log message

  • @return - maximum buffer size

virtual v_buff_size getMaxFormattingBufferSize()
-

# LogCategory

Describes a logging category (i.e. a logging "namespace")

namespace oatpp { namespace base { 
-  class LogCategory {}
-}}
-

# Fields

Type Name Summary
const std::string tag The tag for this category
bool categoryEnabled Generally enable or disable this category
v_uint32 enabledPriorities Priorities to print that are logged in this category

# Methods

Return Type Name Summary
[none] LogCategory Constructs a logging category.
void enablePriority Enables logging of a priorities for this category
void disablePriority Disabled logging of a priorities for this category
bool isLogPriorityEnabled Returns wether or not a priority of this category should be logged/printed

# LogCategory::tag

The tag for this category

const std::string tag
-

# LogCategory::categoryEnabled

Generally enable or disable this category

bool categoryEnabled
-

# LogCategory::enabledPriorities

Priorities to print that are logged in this category

v_uint32 enabledPriorities
-

# LogCategory::LogCategory

Constructs a logging category.

  • @param pTag - Tag of this logging category
  • @param pCategoryEnabled - Enable or disable the category completely
  • @param pEnabledPriorities - Bitmap of initially active logging categories.

LogCategory(std::string pTag, bool pCategoryEnabled, v_uint32 pEnabledPriorities = ((1<<Logger::PRIORITY_V) | (1<<Logger::PRIORITY_D) | (1<<Logger::PRIORITY_I) | (1<<Logger::PRIORITY_W) | (1<<Logger::PRIORITY_E)))
-  : tag(std::move(pTag))
-  , categoryEnabled(pCategoryEnabled)
-  , enabledPriorities(pEnabledPriorities)
-

# LogCategory::enablePriority

Enables logging of a priorities for this category

  • @param priority - the priority level to enable

void enablePriority(v_uint32 priority)
-

# LogCategory::disablePriority

Disabled logging of a priorities for this category

  • @param priority - the priority level to disable

void disablePriority(v_uint32 priority)
-

# LogCategory::isLogPriorityEnabled

Returns wether or not a priority of this category should be logged/printed

  • @param priority
  • @return - true if given priority should be logged

bool isLogPriorityEnabled(v_uint32 priority)
-

# DefaultLogger

Default Logger implementation.

namespace oatpp { namespace base { 
-  class DefaultLogger : public Logger {}
-}}
-

# Methods

Return Type Name Summary
[none] DefaultLogger Constructor.
void log Log message with priority, tag, message.
void enablePriority Enables logging of a priorities for this instance
void disablePriority Disables logging of a priority for this instance
bool isLogPriorityEnabled Returns wether or not a priority should be logged/printed

# DefaultLogger::DefaultLogger

Constructor.

  • @param config - Logger config.

DefaultLogger(const Config& config = Config(
-        "%Y-%m-%d %H:%M:%S",
-        true,
-        (1 << PRIORITY_V) | (1 << PRIORITY_D) | (1 << PRIORITY_I) | (1 << PRIORITY_W) | (1 << PRIORITY_E)
-        ))
-

# DefaultLogger::log

Log message with priority, tag, message.

  • @param priority - log-priority channel of the message.
  • @param tag - tag of the log message.
  • @param message - message.

void log(v_uint32 priority, const std::string& tag, const std::string& message) override
-

# DefaultLogger::enablePriority

Enables logging of a priorities for this instance

  • @param priority - the priority level to enable

void enablePriority(v_uint32 priority)
-

# DefaultLogger::disablePriority

Disables logging of a priority for this instance

  • @param priority - the priority level to disable

void disablePriority(v_uint32 priority)
-

# DefaultLogger::isLogPriorityEnabled

Returns wether or not a priority should be logged/printed

  • @param priority
  • @return - true if given priority should be logged

bool isLogPriorityEnabled(v_uint32 priority) override
-

# DefaultLogger::Config

Default Logger Config.

namespace oatpp { namespace base { 
-  class DefaultLogger : public Logger {
-    struct Config {}
-  };
-}}
-

# Fields

Type Name Summary
const char* timeFormat Time format of the log message. If nullptr then do not print time.
bool printTicks Print micro-ticks in the log message.
v_uint32 logMask Log mask to enable/disable certain priorities

# Methods

Return Type Name Summary
[none] Config Constructor.

# DefaultLogger::Config::timeFormat

Time format of the log message. If nullptr then do not print time.

const char* timeFormat
-

# DefaultLogger::Config::printTicks

Print micro-ticks in the log message.

bool printTicks
-

# DefaultLogger::Config::logMask

Log mask to enable/disable certain priorities

v_uint32 logMask
-

# DefaultLogger::Config::Config

Constructor.

  • @param tfmt - time format.
  • @param printMicroTicks - show ticks in microseconds.

Config(const char* tfmt, bool printMicroTicks, v_uint32 initialLogMask)
-  : timeFormat(tfmt)
-  , printTicks(printMicroTicks)
-  , logMask(initialLogMask)
-

# Environment

Class to manage application environment.
Manage object counters, manage components, and do system health-checks.

namespace oatpp { namespace base { 
-  class Environment {}
-}}
-

# Methods

Return Type Name Summary
void init Multiple implementations:
  1. Initialize environment and do basic health-checks.
  2. Initialize environment and do basic health-checks.
void destroy De-initialize environment and do basic health-checks.
void incObjects increment counter of objects.
void decObjects decrement counter of objects.
v_counter getObjectsCount Get count of objects currently allocated and stored in the memory.
v_counter getObjectsCreated Get count of objects created for a whole system lifetime.
v_counter getThreadLocalObjectsCount Same as getObjectsCount() but thread_local
v_counter getThreadLocalObjectsCreated Same as getObjectsCreated() but thread_local
void setLogger Set environment logger.
std::shared_ptr<Logger> getLogger Gets the current environment logger
void printCompilationConfig Print debug information of compilation config.
void log Call Logger::log()
void logFormatted Multiple implementations:
  1. Format message and call Logger::log()
  2. Format message and call Logger::log()
void* getComponent Multiple implementations:
  1. Get component object by typeName.
  2. Get component object by typeName and componentName.
v_int64 getMicroTickCount Get ticks count in microseconds.

# Environment::init

  1. Initialize environment and do basic health-checks.
    static void init()
    -
  2. Initialize environment and do basic health-checks.
    • @param logger - system-wide logger.
    static void init(const std::shared_ptr<Logger>& logger)
    -

# Environment::destroy

De-initialize environment and do basic health-checks. Check for memory leaks.

static void destroy()
-

# Environment::incObjects

increment counter of objects.

static void incObjects()
-

# Environment::decObjects

decrement counter of objects.

static void decObjects()
-

# Environment::getObjectsCount

Get count of objects currently allocated and stored in the memory.

  • @return

static v_counter getObjectsCount()
-

# Environment::getObjectsCreated

Get count of objects created for a whole system lifetime.

  • @return - count of objects.

static v_counter getObjectsCreated()
-

# Environment::getThreadLocalObjectsCount

Same as getObjectsCount() but thread_local

  • @return - count of objects.
    0 - if built with -DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL flag

static v_counter getThreadLocalObjectsCount()
-

# Environment::getThreadLocalObjectsCreated

Same as getObjectsCreated() but thread_local

  • @return - count of objects.
    0 - if built with -DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL flag

static v_counter getThreadLocalObjectsCreated()
-

# Environment::setLogger

Set environment logger.

  • @param logger - system-wide logger.

static void setLogger(const std::shared_ptr<Logger>& logger)
-

# Environment::getLogger

Gets the current environment logger

  • @return - current logger

static std::shared_ptr<Logger> getLogger()
-

# Environment::printCompilationConfig

Print debug information of compilation config.
Print values for:
- OATPP_DISABLE_ENV_OBJECT_COUNTERS
- OATPP_THREAD_HARDWARE_CONCURRENCY

static void printCompilationConfig()
-

# Environment::log

Call Logger::log()

  • @param priority - log-priority channel of the message.
  • @param tag - tag of the log message.
  • @param message - message.

static void log(v_uint32 priority, const std::string& tag, const std::string& message)
-

# Environment::logFormatted

  1. Format message and call Logger::log()
    Message is formatted using vsnprintf method.
    • @param priority - log-priority channel of the message.
    • @param tag - tag of the log message.
    • @param message - message.
    • @param ... - format arguments.
    static void logFormatted(v_uint32 priority, const std::string& tag, const char* message, ...)
    -
  2. Format message and call Logger::log()
    Message is formatted using vsnprintf method.
    • @param priority - log-priority channel of the message.
    • @param category - category of the log message.
    • @param message - message.
    • @param ... - format arguments.
    static void logFormatted(v_uint32 priority, const LogCategory& category, const char* message, ...)
    -

# Environment::getComponent

  1. Get component object by typeName.
    • @param typeName - type name of the component.
    • @return - pointer to a component object.
    static void* getComponent(const std::string& typeName)
    -
  2. Get component object by typeName and componentName.
    • @param typeName - type name of the component.
    • @param componentName - component qualifier name.
    • @return - pointer to a component object.
    static void* getComponent(const std::string& typeName, const std::string& componentName)
    -

# Environment::getMicroTickCount

Get ticks count in microseconds.

  • @return - ticks count in microseconds.

static v_int64 getMicroTickCount()
-

# Environment::Component

Class representing system component.

  • @tparam T - component type.

namespace oatpp { namespace base { 
-  class Environment {
-    template <typename T>
-    class Component {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] Component Multiple implementations:
  1. Constructor.
  2. Constructor.
[none] ~Component Non-virtual Destructor.
T getObject Get object stored in the component.

# Environment::Component::Component

  1. Constructor.
    • @param name - component name.
    • @param object - component object.
    Component(const std::string& name, const T& object)
    -  : m_type(typeid(T).name())
    -  , m_name(name)
    -  , m_object(object)
    -
  2. Constructor.
    • @param object - component object.
    Component(const T& object)
    -  : Component("NoName", object)
    -

# Environment::Component::~Component

Non-virtual Destructor.

~Component()
-

# Environment::Component::getObject

Get object stored in the component.

  • @return - object.

T getObject()
-

# OATPP_ASSERT

Default oatpp assert method.

  • @param EXP - expression that must be true.

#define OATPP_ASSERT(EXP)
-

# OATPP_DECLARE_LOG_CATEGORY

Convenience macro to declare a logging category directly in a class header.

  • @param NAME - variable-name of the category which is later used to reference the category.

#define OATPP_DECLARE_LOG_CATEGORY(NAME)
-

# OATPP_LOG_CATEGORY

Convenience macro to implement a logging category directly in a class header.

  • @param NAME - variable-name of the category which is later used to reference the category.
  • @param TAG - tag printed with each message printed usig this category.
  • @param ENABLED - enable or disable a category (bool).

#define OATPP_LOG_CATEGORY(NAME, TAG, ENABLED)
-

# OATPP_LOGV

Log message with Logger::PRIORITY_V
To disable this log compile oatpp with #define OATPP_DISABLE_LOGV

  • @param TAG - message tag.
  • @param ...(1) - message.
  • @param ... - optional format parameter.

#define OATPP_LOGV(TAG, ...)
-

# OATPP_LOGD

Log message with Logger::PRIORITY_D
To disable this log compile oatpp with #define OATPP_DISABLE_LOGD

  • @param TAG - message tag.
  • @param ...(1) - message.
  • @param ... - optional format parameter.

#define OATPP_LOGD(TAG, ...)
-

# OATPP_LOGI

Log message with Logger::PRIORITY_I
To disable this log compile oatpp with #define OATPP_DISABLE_LOGI

  • @param TAG - message tag.
  • @param ...(1) - message.
  • @param ... - optional format parameter.

#define OATPP_LOGI(TAG, ...)
-

# OATPP_LOGW

Log message with Logger::PRIORITY_W
To disable this log compile oatpp with #define OATPP_DISABLE_LOGW

  • @param TAG - message tag.
  • @param ...(1) - message.
  • @param ... - optional format parameter.

#define OATPP_LOGW(TAG, ...)
-

# OATPP_LOGE

Log message with Logger::PRIORITY_E
To disable this log compile oatpp with #define OATPP_DISABLE_LOGE

  • @param TAG - message tag.
  • @param ...(1) - message.
  • @param ... - optional format parameter.

#define OATPP_LOGE(TAG, ...)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/base/ObjectHandle/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/base/ObjectHandle/index.html deleted file mode 100644 index eee72b303..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/base/ObjectHandle/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - ObjectHandle.hpp | Oat++ - - - - - - - -

# ObjectHandle.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/base/ObjectHandle.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/SpinLock/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/SpinLock/index.html deleted file mode 100644 index 8e28dcdbc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/SpinLock/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - SpinLock.hpp | Oat++ - - - - - - - -

# SpinLock.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/concurrency/SpinLock.hpp"

# SpinLock

SpinLock implementation based on atomic. Meets the Lockable requirements.

namespace oatpp { namespace concurrency { 
-  class SpinLock {}
-}}
-

# Methods

Return Type Name Summary
[none] SpinLock Constructor.
void lock Lock spin-lock
void unlock Unlock spin-lock
bool try_lock Try to lock.

# SpinLock::SpinLock

Constructor.

SpinLock()
-

# SpinLock::lock

Lock spin-lock

void lock()
-

# SpinLock::unlock

Unlock spin-lock

void unlock()
-

# SpinLock::try_lock

Try to lock.

  • @return - true if the lock was acquired, false otherwise.

bool try_lock()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/Thread/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/Thread/index.html deleted file mode 100644 index 290c58972..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/concurrency/Thread/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Thread.hpp | Oat++ - - - - - - - -

# Thread.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/concurrency/Thread.hpp"

# setThreadAffinityToOneCpu

Namespace: oatpp::concurrency

Set thread affinity to one CPU.

  • @param nativeHandle - std::thread::native_handle_type.
  • @param cpuIndex - index of CPU.
  • @return - zero on success. Negative value on failure. -1 if platform that runs application does not support this call.

v_int32 setThreadAffinityToOneCpu(std::thread::native_handle_type nativeHandle, v_int32 cpuIndex)
-

# setThreadAffinityToCpuRange

Namespace: oatpp::concurrency

Set thread affinity [firstCpuIndex..lastCpuIndex].

  • @param nativeHandle - std::thread::native_handle_type.
  • @param firstCpuIndex - from CPU-index.
  • @param lastCpuIndex - to CPU-index included.
  • @return - zero on success. Negative value on failure. -1 if platform that runs application does not support this call.

v_int32 setThreadAffinityToCpuRange(std::thread::native_handle_type nativeHandle, v_int32 firstCpuIndex, v_int32 lastCpuIndex)
-

# getHardwareConcurrency

Namespace: oatpp::concurrency

Get hardware concurrency.

  • @return - OATPP_THREAD_HARDWARE_CONCURRENCY config value if set
    else return std::thread::hardware_concurrency()
    else return 1.

v_int32 getHardwareConcurrency()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/Bundle/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/Bundle/index.html deleted file mode 100644 index 888e5133e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/Bundle/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Bundle.hpp | Oat++ - - - - - - - -

# Bundle.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/Bundle.hpp"

# Bundle

Bundle of auxiliary data.

namespace oatpp { namespace data { 
-  class Bundle {}
-}}
-

# Methods

Return Type Name Summary
[none] Bundle Default constructor.
[none] ~Bundle Default virtual destructor.
void put Put data by key.
WrapperType get Get data by key.
const std::unordered_map<oatpp::String, oatpp::Void>& getAll Get map of data stored in the bundle.

# Bundle::Bundle

Default constructor.

Bundle() = default
-

# Bundle::~Bundle

Default virtual destructor.

virtual ~Bundle() = default
-

# Bundle::put

Put data by key.

  • @param key
  • @param polymorph

void put(const oatpp::String& key, const oatpp::Void& polymorph)
-

# Bundle::get

Get data by key.

  • @tparam WrapperType
  • @param key
  • @return

template<typename WrapperType>
-WrapperType get(const oatpp::String& key) const
-

# Bundle::getAll

Get map of data stored in the bundle.

  • @return

const std::unordered_map<oatpp::String, oatpp::Void>& getAll() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/FIFOBuffer/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/FIFOBuffer/index.html deleted file mode 100644 index 5105212bc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/FIFOBuffer/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - FIFOBuffer.hpp | Oat++ - - - - - - - -

# FIFOBuffer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/buffer/FIFOBuffer.hpp"

# FIFOBuffer

FIFO operations over the buffer !FIFOBuffer is NOT an IOStream despite having similar APIs!

namespace oatpp { namespace data { namespace buffer { 
-  class FIFOBuffer {}
-}}}
-

# Methods

Return Type Name Summary
[none] FIFOBuffer Constructor.
void setBufferPosition Set read and write positions in buffer.
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size availableToWrite Amount of buffer space currently available for data writes.
v_buff_size getBufferSize Get FIFOBuffer size.
v_io_size read read up to count bytes from the buffer to data
v_io_size peek Peek up to count of bytes int he buffer
v_io_size commitReadOffset Commit read offset
v_io_size write write up to count bytes from data to buffer
v_io_size readAndWriteToStream call read and then write bytes read to output stream
v_io_size readFromStreamAndWrite call stream.read() and then write bytes read to buffer
v_io_size flushToStream flush all availableToRead bytes to stream
async::CoroutineStarter flushToStreamAsync flush all availableToRead bytes to stream in asynchronous manner

# FIFOBuffer::FIFOBuffer

Constructor.

  • @param buffer - pointer to buffer used for reads/writes.
  • @param bufferSize - buffer size.
  • @param readPosition - initial read position in buffer.
  • @param writePosition - initial write position in buffer.
  • @param canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then FIFOBuffer::availableToRead() returns buffer size, and FIFOBuffer::availableToWrite() returns 0.

FIFOBuffer(void* buffer, v_buff_size bufferSize,
-           v_buff_size readPosition = 0, v_buff_size writePosition = 0,
-           bool canRead = false)
-

# FIFOBuffer::setBufferPosition

Set read and write positions in buffer.

  • @param readPosition - read position in buffer.
  • @param writePosition - write position in buffer.
  • @param canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then FIFOBuffer::availableToRead() returns buffer size, and FIFOBuffer::availableToWrite() returns 0.

void setBufferPosition(v_buff_size readPosition, v_buff_size writePosition, bool canRead)
-

# FIFOBuffer::availableToRead

Amount of bytes currently available to read from buffer.

v_io_size availableToRead() const
-

# FIFOBuffer::availableToWrite

Amount of buffer space currently available for data writes.

v_io_size availableToWrite() const
-

# FIFOBuffer::getBufferSize

Get FIFOBuffer size.

  • @return - FIFOBuffer size.

v_buff_size getBufferSize() const
-

# FIFOBuffer::read

read up to count bytes from the buffer to data

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size read(void *data, v_buff_size count)
-

# FIFOBuffer::peek

Peek up to count of bytes int he buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size peek(void *data, v_buff_size count)
-

# FIFOBuffer::commitReadOffset

Commit read offset

  • @param count
  • @return [1..count], IOErrors.

v_io_size commitReadOffset(v_buff_size count)
-

# FIFOBuffer::write

write up to count bytes from data to buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size write(const void *data, v_buff_size count)
-

# FIFOBuffer::readAndWriteToStream

call read and then write bytes read to output stream

  • @param stream
  • @param count
  • @param action
  • @return [1..count], IOErrors.

v_io_size readAndWriteToStream(data::stream::WriteCallback* stream, v_buff_size count, async::Action& action)
-

# FIFOBuffer::readFromStreamAndWrite

call stream.read() and then write bytes read to buffer

  • @param stream
  • @param count
  • @param action
  • @return

v_io_size readFromStreamAndWrite(data::stream::ReadCallback* stream, v_buff_size count, async::Action& action)
-

# FIFOBuffer::flushToStream

flush all availableToRead bytes to stream

  • @param stream
  • @return

v_io_size flushToStream(data::stream::OutputStream* stream)
-

# FIFOBuffer::flushToStreamAsync

flush all availableToRead bytes to stream in asynchronous manner

  • @param stream - data::stream::OutputStream.
  • @return - async::CoroutineStarter.

async::CoroutineStarter flushToStreamAsync(const std::shared_ptr<data::stream::OutputStream>& stream)
-

# SynchronizedFIFOBuffer

Same as FIFOBuffer + synchronization with SpinLock

namespace oatpp { namespace data { namespace buffer { 
-  class SynchronizedFIFOBuffer {}
-}}}
-

# Methods

Return Type Name Summary
[none] SynchronizedFIFOBuffer Constructor.
void setBufferPosition Set read and write positions in buffer.
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size availableToWrite Amount of buffer space currently available for data writes.
v_io_size read read up to count bytes from the buffer to data
v_io_size write write up to count bytes from data to buffer

# SynchronizedFIFOBuffer::SynchronizedFIFOBuffer

Constructor.

  • @param buffer - pointer to buffer used for reads/writes.
  • @param bufferSize - buffer size.
  • @param readPosition - initial read position in buffer.
  • @param writePosition - initial write position in buffer.
  • @param canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then SynchronizedFIFOBuffer::availableToRead() returns buffer size, and SynchronizedFIFOBuffer::availableToWrite() returns 0.

SynchronizedFIFOBuffer(void* buffer, v_buff_size bufferSize,
-                       v_buff_size readPosition = 0, v_buff_size writePosition = 0,
-                       bool canRead = false)
-

# SynchronizedFIFOBuffer::setBufferPosition

Set read and write positions in buffer.

void setBufferPosition(v_buff_size readPosition, v_buff_size writePosition, bool canRead)
-

# SynchronizedFIFOBuffer::availableToRead

Amount of bytes currently available to read from buffer.

v_io_size availableToRead()
-

# SynchronizedFIFOBuffer::availableToWrite

Amount of buffer space currently available for data writes.

v_io_size availableToWrite()
-

# SynchronizedFIFOBuffer::read

read up to count bytes from the buffer to data

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size read(void *data, v_buff_size count)
-

# SynchronizedFIFOBuffer::write

write up to count bytes from data to buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size write(const void *data, v_buff_size count)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/IOBuffer/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/IOBuffer/index.html deleted file mode 100644 index d83a6d312..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/IOBuffer/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - IOBuffer.hpp | Oat++ - - - - - - - -

# IOBuffer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/buffer/IOBuffer.hpp"

# IOBuffer

Predefined buffer implementation for I/O operations. Allocates buffer bytes using oatpp::base::memory::ThreadDistributedMemoryPool.

namespace oatpp { namespace data { namespace buffer { 
-  class IOBuffer : public oatpp::base::Countable {}
-}}}
-

# Fields

Type Name Summary
const v_buff_size BUFFER_SIZE Buffer size constant.

# Methods

Return Type Name Summary
[none] IOBuffer Constructor.
std::shared_ptr<IOBuffer> createShared Create shared IOBuffer.
[none] ~IOBuffer Virtual destructor.
void* getData Get pointer to buffer data.
v_buff_size getSize Get buffer size.

# IOBuffer::BUFFER_SIZE

Buffer size constant.

static const v_buff_size BUFFER_SIZE
-

# IOBuffer::IOBuffer

Constructor.

IOBuffer()
-

# IOBuffer::createShared

Create shared IOBuffer.

  • @return

static std::shared_ptr<IOBuffer> createShared()
-

# IOBuffer::~IOBuffer

Virtual destructor.

~IOBuffer()
-

# IOBuffer::getData

Get pointer to buffer data.

  • @return

void* getData()
-

# IOBuffer::getSize

Get buffer size.

v_buff_size getSize()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/Processor/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/Processor/index.html deleted file mode 100644 index 133412e63..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/buffer/Processor/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - Processor.hpp | Oat++ - - - - - - - -

# Processor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/buffer/Processor.hpp"

# InlineReadData

Convenience structure for stream Async-Inline read operations.

namespace oatpp { namespace data { namespace buffer { 
-  struct InlineReadData {}
-}}}
-

# Fields

Type Name Summary
void* currBufferPtr Pointer to current position in the buffer.
v_buff_size bytesLeft Bytes left to read to the buffer.

# Methods

Return Type Name Summary
[none] InlineReadData Multiple implementations:
  1. Default constructor.
  2. Constructor.
void set Set currBufferPtr and bytesLeft values.
void inc Increase position in the read buffer by amount bytes.
void setEof Same as inc(bytesLeft).

# InlineReadData::currBufferPtr

Pointer to current position in the buffer.

void* currBufferPtr
-

# InlineReadData::bytesLeft

Bytes left to read to the buffer.

v_buff_size bytesLeft
-

# InlineReadData::InlineReadData

  1. Default constructor.
    InlineReadData()
    -
  2. Constructor.
    • @param data
    • @param size
    InlineReadData(void* data, v_buff_size size)
    -

# InlineReadData::set

Set currBufferPtr and bytesLeft values.

  • @param data - pointer to buffer to store read data.
  • @param size - size in bytes of the buffer.

void set(void* data, v_buff_size size)
-

# InlineReadData::inc

Increase position in the read buffer by amount bytes.
This will increase currBufferPtr and descrease bytesLeft values.

  • @param amount

void inc(v_buff_size amount)
-

# InlineReadData::setEof

Same as inc(bytesLeft).

void setEof()
-

# InlineWriteData

Convenience structure for stream Async-Inline write operations.

namespace oatpp { namespace data { namespace buffer { 
-  struct InlineWriteData {}
-}}}
-

# Fields

Type Name Summary
const void* currBufferPtr Pointer to current position in the buffer.
v_buff_size bytesLeft Bytes left to write from the buffer.

# Methods

Return Type Name Summary
[none] InlineWriteData Multiple implementations:
  1. Default constructor.
  2. Constructor.
void set Set currBufferPtr and bytesLeft values.
void inc Increase position in the write buffer by amount bytes.
void setEof Same as inc(bytesLeft).

# InlineWriteData::currBufferPtr

Pointer to current position in the buffer.

const void* currBufferPtr
-

# InlineWriteData::bytesLeft

Bytes left to write from the buffer.

v_buff_size bytesLeft
-

# InlineWriteData::InlineWriteData

  1. Default constructor.
    InlineWriteData()
    -
  2. Constructor.
    • @param data
    • @param size
    InlineWriteData(const void* data, v_buff_size size)
    -

# InlineWriteData::set

Set currBufferPtr and bytesLeft values.

  • @param data - pointer to buffer containing data to be written.
  • @param size - size in bytes of the buffer.

void set(const void* data, v_buff_size size)
-

# InlineWriteData::inc

Increase position in the write buffer by amount bytes.
This will increase currBufferPtr and descrease bytesLeft values.

  • @param amount

void inc(v_buff_size amount)
-

# InlineWriteData::setEof

Same as inc(bytesLeft).

void setEof()
-

# Processor

Buffer processor. Note: all processors are considered to be stateful.

namespace oatpp { namespace data { namespace buffer { 
-  class Processor {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~Processor Default virtual destructor.
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# Processor::~Processor

Default virtual destructor.

virtual ~Processor() = default
-

# Processor::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

virtual v_io_size suggestInputStreamReadSize() = 0
-

# Processor::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

virtual v_int32 iterate(data::buffer::InlineReadData& dataIn,
-                        data::buffer::InlineReadData& dataOut) = 0
-

# Processor::Error

Enum of processing errors.

namespace oatpp { namespace data { namespace buffer { 
-  class Processor {}
-}}}
-

# Processor::Error::OK

No error.

OK = 0
-

# Processor::Error::PROVIDE_DATA_IN

Caller must set fields of dataIn parameter.

PROVIDE_DATA_IN = 1
-

# Processor::Error::FLUSH_DATA_OUT

Caller must read all the data from the dataOut.

FLUSH_DATA_OUT = 2
-

# Processor::Error::FINISHED

Processing is finished.

FINISHED = 3
-
-    //*********************************************//
-    // Other values are processor-specific errors. //
-    //*********************************************//
-

# ProcessingPipeline

Pipeline of buffer processors.

namespace oatpp { namespace data { namespace buffer { 
-  class ProcessingPipeline : public Processor {}
-}}}
-

# Methods

Return Type Name Summary
[none] ProcessingPipeline Constructor.
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# ProcessingPipeline::ProcessingPipeline

Constructor.

  • @param m_processors - the array of processors defining the pipeline.

ProcessingPipeline(const std::vector<base::ObjectHandle<Processor>>& m_processors)
-

# ProcessingPipeline::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

v_io_size suggestInputStreamReadSize() override
-

# ProcessingPipeline::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

v_int32 iterate(data::buffer::InlineReadData& dataIn,
-                data::buffer::InlineReadData& dataOut) override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/ObjectMapper/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/ObjectMapper/index.html deleted file mode 100644 index 89da5c65c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/ObjectMapper/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - ObjectMapper.hpp | Oat++ - - - - - - - -

# ObjectMapper.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/ObjectMapper.hpp"

# ObjectMapper

Abstract ObjectMapper class.

namespace oatpp { namespace data { namespace mapping { 
-  class ObjectMapper {}
-}}}
-

# Methods

Return Type Name Summary
[none] ObjectMapper Constructor.
const Info& getInfo Get ObjectMapper metadata.
void write Serialize object to stream. Implement this method.
mapping::type::Void read Deserialize object. Implement this method.
oatpp::String writeToString Serialize object to String.
Wrapper readFromCaret Deserialize object.
Wrapper readFromString Deserialize object.

# ObjectMapper::ObjectMapper

Constructor.

  • @param info - Metadata for ObjectMapper.

ObjectMapper(const Info& info)
-

# ObjectMapper::getInfo

Get ObjectMapper metadata.

  • @return - ObjectMapper metadata.

const Info& getInfo() const
-

# ObjectMapper::write

Serialize object to stream. Implement this method.

virtual void write(data::stream::ConsistentOutputStream* stream, const type::Void& variant) const = 0
-

# ObjectMapper::read

Deserialize object. Implement this method.

virtual mapping::type::Void read(oatpp::parser::Caret& caret, const mapping::type::Type* const type) const = 0
-

# ObjectMapper::writeToString

Serialize object to String.

  • @param variant - Object to serialize.
  • @return - serialized object as oatpp::String.

oatpp::String writeToString(const type::Void& variant) const
-

# ObjectMapper::readFromCaret

Deserialize object. If nullptr is returned - check caret.getError()

  • @tparam Wrapper - ObjectWrapper type.
  • @param caret - oatpp::parser::Caret over serialized buffer.
  • @return - deserialized Object.
  • @throws - depends on implementation.

template<class Wrapper>
-Wrapper readFromCaret(oatpp::parser::Caret& caret) const
-

# ObjectMapper::readFromString

Deserialize object.

  • @tparam Wrapper - ObjectWrapper type.
  • @param str - serialized data.
  • @return - deserialized Object.
  • @throws - oatpp::parser::ParsingError
  • @throws - depends on implementation.

template<class Wrapper>
-Wrapper readFromString(const oatpp::String& str) const
-

# ObjectMapper::Info

Metadata for ObjectMapper.

namespace oatpp { namespace data { namespace mapping { 
-  class ObjectMapper {
-    class Info {}
-  };
-}}}
-

# Fields

Type Name Summary
const char* const http_content_type Value for Content-Type http header when DTO is serialized via specified ObjectMapper.

# Methods

Return Type Name Summary
[none] Info Constructor.

# ObjectMapper::Info::http_content_type

Value for Content-Type http header when DTO is serialized via specified ObjectMapper.

const char* const http_content_type
-

# ObjectMapper::Info::Info

Constructor.

  • @param _http_content_type

Info(const char* _http_content_type)
-  : http_content_type(_http_content_type)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/TypeResolver/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/TypeResolver/index.html deleted file mode 100644 index f9ca79d14..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/TypeResolver/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - TypeResolver.hpp | Oat++ - - - - - - - -

# TypeResolver.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/TypeResolver.hpp"

# TypeResolver

Helper class to work with oatpp types.

namespace oatpp { namespace data { namespace mapping { 
-  class TypeResolver {}
-}}}
-

# Methods

Return Type Name Summary
[none] TypeResolver Default constructor.
[none] ~TypeResolver Virtual destructor.
void setKnownClass Set if the type class is considered known/unknown
void addKnownClasses Set all mentioned type classes as known.
bool isKnownClass Check if type class is known.
bool isKnownType Check if type is known.
void setEnabledInterpretations Set enabled type interpretations.
const std::vector<std::string>& getEnabledInterpretations Get enabled type interpretations.
const type::Type* resolveType Resolve unknown type according to enabled interpretations.
type::Void resolveValue Resolve unknown value according to enabled interpretations.
const type::Type* resolveObjectPropertyType Traverse object property tree resolving unknown types according to enabled interpretations.
type::Void resolveObjectPropertyValue Traverse object property tree resolving unknown value types according to enabled interpretations.

# TypeResolver::TypeResolver

Default constructor.

TypeResolver()
-

# TypeResolver::~TypeResolver

Virtual destructor.

virtual ~TypeResolver() = default
-

# TypeResolver::setKnownClass

Set if the type class is considered known/unknown

  • @param classId
  • @param isKnown

void setKnownClass(const type::ClassId& classId, bool isKnown)
-

# TypeResolver::addKnownClasses

Set all mentioned type classes as known.

  • @param knownClasses

void addKnownClasses(const std::vector<type::ClassId>& knownClasses)
-

# TypeResolver::isKnownClass

Check if type class is known.

  • @param classId
  • @return

bool isKnownClass(const type::ClassId& classId) const
-

# TypeResolver::isKnownType

Check if type is known.

  • @param type
  • @return

bool isKnownType(const type::Type* type) const
-

# TypeResolver::setEnabledInterpretations

Set enabled type interpretations.

  • @param interpretations

void setEnabledInterpretations(const std::vector<std::string>& interpretations)
-

# TypeResolver::getEnabledInterpretations

Get enabled type interpretations.

  • @return

const std::vector<std::string>& getEnabledInterpretations() const
-

# TypeResolver::resolveType

Resolve unknown type according to enabled interpretations.

  • @param type - type to resolve.
  • @param cache - local cache.
  • @return

const type::Type* resolveType(const type::Type* type, Cache& cache) const
-

# TypeResolver::resolveValue

Resolve unknown value according to enabled interpretations.

  • @param value - value to resolve.
  • @param cache - local cache.
  • @return

type::Void resolveValue(const type::Void& value, Cache& cache) const
-

# TypeResolver::resolveObjectPropertyType

Traverse object property tree resolving unknown types according to enabled interpretations.

  • @param objectType - base object type.
  • @param path - vector of property names.
  • @param cache - local cache.
  • @return - oatpp::Type. nullptr - if couldn't resolve.

const type::Type* resolveObjectPropertyType(const type::Type* objectType,
-                                            const std::vector<std::string>& path,
-                                            Cache& cache) const
-

# TypeResolver::resolveObjectPropertyValue

Traverse object property tree resolving unknown value types according to enabled interpretations.

  • @param object - base object.
  • @param path - vector of property names.
  • @param cache - local cache.
  • @return - value as oatpp::Void. The valueType will be set to resolved type or to oatpp::Void::Class::getType() if couldn't resolve.

type::Void resolveObjectPropertyValue(const type::Void& object,
-                                      const std::vector<std::string>& path,
-                                      Cache& cache) const
-

# TypeResolver::Cache

Local resolution cache used to reduce number of type interpretation iterations.

namespace oatpp { namespace data { namespace mapping { 
-  class TypeResolver {
-    struct Cache {}
-  };
-}}}
-

# Fields

Type Name Summary
std::unordered_map<const type::Type*, const type::Type*> types types map.
std::unordered_map<const type::Type*, std::unordered_map<type::Void, type::Void>> values values by type map.

# TypeResolver::Cache::types

types map.

std::unordered_map<const type::Type*, const type::Type*> types
-

# TypeResolver::Cache::values

values by type map.

std::unordered_map<const type::Type*, std::unordered_map<type::Void, type::Void>> values
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Any/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Any/index.html deleted file mode 100644 index 30062443a..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Any/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Any.hpp | Oat++ - - - - - - - -

# Any.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Any.hpp"

# Any

Any class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Any {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class Id.

# Any::CLASS_ID

Class Id.

static const ClassId CLASS_ID
-

# Any

Any - ObjectWrapper to hold Any oatpp mapping-enabled type.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class Any : public ObjectWrapper<AnyHandle, __class::Any> {}
-}}}}
-

# Methods

Return Type Name Summary
[none] Any Multiple implementations:
  1. Default constructor.
  2. Nullptr constructor.
  3. Copy constructor.
  4. Move constructor.
  5. Constructor.
void store Store any ObjectWrapper in Any.
const Type* getStoredType Get Type of the stored object.
Void retrieve Multiple implementations:
  1. Retrieve stored object of type type.
  2. Retrieve stored object.

# Any::Any

  1. Default constructor.
    Any()
    -
  2. Nullptr constructor.
    Any(std::nullptr_t)
    -
  3. Copy constructor.
    • @param other - other Any.
    Any(const Any& other)
    -
  4. Move constructor.
    • @param other
    Any(Any&& other)
    -
  5. Constructor.
    • @tparam T - Underlying type of ObjectWrapper.
    • @tparam C - __class of ObjectWrapper.
    • @param polymorph - any ObjectWrapper.
    template<class T, class C>
    -Any(const ObjectWrapper<T, C>& polymorph)
    -  : ObjectWrapper(std::make_shared<AnyHandle>(polymorph.getPtr(), polymorph.getValueType()), __class::Any::getType())
    -

# Any::store

Store any ObjectWrapper in Any.

  • @tparam T
  • @tparam C
  • @param polymorph - ObjectWrapper. Ex.: oatpp::String, oatpp::List<...>, etc.

template<class T, class C>
-void store(const ObjectWrapper<T, C>& polymorph)
-

# Any::getStoredType

Get Type of the stored object.

const Type* getStoredType() const
-

# Any::retrieve

  1. Retrieve stored object of type type.
    • @param type - oatpp::Type
    • @return - oatpp::Void.
    • @throws - std::runtime_error - if stored type and type requested do not match.
    Void retrieve(const Type* type) const
    -
  2. Retrieve stored object.
    • @tparam WrapperType - type of the object to retrieve.
    • @return - ObjectWrapper of type - WrapperType.
    • @throws - std::runtime_error - if stored type and type requested (WrapperType) do not match.
    template<class WrapperType>
    -WrapperType retrieve() const
    -
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Collection/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Collection/index.html deleted file mode 100644 index b9a3b1bc5..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Collection/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Collection.hpp | Oat++ - - - - - - - -

# Collection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Collection.hpp"

# Collection

Abstract Collection.
Ex.: Vector, List, Set.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Collection {}
-}}}}}
-

# Collection::Iterator

Iterator.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Collection {
-    struct Iterator {}
-  };
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~Iterator Default virtual destructor.
type::Void get Get current item.
void next Iterate to next item.
bool finished Check if iterator finished.

# Collection::Iterator::~Iterator

Default virtual destructor.

virtual ~Iterator() = default
-

# Collection::Iterator::get

Get current item.

  • @return

virtual type::Void get() = 0
-

# Collection::Iterator::next

Iterate to next item.

virtual void next() = 0
-

# Collection::Iterator::finished

Check if iterator finished.

  • @return

virtual bool finished() = 0
-

# Collection::PolymorphicDispatcher

Polymorphic Dispatcher

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Collection {
-    class PolymorphicDispatcher {}
-  };
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~PolymorphicDispatcher Virtual destructor.
type::Void createObject Create Collection.
const type::Type* getItemType Get type of collection items.
v_int64 getCollectionSize Get collection size.
void addItem Add item.
std::unique_ptr<Iterator> beginIteration Begin collection iteration.

# Collection::PolymorphicDispatcher::~PolymorphicDispatcher

Virtual destructor.

virtual ~PolymorphicDispatcher() = default
-

# Collection::PolymorphicDispatcher::createObject

Create Collection.

  • @return

virtual type::Void createObject() const = 0
-

# Collection::PolymorphicDispatcher::getItemType

Get type of collection items.

  • @return

virtual const type::Type* getItemType() const = 0
-

# Collection::PolymorphicDispatcher::getCollectionSize

Get collection size.

  • @param object - collection.
  • @return - size of the collection (elements count).

virtual v_int64 getCollectionSize(const type::Void& object) const = 0
-

# Collection::PolymorphicDispatcher::addItem

Add item.

  • @param object - Collection.
  • @param item - Item to add.

virtual void addItem(const type::Void& object, const type::Void& item) const = 0
-

# Collection::PolymorphicDispatcher::beginIteration

Begin collection iteration.

  • @param object - Collection.
  • @return

virtual std::unique_ptr<Iterator> beginIteration(const type::Void& object) const = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Enum/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Enum/index.html deleted file mode 100644 index 0d0b00ce8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Enum/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Enum.hpp | Oat++ - - - - - - - -

# Enum.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Enum.hpp"

# EnumInterpreterError

Errors of enum interpretation.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  enum class EnumInterpreterError : v_int32;
-}}}}
-

# EnumInterpreterError::OK

The interpretation was successful.

OK = 0
-

# EnumInterpreterError::TYPE_MISMATCH_ENUM

Wrong Interpreter is used to interpret the variable.
This may also occur if for example:
oatpp::Enum<T> is passed to interpreter of oatpp::Enum<T>::NotNull.

TYPE_MISMATCH_ENUM = 1
-

# EnumInterpreterError::TYPE_MISMATCH_ENUM_VALUE

Wrong oatpp::data::mapping::type::Primitive is passed to interpreter.

TYPE_MISMATCH_ENUM_VALUE = 2
-

# EnumInterpreterError::CONSTRAINT_NOT_NULL

Interpreter constraint is violated.
The constraint was set to NotNull but interpretation to/from nullptr is requested.

CONSTRAINT_NOT_NULL = 3
-

# EnumInterpreterError::ENTRY_NOT_FOUND

Enum entry not found.

ENTRY_NOT_FOUND = 4
-

# AbstractEnum

Abstract Enum class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractEnum {}
-}}}}}
-

# EnumValueInfo

Enum value info.

  • @tparam T - underlying enum type.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<typename T>
-  struct EnumValueInfo {}
-}}}}
-

# Fields

Type Name Summary
const T value Entry value. T - enum type.
const v_int32 index Index of the entry.
const data::share::StringKeyLabel name Name of the enum entry or name-qualifier, if qualifier was specified.
oatpp::data::share::StringKeyLabel.
const data::share::StringKeyLabel description Description of the enum etry.
oatpp::data::share::StringKeyLabel.

# EnumValueInfo::value

Entry value. T - enum type.

const T value
-

# EnumValueInfo::index

Index of the entry.

const v_int32 index
-

# EnumValueInfo::name

Name of the enum entry or name-qualifier, if qualifier was specified.
oatpp::data::share::StringKeyLabel.

const data::share::StringKeyLabel name
-

# EnumValueInfo::description

Description of the enum etry.
oatpp::data::share::StringKeyLabel.

const data::share::StringKeyLabel description
-

# EnumInterpreterAsString

Enum interpreter AsString

  • @tparam T
  • @tparam notnull

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, bool notnull>
-  class EnumInterpreterAsString {}
-}}}}
-

# EnumInterpreterAsNumber

Enum interpreter AsNumber

  • @tparam T
  • @tparam notnull

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, bool notnull>
-  class EnumInterpreterAsNumber {}
-}}}}
-

# EnumObjectWrapper

Template class for oatpp::Enum<T>.

  • @tparam T - enum type.
  • @tparam EnumInterpreter - enum interpreter.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, class EnumInterpreter>
-  class EnumObjectWrapper : public ObjectWrapper<T, __class::Enum<T, EnumInterpreter>> {}
-}}}}
-

# Typedefs

Type Name Summary
EnumInterpreter Interpreter Template parameter - Interpreter.
EnumObjectWrapper<T, EnumInterpreterAsString<T, EnumInterpreter::notNull>> AsString Enum interpreted AsString.
EnumObjectWrapper<T, EnumInterpreterAsNumber<T, EnumInterpreter::notNull>> AsNumber Enum interpreted AsNumber.
EnumObjectWrapper<T, typenameEnumInterpreter::templateInterpreterType<true>> NotNull Enum with NotNull interpretation constraint.

# Methods

Return Type Name Summary
[none] EnumObjectWrapper Multiple implementations:
  1. Default constructor.
  2. Nullptr constructor.
  3. Constructor.
  4. Constructor.
  5. Copy-constructor.
  6. Move-constructor.
  7. Constructor by value.
const EnumValueInfo<T>& getEntryByName Get EnumValueInfo<T> by name.
const EnumValueInfo<T>& getEntryByValue Get EnumValueInfo<T> by enum value.
const EnumValueInfo<T>& getEntryByUnderlyingValue Get EnumValueInfo<T> by integer value.
const EnumValueInfo<T>& getEntryByIndex Get EnumValueInfo<T> by index.
const std::vector<EnumValueInfo<T>>& getEntries Get std::vector of EnumValueInfo<T>.

# EnumObjectWrapper::Interpreter

Template parameter - Interpreter.

typedef EnumInterpreter Interpreter
-

# EnumObjectWrapper::AsString

Enum interpreted AsString.

typedef EnumObjectWrapper<T, EnumInterpreterAsString<T, EnumInterpreter::notNull>> AsString
-

# EnumObjectWrapper::AsNumber

Enum interpreted AsNumber.

typedef EnumObjectWrapper<T, EnumInterpreterAsNumber<T, EnumInterpreter::notNull>> AsNumber
-

# EnumObjectWrapper::NotNull

Enum with NotNull interpretation constraint.

typedef EnumObjectWrapper<T, typename EnumInterpreter::template InterpreterType<true>> NotNull
-

# EnumObjectWrapper::EnumObjectWrapper

  1. Default constructor.
    EnumObjectWrapper()
    -
  2. Nullptr constructor.
    EnumObjectWrapper(std::nullptr_t)
    -
  3. Constructor.
    • @param ptr
    EnumObjectWrapper(const std::shared_ptr<T>& ptr)
    -  : type::ObjectWrapper<T, EnumObjectClass>(ptr)
    -
  4. Constructor.
    • @param ptr
    EnumObjectWrapper(std::shared_ptr<T>&& ptr)
    -  : type::ObjectWrapper<T, EnumObjectClass>(std::forward<std::shared_ptr<T>>(ptr))
    -
  5. Copy-constructor.
    • @tparam OtherInter
    • @param other
    template<class OtherInter>
    -EnumObjectWrapper(const EnumObjectWrapper<T, OtherInter>& other)
    -  : type::ObjectWrapper<T, EnumObjectClass>(other.m_ptr)
    -
  6. Move-constructor.
    • @tparam OtherInter
    • @param other
    template<class OtherInter>
    -EnumObjectWrapper(EnumObjectWrapper<T, OtherInter>&& other)
    -  : type::ObjectWrapper<T, EnumObjectClass>(std::move(other.m_ptr))
    -
  7. Constructor by value.
    • @param value
    EnumObjectWrapper(T value)
    -  : type::ObjectWrapper<T, EnumObjectClass>(std::make_shared<T>(value))
    -

# EnumObjectWrapper::getEntryByName

Get EnumValueInfo<T> by name.

  • @param name - name or name-qualifier of the enum entry.
  • @return - EnumValueInfo<T>.
  • @throws - std::runtime_error if not found.

static const EnumValueInfo<T>& getEntryByName(const String& name)
-

# EnumObjectWrapper::getEntryByValue

Get EnumValueInfo<T> by enum value.

  • @param value - enum value.
  • @return - EnumValueInfo<T>.
  • @throws - std::runtime_error if not found.

static const EnumValueInfo<T>& getEntryByValue(T value)
-

# EnumObjectWrapper::getEntryByUnderlyingValue

Get EnumValueInfo<T> by integer value.

  • @param value - integer value.
  • @return - EnumValueInfo<T>.
  • @throws - std::runtime_error if not found.

static const EnumValueInfo<T>& getEntryByUnderlyingValue(UnderlyingEnumType value)
-

# EnumObjectWrapper::getEntryByIndex

Get EnumValueInfo<T> by index.

  • @param index - index of the entry in the enum.
  • @return - EnumValueInfo<T>.
  • @throws - std::runtime_error if not found.

static const EnumValueInfo<T>& getEntryByIndex(v_int32 index)
-

# EnumObjectWrapper::getEntries

Get std::vector of EnumValueInfo<T>.

static const std::vector<EnumValueInfo<T>>& getEntries()
-

# Enum

Namespace: oatpp::data::mapping::type

Mapping-enabled Enum. See EnumObjectWrapper.

template <class T>
-using Enum = EnumObjectWrapper<T, EnumInterpreterAsString<T, false>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/List/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/List/index.html deleted file mode 100644 index ba0b84728..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/List/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - List.hpp | Oat++ - - - - - - - -

# List.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/List.hpp"

# AbstractList

Abstract list class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractList {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class Id.

# AbstractList::CLASS_ID

Class Id.

static const ClassId CLASS_ID
-

# ListObjectWrapper

ObjectWrapper over std::list<T>

  • @tparam T - Item ObjectWrapper type.
  • @tparam C - Class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, class C>
-  class ListObjectWrapper : public type::ObjectWrapper<std::list<T>, C> {}
-}}}}
-

# List

Namespace: oatpp::data::mapping::type

Mapping-Enabled List. See - ListObjectWrapper.

template<class T>
-using List = ListObjectWrapper<T, __class::List<T>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Map/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Map/index.html deleted file mode 100644 index 2770c7013..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Map/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - Map.hpp | Oat++ - - - - - - - -

# Map.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Map.hpp"

# Map

Abstract Map.
Ex.: UnorderedMap, Fields.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Map {}
-}}}}}
-

# Map::Iterator

Iterator.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Map {
-    struct Iterator {}
-  };
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~Iterator Default virtual destructor.
type::Void getKey Get current item key.
type::Void getValue Get current item value.
void next Iterate to next item.
bool finished Check if iterator finished.

# Map::Iterator::~Iterator

Default virtual destructor.

virtual ~Iterator() = default
-

# Map::Iterator::getKey

Get current item key.

  • @return

virtual type::Void getKey() = 0
-

# Map::Iterator::getValue

Get current item value.

  • @return

virtual type::Void getValue() = 0
-

# Map::Iterator::next

Iterate to next item.

virtual void next() = 0
-

# Map::Iterator::finished

Check if iterator finished.

  • @return

virtual bool finished() = 0
-

# Map::PolymorphicDispatcher

Polymorphic Dispatcher

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Map {
-    class PolymorphicDispatcher {}
-  };
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~PolymorphicDispatcher Virtual destructor.
type::Void createObject Create Map.
const type::Type* getKeyType Get type of map keys.
const type::Type* getValueType Get type of map values.
v_int64 getMapSize Get map size.
void addItem Add item.
std::unique_ptr<Iterator> beginIteration Begin map iteration.

# Map::PolymorphicDispatcher::~PolymorphicDispatcher

Virtual destructor.

virtual ~PolymorphicDispatcher() = default
-

# Map::PolymorphicDispatcher::createObject

Create Map.

  • @return

virtual type::Void createObject() const = 0
-

# Map::PolymorphicDispatcher::getKeyType

Get type of map keys.

  • @return

virtual const type::Type* getKeyType() const = 0
-

# Map::PolymorphicDispatcher::getValueType

Get type of map values.

  • @return

virtual const type::Type* getValueType() const = 0
-

# Map::PolymorphicDispatcher::getMapSize

Get map size.

  • @param object - map object.
  • @return - size of the map.

virtual v_int64 getMapSize(const type::Void& object) const = 0
-

# Map::PolymorphicDispatcher::addItem

Add item.

  • @param object - Map.
  • @param key
  • @param value

virtual void addItem(const type::Void& object, const type::Void& key, const type::Void& value) const = 0
-

# Map::PolymorphicDispatcher::beginIteration

Begin map iteration.

  • @param object - Map.
  • @return

virtual std::unique_ptr<Iterator> beginIteration(const type::Void& object) const = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Object/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Object/index.html deleted file mode 100644 index 9758070fc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Object/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Object.hpp | Oat++ - - - - - - - -

# Object.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Object.hpp"

# BaseObject

Base class of all object-like mapping-enabled structures ex.: oatpp::DTO.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class BaseObject : public oatpp::base::Countable {}
-}}}}
-

# BaseObject::Property

Class to map object properties.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class BaseObject : public oatpp::base::Countable {
-    class Property {}
-  };
-}}}}
-

# Fields

Type Name Summary
const char* const name Property name.
const Type* const type Property type.
Info info Property additional info.

# Methods

Return Type Name Summary
[none] Property Constructor.
void set Set value of object field mapped by this property.
Void get Get value of object field mapped by this property.
Void& getAsRef Get reference to ObjectWrapper of the object field.

# BaseObject::Property::name

Property name.

const char* const name
-

# BaseObject::Property::type

Property type.

const Type* const type
-

# BaseObject::Property::info

Property additional info.

Info info
-

# BaseObject::Property::Property

Constructor.

  • @param pOffset - memory offset of object field from object start address.
  • @param pName - name of the property.
  • @param pType - Type of the property.

Property(v_int64 pOffset, const char* pName, const Type* pType)
-

# BaseObject::Property::set

Set value of object field mapped by this property.

  • @param object - object address.
  • @param value - value to set.

void set(BaseObject* object, const Void& value)
-

# BaseObject::Property::get

Get value of object field mapped by this property.

  • @param object - object address.
  • @return - value of the field.

Void get(BaseObject* object)
-

# BaseObject::Property::getAsRef

Get reference to ObjectWrapper of the object field.

  • @param object - object address.
  • @return - reference to ObjectWrapper of the object field.

Void& getAsRef(BaseObject* object)
-

# BaseObject::Property::Info

Editional Info about Property.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class BaseObject : public oatpp::base::Countable {
-    class Property {
-      struct Info {}
-    };
-  };
-}}}}
-

# Fields

Type Name Summary
std::string description Description.
std::string pattern Pattern.
bool required Required.
TypeSelector* typeSelector Type selector. Property::TypeSelector.

# BaseObject::Property::Info::description

Description.

std::string description = ""
-

# BaseObject::Property::Info::pattern

Pattern.

std::string pattern = ""
-

# BaseObject::Property::Info::required

Required.

bool required = false
-

# BaseObject::Property::Info::typeSelector

Type selector. Property::TypeSelector.

TypeSelector* typeSelector = nullptr
-

# BaseObject::Property::TypeSelector

Property Type Selector.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class BaseObject : public oatpp::base::Countable {
-    class Property {
-      class TypeSelector {}
-    };
-  };
-}}}}
-

# Methods

Return Type Name Summary
[none] ~TypeSelector Default destructor.
const type::Type* selectType Select property type.

# BaseObject::Property::TypeSelector::~TypeSelector

Default destructor.

virtual ~TypeSelector() = default
-

# BaseObject::Property::TypeSelector::selectType

Select property type.

  • @param self - pointer to this object.
  • @return - oatpp::Type.

virtual const type::Type* selectType(BaseObject* self) = 0
-

# BaseObject::Properties

Object type properties table.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class BaseObject : public oatpp::base::Countable {
-    class Properties {}
-  };
-}}}}
-

# Methods

Return Type Name Summary
Property* pushBack Add property to the end of the list.
void pushFrontAll Add all properties to the beginning of the list.
const std::unordered_map<std::string, Property*>& getMap Get properties as unordered map for random access.
const std::list<Property*>& getList Get properties in ordered way.

# BaseObject::Properties::pushBack

Add property to the end of the list.

  • @param property

Property* pushBack(Property* property)
-

# BaseObject::Properties::pushFrontAll

Add all properties to the beginning of the list.

  • @param properties

void pushFrontAll(Properties* properties)
-

# BaseObject::Properties::getMap

Get properties as unordered map for random access.

const std::unordered_map<std::string, Property*>& getMap() const
-

# BaseObject::Properties::getList

Get properties in ordered way.

const std::list<Property*>& getList() const
-

# AbstractObject

AbstractObject class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractObject {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class id.

# AbstractObject::CLASS_ID

Class id.

static const ClassId CLASS_ID
-

# Object

Template for Object class of type T.

  • @tparam T - object type.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  template<class T>
-  class Object : public AbstractObject {}
-}}}}}
-

# Methods

Return Type Name Summary
Type* getType Get type describing this class.

# Object::getType

Get type describing this class.

static Type* getType()
-

# DTOWrapper

ObjectWrapper for DTO. AKA oatpp::Object<T>.

  • @tparam ObjT - class extended from DTO.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class ObjT>
-  class DTOWrapper : public ObjectWrapper<ObjT, __class::Object<ObjT>> {}
-}}}}
-

# DTO

Base class for all DTO objects. For more info about Data Transfer Object (DTO) see Data Transfer Object (DTO).

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class DTO : public BaseObject {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/PairList/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/PairList/index.html deleted file mode 100644 index fba98b6c2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/PairList/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - PairList.hpp | Oat++ - - - - - - - -

# PairList.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/PairList.hpp"

# AbstractPairList

Abstract PairList class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractPairList {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class id.

# AbstractPairList::CLASS_ID

Class id.

static const ClassId CLASS_ID
-

# PairListObjectWrapper

ObjectWrapper over std::list<std::pair<Key, Value>>

  • @tparam Key - Key ObjectWrapper type.
  • @tparam Value - Value ObjectWrapper type.
  • @tparam C - Class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class Key, class Value, class C>
-  class PairListObjectWrapper : public type::ObjectWrapper<std::list<std::pair<Key, Value>>, C> {}
-}}}}
-

# PairList

Namespace: oatpp::data::mapping::type

Mapping-Enables PairList<Key, Value>. See PairListObjectWrapper.

template<class Key, class Value>
-using PairList = PairListObjectWrapper<Key, Value, __class::PairList<Key, Value>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Primitive/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Primitive/index.html deleted file mode 100644 index ec57ed401..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Primitive/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - Primitive.hpp | Oat++ - - - - - - - -

# Primitive.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Primitive.hpp"

# String

Mapping-enables String is type::ObjectWrapper over std::string;

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class String : public type::ObjectWrapper<std::string, __class::String> {}
-}}}}
-

# Methods

Return Type Name Summary
String loadFromFile Load data from file and store in oatpp::String.
void saveToFile Save content of the buffer to file.
bool equalsCI_ASCII Multiple implementations:
  1. Case insensitive compare (ASCII only).
  2. Case insensitive compare (ASCII only).
  3. Case insensitive compare (ASCII only).
std::string getValue Get underlying value.

# String::loadFromFile

Load data from file and store in oatpp::String.

static String loadFromFile(const char* filename)
-

# String::saveToFile

Save content of the buffer to file.

  • @param filename - name of the file.

void saveToFile(const char* filename) const
-

# String::equalsCI_ASCII

  1. Case insensitive compare (ASCII only).
    • @param other
    • @return
    bool equalsCI_ASCII(const std::string& other)
    -
  2. Case insensitive compare (ASCII only).
    • @param other
    • @return
    bool equalsCI_ASCII(const String& other)
    -
  3. Case insensitive compare (ASCII only).
    • @param other
    • @return
    bool equalsCI_ASCII(const char* str)
    -

# String::getValue

Get underlying value.

  • @param defaultValue - value to return in case stored value is nullptr.
  • @return - value or defaultValue if stored value is nullptr.

std::string getValue(const std::string& defaultValue) const
-

# Primitive

Template for primitive mapping-enabled types.

  • @tparam TValueType - type of the value ex.: v_int64.
  • @tparam Clazz - Class holding static class information.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<typename TValueType, class Clazz>
-  class Primitive : public type::ObjectWrapper<TValueType, Clazz> {}
-}}}}
-

# Boolean

ObjectWrapper for Boolean.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class Boolean : public type::ObjectWrapper<bool, __class::Boolean> {}
-}}}}
-

# Int8

Namespace: oatpp::data::mapping::type

Int8 is an ObjectWrapper over v_int8 and __class::Int8.

typedef Primitive<v_int8, __class::Int8> Int8
-

# UInt8

Namespace: oatpp::data::mapping::type

UInt8 is an ObjectWrapper over v_uint8 and __class::UInt8.

typedef Primitive<v_uint8, __class::UInt8> UInt8
-

# Int16

Namespace: oatpp::data::mapping::type

Int16 is an ObjectWrapper over v_int16 and __class::Int16.

typedef Primitive<v_int16, __class::Int16> Int16
-

# UInt16

Namespace: oatpp::data::mapping::type

UInt16 is an ObjectWrapper over v_uint16 and __class::UInt16.

typedef Primitive<v_uint16, __class::UInt16> UInt16
-

# Int32

Namespace: oatpp::data::mapping::type

Int32 is an ObjectWrapper over v_int32 and __class::Int32.

typedef Primitive<v_int32, __class::Int32> Int32
-

# UInt32

Namespace: oatpp::data::mapping::type

UInt32 is an ObjectWrapper over v_uint32 and __class::UInt32.

typedef Primitive<v_uint32, __class::UInt32> UInt32
-

# Int64

Namespace: oatpp::data::mapping::type

Int64 is an ObjectWrapper over v_int64 and __class::Int64.

typedef Primitive<v_int64, __class::Int64> Int64
-

# UInt64

Namespace: oatpp::data::mapping::type

UInt64 is an ObjectWrapper over v_uint64 and __class::UInt64.

typedef Primitive<v_uint64, __class::UInt64> UInt64
-

# Float32

Namespace: oatpp::data::mapping::type

Float32 is an ObjectWrapper over v_float32 and __class::Float32.

typedef Primitive<v_float32, __class::Float32> Float32
-

# Float64

Namespace: oatpp::data::mapping::type

Float64 is an ObjectWrapper over v_float64 and __class::Float64.

typedef Primitive<v_float64, __class::Float64> Float64
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Type/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Type/index.html deleted file mode 100644 index eef2ef07e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Type/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Type.hpp | Oat++ - - - - - - - -

# Type.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Type.hpp"

# ClassId

Structure representing ID of the type class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class ClassId {}
-}}}}
-

# Fields

Type Name Summary
const char* const name Name of the type class.
const v_int32 id Integer ID of the type class.
Note: class type IDs are integer values incremented continuously from [0 to getClassCount()]

# Methods

Return Type Name Summary
int getClassCount Get count of all type classes created.
std::vector<const char*> getRegisteredClassNames Get registered class names.
[none] ClassId Constructor.

# ClassId::name

Name of the type class.

const char* const name
-

# ClassId::id

Integer ID of the type class.
Note: class type IDs are integer values incremented continuously from [0 to getClassCount()]

const v_int32 id
-

# ClassId::getClassCount

Get count of all type classes created.

  • @return

static int getClassCount()
-

# ClassId::getRegisteredClassNames

Get registered class names.

  • @return

static std::vector<const char*> getRegisteredClassNames()
-

# ClassId::ClassId

Constructor.

  • @param pName

ClassId(const char* pName)
-

# Void

Void Object Class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class Void {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class id.

# Methods

Return Type Name Summary
Type* getType Get class type information.

# Void::CLASS_ID

Class id.

static const ClassId CLASS_ID
-

# Void::getType

Get class type information.

static Type* getType()
-

# ObjectWrapper

ObjectWrapper holds std::shared_ptr to object, object static type, plus object dynamic type information.

  • @tparam T - Object Type.
  • @tparam Clazz - Static type info.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template <class T, class Clazz = __class::Void>
-  class ObjectWrapper {}
-}}}}
-

# Typedefs

Type Name Summary
T ObjectType Static object type
Clazz Class Static object class information.

# Methods

Return Type Name Summary
const Type* getValueType Get value type

# ObjectWrapper::ObjectType

Static object type

typedef T ObjectType
-

# ObjectWrapper::Class

Static object class information.

typedef Clazz Class
-

# ObjectWrapper::getValueType

Get value type

  • @return

const Type* getValueType() const
-

# Type

Object type data.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class Type {}
-}}}}
-

# Fields

Type Name Summary
const ClassId classId type class id.
const char* const nameQualifier Type name qualifier.
const std::vector<const Type*> params List of type parameters - for templated types.
const void* const polymorphicDispatcher PolymorphicDispatcher - is an object to forward polymorphic calls to a correct object of type Type.
const InterpretationMap interpretationMap Map of type Interpretations.
const Type* const parent Parent type.
Ex.: DTO super-class type.
Note: setting parent type also means that child object can be statically casted to parent type without any violations.
const bool isCollection polymorphicDispatcher extends oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher.
const bool isMap polymorphicDispatcher extends oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher.

# Methods

Return Type Name Summary
[none] Type Constructor.
const AbstractInterpretation* findInterpretation Find type interpretation.
bool extends Check if type extends other type.

# Type::classId

type class id.

const ClassId classId
-

# Type::nameQualifier

Type name qualifier.

const char* const nameQualifier
-

# Type::params

List of type parameters - for templated types.

const std::vector<const Type*> params
-

# Type::polymorphicDispatcher

PolymorphicDispatcher - is an object to forward polymorphic calls to a correct object of type Type.

const void* const polymorphicDispatcher
-

# Type::interpretationMap

Map of type Interpretations.

const InterpretationMap interpretationMap
-

# Type::parent

Parent type.
Ex.: DTO super-class type.
Note: setting parent type also means that child object can be statically casted to parent type without any violations.

const Type* const parent
-

# Type::isCollection

polymorphicDispatcher extends oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher.

const bool isCollection
-

# Type::isMap

polymorphicDispatcher extends oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher.

const bool isMap
-

# Type::Type

Constructor.

  • @param pClassId - type class id.
  • @param typeInfo - type creation info. Type::Info.

Type(const ClassId& pClassId, const Info& typeInfo = Info())
-

# Type::findInterpretation

Find type interpretation.

  • @param names - list of possible interpretation names.
  • @return - Type::AbstractInterpretation. Returns the first interpretation found from the list or NULL if no interpretations found.

const AbstractInterpretation* findInterpretation(const std::vector<std::string>& names) const
-

# Type::extends

Check if type extends other type.

  • @param other
  • @return

bool extends(const Type* other) const
-

# Type::Info

Type info.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class Type {
-    struct Info {}
-  };
-}}}}
-

# Fields

Type Name Summary
const char* nameQualifier Type name qualifier.
std::vector<const Type*> params List of type parameters - for templated types.
void* polymorphicDispatcher PolymorphicDispatcher is responsible for forwarding polymorphic calls to a correct object of type Type.
InterpretationMap interpretationMap Map of type Interpretations.
const Type* parent Parent type.
Ex.: DTO super-class type.
Note: setting parent type also means that child object can be statically casted to parent type without any violations.
bool isCollection polymorphicDispatcher extends oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher.
bool isMap polymorphicDispatcher extends oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher.

# Methods

Return Type Name Summary
[none] Info Default constructor.

# Type::Info::nameQualifier

Type name qualifier.

const char* nameQualifier = nullptr
-

# Type::Info::params

List of type parameters - for templated types.

std::vector<const Type*> params
-

# Type::Info::polymorphicDispatcher

PolymorphicDispatcher is responsible for forwarding polymorphic calls to a correct object of type Type.

void* polymorphicDispatcher = nullptr
-

# Type::Info::interpretationMap

Map of type Interpretations.

InterpretationMap interpretationMap
-

# Type::Info::parent

Parent type.
Ex.: DTO super-class type.
Note: setting parent type also means that child object can be statically casted to parent type without any violations.

const Type* parent = nullptr
-

# Type::Info::isCollection

polymorphicDispatcher extends oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher.

bool isCollection = false
-

# Type::Info::isMap

polymorphicDispatcher extends oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher.

bool isMap = false
-

# Type::Info::Info

Default constructor.

Info()
-

# Type::AbstractInterpretation

Type Abstract Interpretation.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  class Type {
-    class AbstractInterpretation {}
-  };
-}}}}
-

# Methods

Return Type Name Summary
Void toInterpretation Convert the object to its interpretation.
Void fromInterpretation Convert interpretation back to the original object.
const Type* getInterpretationType Type of the interpretation.

# Type::AbstractInterpretation::toInterpretation

Convert the object to its interpretation.

  • @param originalValue
  • @return

virtual Void toInterpretation(const Void& originalValue) const = 0
-

# Type::AbstractInterpretation::fromInterpretation

Convert interpretation back to the original object.

  • @param interValue
  • @return

virtual Void fromInterpretation(const Void& interValue) const = 0
-

# Type::AbstractInterpretation::getInterpretationType

Type of the interpretation.

  • @return

virtual const Type* getInterpretationType() const = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedMap/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedMap/index.html deleted file mode 100644 index 22bd1d893..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedMap/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - UnorderedMap.hpp | Oat++ - - - - - - - -

# UnorderedMap.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/UnorderedMap.hpp"

# AbstractUnorderedMap

Abstract Unordered Map class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractUnorderedMap {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class Id.

# AbstractUnorderedMap::CLASS_ID

Class Id.

static const ClassId CLASS_ID
-

# UnorderedMapObjectWrapper

ObjectWrapper for std::unordered_map<Key, Value>

  • @tparam Key - Key ObjectWrapper type.
  • @tparam Value - Value ObjectWrapper type.
  • @tparam C - Class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class Key, class Value, class C>
-  class UnorderedMapObjectWrapper : public type::ObjectWrapper<std::unordered_map<Key, Value>, C> {}
-}}}}
-

# UnorderedMap

Namespace: oatpp::data::mapping::type

Mapping-Enables UnorderedMap<Key, Value>. See UnorderedMapObjectWrapper.

template<class Key, class Value>
-using UnorderedMap = UnorderedMapObjectWrapper<Key, Value, __class::UnorderedMap<Key, Value>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedSet/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedSet/index.html deleted file mode 100644 index b083fde7e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/UnorderedSet/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - UnorderedSet.hpp | Oat++ - - - - - - - -

# UnorderedSet.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/UnorderedSet.hpp"

# AbstractUnorderedSet

Abstract Unordered Set class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractUnorderedSet {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class Id.

# AbstractUnorderedSet::CLASS_ID

Class Id.

static const ClassId CLASS_ID
-

# UnorderedSetObjectWrapper

ObjectWrapper over std::unordered_set<T>

  • @tparam T - Key ObjectWrapper type.
  • @tparam C - Class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, class C>
-  class UnorderedSetObjectWrapper : public type::ObjectWrapper<std::unordered_set<T>, C> {}
-}}}}
-

# UnorderedSet

Namespace: oatpp::data::mapping::type

Mapping-Enabled UnorderedSet. See UnorderedSetObjectWrapper.

template<class T>
-using UnorderedSet = UnorderedSetObjectWrapper<T, __class::UnorderedSet<T>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Vector/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Vector/index.html deleted file mode 100644 index 75402bb54..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/mapping/type/Vector/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - Vector.hpp | Oat++ - - - - - - - -

# Vector.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Vector.hpp"

# AbstractVector

Abstract Vector Class.

namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class { 
-  class AbstractVector {}
-}}}}}
-

# Fields

Type Name Summary
const ClassId CLASS_ID Class Id.

# AbstractVector::CLASS_ID

Class Id.

static const ClassId CLASS_ID
-

# VectorObjectWrapper

ObjectWrapper over std::vector<T>.

  • @tparam T - Item ObjectWrapper type.
  • @tparam C - Class.

namespace oatpp { namespace data { namespace mapping { namespace type { 
-  template<class T, class C>
-  class VectorObjectWrapper : public type::ObjectWrapper<std::vector<T>, C> {}
-}}}}
-

# Vector

Namespace: oatpp::data::mapping::type

Mapping-enabled Vector. See VectorObjectWrapper.

template<class T>
-using Vector = VectorObjectWrapper<T, __class::Vector<T>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/File/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/File/index.html deleted file mode 100644 index 08ffcdabf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/File/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - File.hpp | Oat++ - - - - - - - -

# File.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/resource/File.hpp"

# File

File. extends - oatpp::data::Resource.

namespace oatpp { namespace data { namespace resource { 
-  class File : public Resource {}
-}}}
-

# Methods

Return Type Name Summary
[none] File Multiple implementations:
  1. Default constructor.
  2. Constructor.
  3. Constructor.
std::shared_ptr<data::stream::OutputStream> openOutputStream Open output stream to a file.
std::shared_ptr<data::stream::InputStream> openInputStream Open input stream to a temporary file.
oatpp::String getInMemoryData Not applicable.
v_int64 getKnownSize Not applicable.
oatpp::String getLocation Get location where temporary data is stored.

# File::File

  1. Default constructor.
    File() = default
    -
  2. Constructor.
    • @param fullFilename
    File(const oatpp::String& fullFilename)
    -
  3. Constructor.
    • @param directory
    • @param filename
    File(const oatpp::String& directory, const oatpp::String& filename)
    -

# File::openOutputStream

Open output stream to a file.
Note: stream also captures file-handle. The file object won't be deleted until the stream is deleted.

std::shared_ptr<data::stream::OutputStream> openOutputStream() override
-

# File::openInputStream

Open input stream to a temporary file.
Note: stream also captures file-handle. The file won't be deleted until the stream is deleted.

std::shared_ptr<data::stream::InputStream> openInputStream() override
-

# File::getInMemoryData

Not applicable.

  • @return - always returns nullptr.

oatpp::String getInMemoryData() override
-

# File::getKnownSize

Not applicable.

  • @return - always returns -1.

v_int64 getKnownSize() override
-

# File::getLocation

Get location where temporary data is stored.

  • @return - [oatpp::String](/api/latest/oatpp/core/Types/#string).

oatpp::String getLocation() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/InMemoryData/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/InMemoryData/index.html deleted file mode 100644 index 4f6b1099f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/InMemoryData/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - InMemoryData.hpp | Oat++ - - - - - - - -

# InMemoryData.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/resource/InMemoryData.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/Resource/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/Resource/index.html deleted file mode 100644 index dd8df2d3d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/Resource/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Resource.hpp | Oat++ - - - - - - - -

# Resource.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/resource/Resource.hpp"

# Resource

Abstract data resource

namespace oatpp { namespace data { namespace resource { 
-  class Resource : public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~Resource virtual destructor.
std::shared_ptr<data::stream::OutputStream> openOutputStream Open output stream.
std::shared_ptr<data::stream::InputStream> openInputStream Open input stream.
oatpp::String getInMemoryData Get in-memory data if applicable.
v_int64 getKnownSize Get known data size if applicable.
oatpp::String getLocation Get resource location if applicable.

# Resource::~Resource

virtual destructor.

virtual ~Resource() = default
-

# Resource::openOutputStream

Open output stream.

  • @return

virtual std::shared_ptr<data::stream::OutputStream> openOutputStream() = 0
-

# Resource::openInputStream

Open input stream.

  • @return

virtual std::shared_ptr<data::stream::InputStream> openInputStream() = 0
-

# Resource::getInMemoryData

Get in-memory data if applicable.

  • @return - [oatpp::String](/api/latest/oatpp/core/Types/#string) or nullptr if not applicable.

virtual oatpp::String getInMemoryData() = 0
-

# Resource::getKnownSize

Get known data size if applicable.

  • @return - known size of the data. -1 - if size is unknown.

virtual v_int64 getKnownSize() = 0
-

# Resource::getLocation

Get resource location if applicable.
location can be for example a file name.

  • @return - [oatpp::String](/api/latest/oatpp/core/Types/#string) or nullptr if not applicable.

virtual oatpp::String getLocation() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/TemporaryFile/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/TemporaryFile/index.html deleted file mode 100644 index 7ae6da50a..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/resource/TemporaryFile/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - TemporaryFile.hpp | Oat++ - - - - - - - -

# TemporaryFile.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/resource/TemporaryFile.hpp"

# TemporaryFile

Temporary file - the file which gets deleted when the destructor is called (more precisely when all copies of the same TemporaryFile object deleted).
The TemporaryFile object internally stores a shared_ptr to a file handle. When file handle deleted it also deletes the underlying file.
Thus it's safe to copy TemporaryFile object and you may treat TemporaryFile object as a shared_ptr to a temporary file.
extends - oatpp::data::Resource.

namespace oatpp { namespace data { namespace resource { 
-  class TemporaryFile : public Resource {}
-}}}
-

# Methods

Return Type Name Summary
[none] TemporaryFile Multiple implementations:
  1. Default constructor.
  2. Constructor.
  3. Constructor.
std::shared_ptr<data::stream::OutputStream> openOutputStream Open output stream to a temporary file.
std::shared_ptr<data::stream::InputStream> openInputStream Open input stream to a temporary file.
oatpp::String getInMemoryData Not applicable.
v_int64 getKnownSize Not applicable.
oatpp::String getLocation Get location where temporary data is stored.
bool moveFile Move payload to a different file.

# TemporaryFile::TemporaryFile

  1. Default constructor.
    TemporaryFile() = default
    -
  2. Constructor.
    Create temporary file with a random name in the tmpDirectory.
    The actual file will be created only after first write to that file.
    Example of the generated random file name: f7c6ecd44024ff31.tmp.
    • @param tmpDirectory - directory where to create a temporary file.
    • @param randomWordSizeBytes - number of random bytes to generate file name.
    TemporaryFile(const oatpp::String& tmpDirectory, v_int32 randomWordSizeBytes = 8)
    -
  3. Constructor.
    Create temporary file with the tmpFileName name in the tmpDirectory.
    • @param tmpDirectory - directory where to create a temporary file.
    • @param tmpFileName - predefined name for the temporary file.
    TemporaryFile(const oatpp::String& tmpDirectory, const oatpp::String& tmpFileName)
    -

# TemporaryFile::openOutputStream

Open output stream to a temporary file.
Note: stream also captures file-handle. The temporary file won't be deleted until the stream is deleted.

std::shared_ptr<data::stream::OutputStream> openOutputStream() override
-

# TemporaryFile::openInputStream

Open input stream to a temporary file.
Note: stream also captures file-handle. The temporary file won't be deleted until the stream is deleted.

std::shared_ptr<data::stream::InputStream> openInputStream() override
-

# TemporaryFile::getInMemoryData

Not applicable.

  • @return - always returns nullptr.

oatpp::String getInMemoryData() override
-

# TemporaryFile::getKnownSize

Not applicable.

  • @return - always returns -1.

v_int64 getKnownSize() override
-

# TemporaryFile::getLocation

Get location where temporary data is stored.

  • @return - [oatpp::String](/api/latest/oatpp/core/Types/#string).

oatpp::String getLocation() override
-

# TemporaryFile::moveFile

Move payload to a different file.

  • @param fullFileName - full-file-name. Note: all the parent folders must exist.
  • @return - true - file was successfully moved, false - otherwise.

bool moveFile(const oatpp::String& fullFileName)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/LazyStringMap/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/share/LazyStringMap/index.html deleted file mode 100644 index 6e0aac2b1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/LazyStringMap/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - LazyStringMap.hpp | Oat++ - - - - - - - -

# LazyStringMap.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/share/LazyStringMap.hpp"

# LazyStringMapTemplate

Lazy String Map keeps keys, and values as memory label. Once value is requested by user, the new memory block is allocated and value is copied to be stored permanently.

namespace oatpp { namespace data { namespace share { 
-  template<typename Key, typename MapType>
-  class LazyStringMapTemplate {}
-}}}
-

# Methods

Return Type Name Summary
[none] LazyStringMapTemplate Multiple implementations:
  1. Constructor.
  2. Copy-constructor.
  3. Move constructor.
void put Put value to map.
void put_LockFree Put value to map. Not thread-safe.
bool putIfNotExists Put value to map if not already exists.
bool putIfNotExists_LockFree Put value to map if not already exists. Not thread-safe.
bool putOrReplace Erases all occurrences of key and replaces them with a new entry
bool putOrReplace_LockFree Erases all occurrences of key and replaces them with a new entry. Not thread-safe.
String get Get value as oatpp::String.
T getAsMemoryLabel Get value as a memory label.
T getAsMemoryLabel_Unsafe Get value as a memory label without allocating memory for value.
const MapType& getAll Get map of all values.
const MapType& getAll_Unsafe Get map of all values without allocating memory for those keys/values.
v_int32 getSize Get number of entries in the map.

# LazyStringMapTemplate::LazyStringMapTemplate

  1. Constructor.
    LazyStringMapTemplate()
    -  : m_fullyInitialized(true)
    -
  2. Copy-constructor.
    • @param other
    LazyStringMapTemplate(const LazyStringMapTemplate& other)
    -
  3. Move constructor.
    • @param other
    LazyStringMapTemplate(LazyStringMapTemplate&& other)
    -

# LazyStringMapTemplate::put

Put value to map.

  • @param key
  • @param value

void put(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::put_LockFree

Put value to map. Not thread-safe.

  • @param key
  • @param value

void put_LockFree(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::putIfNotExists

Put value to map if not already exists.

  • @param key
  • @param value
  • @return

bool putIfNotExists(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::putIfNotExists_LockFree

Put value to map if not already exists. Not thread-safe.

  • @param key
  • @param value
  • @return

bool putIfNotExists_LockFree(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::putOrReplace

Erases all occurrences of key and replaces them with a new entry

  • @param key
  • @param value
  • @return - true if an entry was replaced, false if entry was only inserted.

bool putOrReplace(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::putOrReplace_LockFree

Erases all occurrences of key and replaces them with a new entry. Not thread-safe.

  • @param key
  • @param value
  • @return - true if an entry was replaced, false if entry was only inserted.

bool putOrReplace_LockFree(const Key& key, const StringKeyLabel& value)
-

# LazyStringMapTemplate::get

Get value as oatpp::String.

  • @param key
  • @return

String get(const Key& key) const
-

# LazyStringMapTemplate::getAsMemoryLabel

Get value as a memory label.

template<class T>
-T getAsMemoryLabel(const Key& key) const
-

# LazyStringMapTemplate::getAsMemoryLabel_Unsafe

Get value as a memory label without allocating memory for value.

template<class T>
-T getAsMemoryLabel_Unsafe(const Key& key) const
-

# LazyStringMapTemplate::getAll

Get map of all values.

  • @return

const MapType& getAll() const
-

# LazyStringMapTemplate::getAll_Unsafe

Get map of all values without allocating memory for those keys/values.

  • @return

const MapType& getAll_Unsafe() const
-

# LazyStringMapTemplate::getSize

Get number of entries in the map.

  • @return

v_int32 getSize() const
-

# LazyStringMap

Namespace: oatpp::data::share

Convenience template for LazyStringMapTemplate. Based on std::unordered_map.

template<typename Key, typename Value = StringKeyLabel>
-using LazyStringMap = LazyStringMapTemplate<Key, std::unordered_map<Key, Value>>
-

# LazyStringMultimap

Namespace: oatpp::data::share

Convenience template for LazyStringMapTemplate. Based on std::unordered_map.

template<typename Key, typename Value = StringKeyLabel>
-using LazyStringMultimap = LazyStringMapTemplate<Key, std::unordered_multimap<Key, Value>>
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/MemoryLabel/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/share/MemoryLabel/index.html deleted file mode 100644 index 52b029c3b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/MemoryLabel/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - MemoryLabel.hpp | Oat++ - - - - - - - -

# MemoryLabel.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/share/MemoryLabel.hpp"

# MemoryLabel

MemoryLabel represent a part of the whole memory buffer refered by handle. Advantage of MemoryLabel use is that you may just "label" some data instead of allocating buffer for it's copy. You may allocate separate buffer for data copy later once you need it.

namespace oatpp { namespace data { namespace share { 
-  class MemoryLabel {}
-}}}
-

# Methods

Return Type Name Summary
[none] MemoryLabel Multiple implementations:
  1. Default constructor. Null MemoryLabel.
  2. nullptr constructor.
  3. Constructor.
  4. Constructor.
const void* getData Get pointer to labeled data.
v_buff_size getSize Get data size.
std::shared_ptr<std::string> getMemoryHandle Get memory handle which this memory label holds.
void captureToOwnMemory Capture data referenced by memory label to its own memory.
bool equals Multiple implementations:
  1. Check if labeled data equals to data specified.
  2. Check if labeled data equals to data specified.
String toString Create oatpp::String from memory label
std::string std_str Create std::string from memory label

# MemoryLabel::MemoryLabel

  1. Default constructor. Null MemoryLabel.
    MemoryLabel()
    -  : m_memoryHandle(nullptr)
    -  , m_data(nullptr)
    -  , m_size(0)
    -
  2. nullptr constructor.
    MemoryLabel(std::nullptr_t)
    -  : m_memoryHandle(nullptr)
    -  , m_data(nullptr)
    -  , m_size(0)
    -
  3. Constructor.
    • @param ptr
    MemoryLabel(const std::shared_ptr<std::string>& ptr) :
    -  MemoryLabel(
    -    ptr,
    -    ptr ? ptr->data() : nullptr,
    -    ptr ? (v_buff_size) ptr->size() :  0
    -  )
    -
  4. Constructor.
    • @param memHandle - memory handle. std::shared_ptr to buffer pointed by a memory label.
    • @param data - pointer to data.
    • @param size - size of the data in bytes.
    MemoryLabel(const std::shared_ptr<std::string>& memHandle, const void* data, v_buff_size size)
    -

# MemoryLabel::getData

Get pointer to labeled data.

  • @return - pointer to data.

const void* getData() const
-

# MemoryLabel::getSize

Get data size.

  • @return - size of the data.

v_buff_size getSize() const
-

# MemoryLabel::getMemoryHandle

Get memory handle which this memory label holds.

  • @return - std::shared_ptr to std::string.

std::shared_ptr<std::string> getMemoryHandle() const
-

# MemoryLabel::captureToOwnMemory

Capture data referenced by memory label to its own memory.

void captureToOwnMemory() const
-

# MemoryLabel::equals

  1. Check if labeled data equals to data specified. Data is compared using oatpp::urils::String::compare.
    • @param data - data to compare with labeled data.
    • @return - true if equals.
    bool equals(const char* data) const
    -
  2. Check if labeled data equals to data specified. Data is compared using oatpp::urils::String::compare.
    • @param data - data to compare with labeled data.
    • @param size - data size.
    • @return - true if equals.
    bool equals(const void* data, v_buff_size size) const
    -

# MemoryLabel::toString

Create oatpp::String from memory label

  • @return oatpp::String(data, size)

String toString() const
-

# MemoryLabel::std_str

Create std::string from memory label

  • @return std::string(data, size)

std::string std_str() const
-

# StringKeyLabel

MemoryLabel which can be used as a key in unordered_map

namespace oatpp { namespace data { namespace share { 
-  class StringKeyLabel : public MemoryLabel {}
-}}}
-

# Methods

Return Type Name Summary
[none] StringKeyLabel Constructor.

# StringKeyLabel::StringKeyLabel

Constructor.

  • @param ptr

StringKeyLabel(const std::shared_ptr<std::string>& ptr) : MemoryLabel(ptr)
-

# StringKeyLabelCI

MemoryLabel which can be used as a case-insensitive key in unordered_map

namespace oatpp { namespace data { namespace share { 
-  class StringKeyLabelCI : public MemoryLabel {}
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/StringTemplate/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/share/StringTemplate/index.html deleted file mode 100644 index 7d39016ce..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/share/StringTemplate/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - StringTemplate.hpp | Oat++ - - - - - - - -

# StringTemplate.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/share/StringTemplate.hpp"

# StringTemplate

String template.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {}
-}}}
-

# Methods

Return Type Name Summary
[none] StringTemplate Constructor.
void format Multiple implementations:
  1. Format template.
  2. Format template using StringTemplate::VectorValueProvider.
  3. Format template using StringTemplate::MapValueProvider.
  4. Format template using StringTemplate::SingleValueProvider.
  5. Format template.
  6. Format template using StringTemplate::VectorValueProvider.
  7. Format template using StringTemplate::MapValueProvider.
  8. Format template using StringTemplate::SingleValueProvider.
const std::vector<Variable>& getTemplateVariables Get all template variables.
void setExtraData Set some extra data associated with the template.
std::shared_ptr<void> getExtraData Get extra data associated with the template.

# StringTemplate::StringTemplate

Constructor.

  • @param text - original template text.
  • @param variables - template variables.

StringTemplate(const oatpp::String& text, std::vector<Variable>&& variables)
-

# StringTemplate::format

  1. Format template.
    void format(stream::ConsistentOutputStream* stream, ValueProvider* valueProvider) const
    -
  2. Format template using StringTemplate::VectorValueProvider.
    • @param stream - stream to write result to.
    • @param params - std::vector<oatpp::String>.
    void format(stream::ConsistentOutputStream* stream, const std::vector<oatpp::String>& params) const
    -
  3. Format template using StringTemplate::MapValueProvider.
    • @param stream - stream to write result to.
    • @param params - std::unordered_map<oatpp::String, oatpp::String>.
    void format(stream::ConsistentOutputStream* stream, const std::unordered_map<oatpp::String, oatpp::String>& params) const
    -
  4. Format template using StringTemplate::SingleValueProvider.
    • @param stream - stream to write result to.
    • @param singleValue - value.
    void format(stream::ConsistentOutputStream* stream, const oatpp::String& singleValue) const
    -
  5. Format template.
    oatpp::String format(ValueProvider* valueProvider) const
    -
  6. Format template using StringTemplate::VectorValueProvider.
    • @param params - std::vector<oatpp::String>.
    • @return - resultant string.
    oatpp::String format(const std::vector<oatpp::String>& params) const
    -
  7. Format template using StringTemplate::MapValueProvider.
    • @param params - std::unordered_map<oatpp::String, oatpp::String>.
    • @return - resultant string.
    oatpp::String format(const std::unordered_map<oatpp::String, oatpp::String>& params) const
    -
  8. Format template using StringTemplate::SingleValueProvider.
    • @param singleValue - value.
    • @return - resultant string.
    oatpp::String format(const oatpp::String& singleValue) const
    -

# StringTemplate::getTemplateVariables

Get all template variables.

const std::vector<Variable>& getTemplateVariables() const
-

# StringTemplate::setExtraData

Set some extra data associated with the template.

  • @param data

void setExtraData(const std::shared_ptr<void>& data)
-

# StringTemplate::getExtraData

Get extra data associated with the template.

  • @return

std::shared_ptr<void> getExtraData() const
-

# StringTemplate::Variable

Template variable.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {
-    struct Variable {}
-  };
-}}}
-

# Fields

Type Name Summary
v_buff_size posStart Position of the first char in the original template string.
v_buff_size posEnd Position of the last char in the original template string.
oatpp::String name Name of the template variable.
std::shared_ptr<void> extra Some auxiliary data.

# StringTemplate::Variable::posStart

Position of the first char in the original template string.

v_buff_size posStart
-

# StringTemplate::Variable::posEnd

Position of the last char in the original template string.

v_buff_size posEnd
-

# StringTemplate::Variable::name

Name of the template variable.

oatpp::String name
-

# StringTemplate::Variable::extra

Some auxiliary data.

std::shared_ptr<void> extra
-

# StringTemplate::ValueProvider

Abstract template value provider.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {
-    class ValueProvider {}
-  };
-}}}
-

# Methods

Return Type Name Summary
[none] ~ValueProvider Default virtual destructor.
oatpp::String getValue Get value for variable.

# StringTemplate::ValueProvider::~ValueProvider

Default virtual destructor.

virtual ~ValueProvider() = default
-

# StringTemplate::ValueProvider::getValue

Get value for variable.

  • @param variable - StringTemplate::Variable.
  • @param index - index of the variable in the template.
  • @return - value for the given variable.

virtual oatpp::String getValue(const Variable& variable, v_uint32 index) = 0
-

# StringTemplate::VectorValueProvider

Provider of template variable-values based on the std::vector.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {
-    class VectorValueProvider : public ValueProvider {}
-  };
-}}}
-

# StringTemplate::MapValueProvider

Provider of template variable-values based on the std::unordered_map.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {
-    class MapValueProvider : public ValueProvider {}
-  };
-}}}
-

# StringTemplate::SingleValueProvider

Provider of template variable-values which returns the same value for all variables.

namespace oatpp { namespace data { namespace share { 
-  class StringTemplate {
-    class SingleValueProvider : public ValueProvider {}
-  };
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/BufferStream/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/BufferStream/index.html deleted file mode 100644 index e301e864f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/BufferStream/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - BufferStream.hpp | Oat++ - - - - - - - -

# BufferStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/BufferStream.hpp"

# BufferOutputStream

BufferOutputStream

namespace oatpp { namespace data { namespace stream { 
-  class BufferOutputStream : public ConsistentOutputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] BufferOutputStream Constructor.
[none] ~BufferOutputStream Virtual destructor.
v_io_size write Write count of bytes to stream.
void setOutputStreamIOMode Set stream I/O mode.
IOMode getOutputStreamIOMode Get stream I/O mode.
Context& getOutputStreamContext Get stream context.
void reserveBytesUpfront Reserve bytes for future writes.
p_char8 getData Get pointer to data.
v_buff_size getCapacity Get current capacity.
v_buff_size getCurrentPosition Get current data write position.
void setCurrentPosition Set current data write position.
void reset Reset stream buffer and its capacity. Also reset write position.
oatpp::String toString Copy data to oatpp::String.
oatpp::String getSubstring Create oatpp::String from part of buffer.
oatpp::v_io_size flushToStream Write all bytes from buffer to stream.
oatpp::async::CoroutineStarter flushToStreamAsync Write all bytes from buffer to stream in async manner.

# BufferOutputStream::BufferOutputStream

Constructor.

  • @param growBytes
  • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.

BufferOutputStream(v_buff_size initialCapacity = 2048, const std::shared_ptr<void>& captureData = nullptr)
-

# BufferOutputStream::~BufferOutputStream

Virtual destructor.

~BufferOutputStream()
-

# BufferOutputStream::write

Write count of bytes to stream.

  • @param data - data to write.
  • @param count - number of bytes to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# BufferOutputStream::setOutputStreamIOMode

Set stream I/O mode.

  • @throws

void setOutputStreamIOMode(IOMode ioMode) override
-

# BufferOutputStream::getOutputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getOutputStreamIOMode() override
-

# BufferOutputStream::getOutputStreamContext

Get stream context.

  • @return

Context& getOutputStreamContext() override
-

# BufferOutputStream::reserveBytesUpfront

Reserve bytes for future writes.

void reserveBytesUpfront(v_buff_size count)
-

# BufferOutputStream::getData

Get pointer to data.

  • @return - pointer to data.

p_char8 getData()
-

# BufferOutputStream::getCapacity

Get current capacity. Capacity may change.

  • @return

v_buff_size getCapacity()
-

# BufferOutputStream::getCurrentPosition

Get current data write position.

  • @return - current data write position.

v_buff_size getCurrentPosition()
-

# BufferOutputStream::setCurrentPosition

Set current data write position.

  • @param position - data write position.

void setCurrentPosition(v_buff_size position)
-

# BufferOutputStream::reset

Reset stream buffer and its capacity. Also reset write position.

  • @param initialCapacity

void reset(v_buff_size initialCapacity = 2048)
-

# BufferOutputStream::toString

Copy data to oatpp::String.

  • @return

oatpp::String toString()
-

# BufferOutputStream::getSubstring

Create oatpp::String from part of buffer.

  • @param pos - starting position in buffer.
  • @param count - size of bytes to write to substring.
  • @return - oatpp::String

oatpp::String getSubstring(v_buff_size pos, v_buff_size count)
-

# BufferOutputStream::flushToStream

Write all bytes from buffer to stream.

  • @param stream - stream to flush all data to.
  • @return - actual amount of bytes flushed.

oatpp::v_io_size flushToStream(OutputStream* stream)
-

# BufferOutputStream::flushToStreamAsync

Write all bytes from buffer to stream in async manner.

static oatpp::async::CoroutineStarter flushToStreamAsync(const std::shared_ptr<BufferOutputStream>& _this, const std::shared_ptr<OutputStream>& stream)
-

# BufferInputStream

BufferInputStream

namespace oatpp { namespace data { namespace stream { 
-  class BufferInputStream : public BufferedInputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] BufferInputStream Multiple implementations:
  1. Constructor.
  2. Constructor.
void reset Multiple implementations:
  1. Reset stream data and set position to 0.
  2. Same as reset(nullptr, nullptr, 0);.
v_io_size read Read data from stream.
void setInputStreamIOMode Set stream I/O mode.
IOMode getInputStreamIOMode Get stream I/O mode.
Context& getInputStreamContext Get stream context.
std::shared_ptr<std::string> getDataMemoryHandle Get data memory handle.
p_char8 getData Get pointer to data.
v_buff_size getDataSize Get data size.
v_buff_size getCurrentPosition Get current data read position.
void setCurrentPosition Set current data read position.
v_io_size peek Peek up to count of bytes int he buffer
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size commitReadOffset Commit read offset

# BufferInputStream::BufferInputStream

  1. Constructor.
    • @param memoryHandle - buffer memory handle. May be nullptr.
    • @param data - pointer to buffer data.
    • @param size - size of the buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    BufferInputStream(const std::shared_ptr<std::string>& memoryHandle,
    -                  const void* data,
    -                  v_buff_size size,
    -                  const std::shared_ptr<void>& captureData = nullptr)
    -
  2. Constructor.
    • @param data - buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    BufferInputStream(const oatpp::String& data, const std::shared_ptr<void>& captureData = nullptr)
    -

# BufferInputStream::reset

  1. Reset stream data and set position to 0.
    • @param memoryHandle - buffer memory handle. May be nullptr.
    • @param data - pointer to buffer data.
    • @param size - size of the buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    void reset(const std::shared_ptr<std::string>& memoryHandle,
    -           p_char8 data,
    -           v_buff_size size,
    -           const std::shared_ptr<void>& captureData = nullptr)
    -
  2. Same as reset(nullptr, nullptr, 0);.
    void reset()
    -

# BufferInputStream::read

Read data from stream.
It is a legal case if return result < count. Caller should handle this! Calls to this method are always NON-BLOCKING

  • @param data - buffer to read data to.
  • @param count - size of the buffer.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes read. 0 - designates end of the buffer.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# BufferInputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

void setInputStreamIOMode(IOMode ioMode) override
-

# BufferInputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getInputStreamIOMode() override
-

# BufferInputStream::getInputStreamContext

Get stream context.

  • @return

Context& getInputStreamContext() override
-

# BufferInputStream::getDataMemoryHandle

Get data memory handle.

  • @return - data memory handle.

std::shared_ptr<std::string> getDataMemoryHandle()
-

# BufferInputStream::getData

Get pointer to data.

  • @return - pointer to data.

p_char8 getData()
-

# BufferInputStream::getDataSize

Get data size.

  • @return - data size.

v_buff_size getDataSize()
-

# BufferInputStream::getCurrentPosition

Get current data read position.

  • @return - current data read position.

v_buff_size getCurrentPosition()
-

# BufferInputStream::setCurrentPosition

Set current data read position.

  • @param position - data read position.

void setCurrentPosition(v_buff_size position)
-

# BufferInputStream::peek

Peek up to count of bytes int he buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size peek(void *data, v_buff_size count, async::Action& action) override
-

# BufferInputStream::availableToRead

Amount of bytes currently available to read from buffer.

v_io_size availableToRead() const override
-

# BufferInputStream::commitReadOffset

Commit read offset

  • @param count
  • @return [1..count], IOErrors.

v_io_size commitReadOffset(v_buff_size count) override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FIFOStream/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FIFOStream/index.html deleted file mode 100644 index 43523f0ba..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FIFOStream/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - FIFOStream.hpp | Oat++ - - - - - - - -

# FIFOStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/FIFOStream.hpp"

# FIFOInputStream

FIFOInputStream

namespace oatpp { namespace data { namespace stream { 
-  class FIFOInputStream : public BufferedInputStream, public WriteCallback {}
-}}}
-

# Methods

Return Type Name Summary
[none] FIFOInputStream Constructor.
void reset Discards all data in the buffer and resets it to an empty state
v_io_size read Read data from stream.
void setInputStreamIOMode Set stream I/O mode.
IOMode getInputStreamIOMode Get stream I/O mode.
Context& getInputStreamContext Get stream context.
std::shared_ptr<std::string> getDataMemoryHandle Get data memory handle.
v_io_size write Write operation callback.
v_io_size peek Peek up to count of bytes int he buffer
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size commitReadOffset Commit read offset
void reserveBytesUpfront Reserve bytes for future writes. Check oatpp::data::stream::FIFOStream::availableToWrite for the capacity.
v_io_size readAndWriteToStream call read and then write bytes read to output stream
v_io_size readFromStreamAndWrite call stream.read() and then write bytes read to buffer
v_io_size flushToStream flush all availableToRead bytes to stream
async::CoroutineStarter flushToStreamAsync flush all availableToRead bytes to stream in asynchronous manner
v_io_size availableToWrite Amount of buffer space currently available for data writes.

# FIFOInputStream::FIFOInputStream

Constructor.

  • @param data - buffer.

FIFOInputStream(v_buff_size initialSize = 4096)
-

# FIFOInputStream::reset

Discards all data in the buffer and resets it to an empty state

void reset()
-

# FIFOInputStream::read

Read data from stream.
It is a legal case if return result < count. Caller should handle this! Calls to this method are always NON-BLOCKING

  • @param data - buffer to read data to.
  • @param count - size of the buffer.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes read. 0 - designates end of the buffer.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# FIFOInputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

void setInputStreamIOMode(IOMode ioMode) override
-

# FIFOInputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getInputStreamIOMode() override
-

# FIFOInputStream::getInputStreamContext

Get stream context.

  • @return

Context& getInputStreamContext() override
-

# FIFOInputStream::getDataMemoryHandle

Get data memory handle.

  • @return - data memory handle.

std::shared_ptr<std::string> getDataMemoryHandle()
-

# FIFOInputStream::write

Write operation callback.

  • @param data - pointer to data.
  • @param count - size of the data in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. 0 - to indicate end-of-file.

v_io_size write(const void *data, v_buff_size count, async::Action &action) override
-

# FIFOInputStream::peek

Peek up to count of bytes int he buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size peek(void *data, v_buff_size count, async::Action& action) override
-

# FIFOInputStream::availableToRead

Amount of bytes currently available to read from buffer.

v_io_size availableToRead() const override
-

# FIFOInputStream::commitReadOffset

Commit read offset

  • @param count
  • @return [1..count], IOErrors.

v_io_size commitReadOffset(v_buff_size count) override
-

# FIFOInputStream::reserveBytesUpfront

Reserve bytes for future writes. Check oatpp::data::stream::FIFOStream::availableToWrite for the capacity.

void reserveBytesUpfront(v_buff_size count)
-

# FIFOInputStream::readAndWriteToStream

call read and then write bytes read to output stream

  • @param stream
  • @param count
  • @param action
  • @return [1..count], IOErrors.

v_io_size readAndWriteToStream(data::stream::OutputStream* stream, v_buff_size count, async::Action& action)
-

# FIFOInputStream::readFromStreamAndWrite

call stream.read() and then write bytes read to buffer

  • @param stream
  • @param count
  • @param action
  • @return

v_io_size readFromStreamAndWrite(data::stream::InputStream* stream, v_buff_size count, async::Action& action)
-

# FIFOInputStream::flushToStream

flush all availableToRead bytes to stream

  • @param stream
  • @return

v_io_size flushToStream(data::stream::OutputStream* stream)
-

# FIFOInputStream::flushToStreamAsync

flush all availableToRead bytes to stream in asynchronous manner

  • @param stream - data::stream::OutputStream.
  • @return - async::CoroutineStarter.

async::CoroutineStarter flushToStreamAsync(const std::shared_ptr<data::stream::OutputStream>& stream)
-

# FIFOInputStream::availableToWrite

Amount of buffer space currently available for data writes.

v_io_size availableToWrite()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FileStream/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FileStream/index.html deleted file mode 100644 index a736e9ba5..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/FileStream/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - FileStream.hpp | Oat++ - - - - - - - -

# FileStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/FileStream.hpp"

# FileInputStream

Wrapper over std::FILE.

namespace oatpp { namespace data { namespace stream { 
-  class FileInputStream : public InputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] FileInputStream Multiple implementations:
  1. Move constructor.
  2. Constructor.
  3. Constructor.
[none] ~FileInputStream Virtual destructor.
std::FILE* getFile Get file.
v_io_size read Read data from stream up to count bytes, and return number of bytes actually read.
void setInputStreamIOMode Set stream I/O mode.
IOMode getInputStreamIOMode Get stream I/O mode.
Context& getInputStreamContext Get stream context.
void close Close file.

# FileInputStream::FileInputStream

  1. Move constructor.
    • @param other
    FileInputStream(FileInputStream&& other)
    -
  2. Constructor.
    • @param file - file.
    • @param ownsFile - if true then call close on FileInputStream destruction.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    FileInputStream(std::FILE* file, bool ownsFile, const std::shared_ptr<void>& captureData = nullptr)
    -
  3. Constructor.
    • @param filename - name of the file.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    FileInputStream(const char* filename, const std::shared_ptr<void>& captureData = nullptr)
    -

# FileInputStream::~FileInputStream

Virtual destructor.

~FileInputStream()
-

# FileInputStream::getFile

Get file.

  • @return

std::FILE* getFile()
-

# FileInputStream::read

Read data from stream up to count bytes, and return number of bytes actually read.
It is a legal case if return result < count. Caller should handle this!

  • @param data - buffer to read data to.
  • @param count - size of the buffer.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes read.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# FileInputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

void setInputStreamIOMode(IOMode ioMode) override
-

# FileInputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getInputStreamIOMode() override
-

# FileInputStream::getInputStreamContext

Get stream context.

  • @return

Context& getInputStreamContext() override
-

# FileInputStream::close

Close file.

void close()
-

# FileOutputStream

Wrapper over std::FILE.

namespace oatpp { namespace data { namespace stream { 
-  class FileOutputStream : public OutputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] FileOutputStream Multiple implementations:
  1. Move constructor.
  2. Constructor.
  3. Constructor.
[none] ~FileOutputStream Virtual destructor.
std::FILE* getFile Get file.
v_io_size write Write data to stream up to count bytes, and return number of bytes actually written.
void setOutputStreamIOMode Set stream I/O mode.
IOMode getOutputStreamIOMode Get stream I/O mode.
Context& getOutputStreamContext Get stream context.
void close Close file.

# FileOutputStream::FileOutputStream

  1. Move constructor.
    • @param other
    FileOutputStream(FileOutputStream&& other)
    -
  2. Constructor.
    • @param file - file.
    • @param ownsFile - if true then call close on FileInputStream destruction.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    FileOutputStream(std::FILE* file, bool ownsFile, const std::shared_ptr<void>& captureData = nullptr)
    -
  3. Constructor.
    • @param filename - name of the file.
    • @param mode - ("wb" - create new/override, "ab" - create new/append).
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    FileOutputStream(const char* filename, const char* mode = "wb", const std::shared_ptr<void>& captureData = nullptr)
    -

# FileOutputStream::~FileOutputStream

Virtual destructor.

~FileOutputStream()
-

# FileOutputStream::getFile

Get file.

  • @return

std::FILE* getFile()
-

# FileOutputStream::write

Write data to stream up to count bytes, and return number of bytes actually written.
It is a legal case if return result < count. Caller should handle this!

  • @param data - data to write.
  • @param count - number of bytes to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# FileOutputStream::setOutputStreamIOMode

Set stream I/O mode.

  • @throws

void setOutputStreamIOMode(IOMode ioMode) override
-

# FileOutputStream::getOutputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getOutputStreamIOMode() override
-

# FileOutputStream::getOutputStreamContext

Get stream context.

  • @return

Context& getOutputStreamContext() override
-

# FileOutputStream::close

Close file.

void close()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/Stream/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/Stream/index.html deleted file mode 100644 index c1a9498b6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/Stream/index.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - Stream.hpp | Oat++ - - - - - - - -

# Stream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/Stream.hpp"

# StreamType

Stream Type.

namespace oatpp { namespace data { namespace stream { 
-  enum StreamType : v_int32;
-}}}
-

# StreamType::STREAM_FINITE

Finite stream.

STREAM_FINITE = 0
-

# StreamType::STREAM_INFINITE

Infinite stream.

STREAM_INFINITE = 1
-

# Context

Stream Context.

namespace oatpp { namespace data { namespace stream { 
-  class Context {}
-}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMap<oatpp::data::share::StringKeyLabel> Properties Convenience typedef for oatpp::data::share::LazyStringMap.

# Methods

Return Type Name Summary
Properties& getMutableProperties protected. Get mutable additional optional context specific properties.
[none] Context Multiple implementations:
  1. Default constructor.
  2. Constructor.
[none] ~Context Virtual destructor.
void init Initialize stream context.
async::CoroutineStarter initAsync Initialize stream context in an async manner.
bool isInitialized Check if the stream context is initialized.
StreamType getStreamType Get stream type.
const Properties& getProperties Additional optional context specific properties.

# Context::Properties

Convenience typedef for oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMap<oatpp::data::share::StringKeyLabel> Properties
-

# Context::getMutableProperties

protected. Get mutable additional optional context specific properties.

Properties& getMutableProperties()
-

# Context::Context

  1. Default constructor.
    Context() = default
    -
  2. Constructor.
    Context(Properties&& properties)
    -

# Context::~Context

Virtual destructor.

virtual ~Context() = default
-

# Context::init

Initialize stream context.

virtual void init() = 0
-

# Context::initAsync

Initialize stream context in an async manner.

virtual async::CoroutineStarter initAsync() = 0
-

# Context::isInitialized

Check if the stream context is initialized.

  • @return - bool.

virtual bool isInitialized() const = 0
-

# Context::getStreamType

Get stream type.

virtual StreamType getStreamType() const = 0
-

# Context::getProperties

Additional optional context specific properties.

const Properties& getProperties() const
-

# DefaultInitializedContext

The default implementation for context with no initialization.

namespace oatpp { namespace data { namespace stream { 
-  class DefaultInitializedContext : public oatpp::data::stream::Context {}
-}}}
-

# Methods

Return Type Name Summary
[none] DefaultInitializedContext Multiple implementations:
  1. Constructor.
  2. Constructor.
void init Initialize stream context.
async::CoroutineStarter initAsync Initialize stream context in an async manner.
bool isInitialized Check if the stream context is initialized.
StreamType getStreamType Get stream type.

# DefaultInitializedContext::DefaultInitializedContext

  1. Constructor.
    DefaultInitializedContext(StreamType streamType)
    -
  2. Constructor.
    DefaultInitializedContext(StreamType streamType, Properties&& properties)
    -

# DefaultInitializedContext::init

Initialize stream context.
This particular implementation does nothing.

void init() override
-

# DefaultInitializedContext::initAsync

Initialize stream context in an async manner. This particular implementation does nothing.

async::CoroutineStarter initAsync() override
-

# DefaultInitializedContext::isInitialized

Check if the stream context is initialized. This particular implementation always returns true.

  • @return - bool.

bool isInitialized() const override
-

# DefaultInitializedContext::getStreamType

Get stream type.

StreamType getStreamType() const override
-

# IOMode

Stream I/O mode.

namespace oatpp { namespace data { namespace stream { 
-  enum IOMode : v_int32;
-}}}
-

# IOMode::BLOCKING

Blocking stream I/O mode.

BLOCKING = 0
-

# IOMode::ASYNCHRONOUS

Non-blocking stream I/O mode.

ASYNCHRONOUS = 1
-

# WriteCallback

Callback for stream write operation.

namespace oatpp { namespace data { namespace stream { 
-  class WriteCallback {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~WriteCallback Default virtual destructor.
v_io_size write Write operation callback.
v_io_size writeSimple Multiple implementations:
  1. Same as write((p_char8)data, std::strlen(data));.
  2. Same as write(str->getData(), str->getSize());
v_io_size writeCharSimple Same as write(c, 1);.

# WriteCallback::~WriteCallback

Default virtual destructor.

virtual ~WriteCallback() = default
-

# WriteCallback::write

Write operation callback.

  • @param data - pointer to data.
  • @param count - size of the data in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. 0 - to indicate end-of-file.

virtual v_io_size write(const void *data, v_buff_size count, async::Action& action) = 0
-

# WriteCallback::writeSimple

  1. Same as write((p_char8)data, std::strlen(data));.
    • @param data - data to write.
    • @return - actual number of bytes written. oatpp::v_io_size.
    v_io_size writeSimple(const char* data)
    -
  2. Same as write(str->getData(), str->getSize());
    • @param str - data to write.
    • @return - actual number of bytes written. oatpp::v_io_size.
    v_io_size writeSimple(const oatpp::String& str)
    -

# WriteCallback::writeCharSimple

Same as write(c, 1);.

  • @param c - one char to write.
  • @return - actual number of bytes written. oatpp::v_io_size.

v_io_size writeCharSimple(v_char8 c)
-

# OutputStream

Output Stream.

namespace oatpp { namespace data { namespace stream { 
-  class OutputStream : public WriteCallback {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~OutputStream Default virtual destructor.
void setOutputStreamIOMode Set stream I/O mode.
IOMode getOutputStreamIOMode Get stream I/O mode.
Context& getOutputStreamContext Get stream context.

# OutputStream::~OutputStream

Default virtual destructor.

virtual ~OutputStream() = default
-

# OutputStream::setOutputStreamIOMode

Set stream I/O mode.

  • @throws

virtual void setOutputStreamIOMode(IOMode ioMode) = 0
-

# OutputStream::getOutputStreamIOMode

Get stream I/O mode.

  • @return

virtual IOMode getOutputStreamIOMode() = 0
-

# OutputStream::getOutputStreamContext

Get stream context.

virtual Context& getOutputStreamContext() = 0
-

# ReadCallback

Stream read callback.

namespace oatpp { namespace data { namespace stream { 
-  class ReadCallback {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~ReadCallback Default virtual destructor.
v_io_size read Read operation callback.

# ReadCallback::~ReadCallback

Default virtual destructor.

virtual ~ReadCallback() = default
-

# ReadCallback::read

Read operation callback.

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

virtual v_io_size read(void *buffer, v_buff_size count, async::Action& action) = 0
-

# InputStream

Input Stream.

namespace oatpp { namespace data { namespace stream { 
-  class InputStream : public ReadCallback {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~InputStream Default virtual destructor.
void setInputStreamIOMode Set stream I/O mode.
IOMode getInputStreamIOMode Get stream I/O mode.
Context& getInputStreamContext Get stream context.

# InputStream::~InputStream

Default virtual destructor.

virtual ~InputStream() = default
-

# InputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

virtual void setInputStreamIOMode(IOMode ioMode) = 0
-

# InputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

virtual IOMode getInputStreamIOMode() = 0
-

# InputStream::getInputStreamContext

Get stream context.

virtual Context& getInputStreamContext() = 0
-

# BufferedInputStream

Buffered Input Stream

namespace oatpp { namespace data { namespace stream { 
-  class BufferedInputStream : public InputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~BufferedInputStream Default virtual destructor.
v_io_size peek Peek up to count of bytes int he buffer
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size commitReadOffset Commit read offset

# BufferedInputStream::~BufferedInputStream

Default virtual destructor.

virtual ~BufferedInputStream() = default
-

# BufferedInputStream::peek

Peek up to count of bytes int he buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

virtual v_io_size peek(void *data, v_buff_size count, async::Action& action) = 0
-

# BufferedInputStream::availableToRead

Amount of bytes currently available to read from buffer.

virtual v_io_size availableToRead() const = 0
-

# BufferedInputStream::commitReadOffset

Commit read offset

  • @param count
  • @return [1..count], IOErrors.

virtual v_io_size commitReadOffset(v_buff_size count) = 0
-

# IOStream

I/O Stream.

namespace oatpp { namespace data { namespace stream { 
-  class IOStream : public InputStream, public OutputStream {}
-}}}
-

# Methods

Return Type Name Summary
void initContexts Init input/output stream contexts.
async::CoroutineStarter initContextsAsync Init input/output stream contexts in an async manner.

# IOStream::initContexts

Init input/output stream contexts.

void initContexts()
-

# IOStream::initContextsAsync

Init input/output stream contexts in an async manner.

async::CoroutineStarter initContextsAsync()
-

# ConsistentOutputStream

Streams that guarantee data to be written in exact amount as specified in call to OutputStream::write() should extend this class.

namespace oatpp { namespace data { namespace stream { 
-  class ConsistentOutputStream : public OutputStream {}
-}}}
-

# Methods

Return Type Name Summary
v_io_size writeAsString Multiple implementations:
  1. Convert value to string and write to stream.
  2. Convert value to string and write to stream.
  3. Convert value to string and write to stream.
  4. Convert value to string and write to stream.
  5. Convert value to string and write to stream.
  6. Convert value to string and write to stream.
  7. Convert value to string and write to stream.
  8. Convert value to string and write to stream.
  9. Convert value to string and write to stream.
  10. Convert value to string and write to stream.
  11. Convert value to string and write to stream.

# ConsistentOutputStream::writeAsString

  1. Convert value to string and write to stream.
    v_io_size writeAsString(v_int8 value)
    -
  2. Convert value to string and write to stream.
    v_io_size writeAsString(v_uint8 value)
    -
  3. Convert value to string and write to stream.
    v_io_size writeAsString(v_int16 value)
    -
  4. Convert value to string and write to stream.
    v_io_size writeAsString(v_uint16 value)
    -
  5. Convert value to string and write to stream.
    v_io_size writeAsString(v_int32 value)
    -
  6. Convert value to string and write to stream.
    v_io_size writeAsString(v_uint32 value)
    -
  7. Convert value to string and write to stream.
    v_io_size writeAsString(v_int64 value)
    -
  8. Convert value to string and write to stream.
    v_io_size writeAsString(v_uint64 value)
    -
  9. Convert value to string and write to stream.
    v_io_size writeAsString(v_float32 value)
    -
  10. Convert value to string and write to stream.
v_io_size writeAsString(v_float64 value)
-
  1. Convert value to string and write to stream.
v_io_size writeAsString(bool value)
-

# AsyncTransferError

Error of Asynchronous stream transfer.

namespace oatpp { namespace data { namespace stream { 
-  class AsyncTransferError : public oatpp::async::Error {}
-}}}
-

# Methods

Return Type Name Summary
[none] AsyncTransferError Constructor.

# AsyncTransferError::AsyncTransferError

Constructor.

  • @param what

AsyncTransferError(const char* what) : oatpp::async::Error(what)
-

# StatelessDataTransferProcessor

Plain data transfer processor. Transfers data as is.

namespace oatpp { namespace data { namespace stream { 
-  class StatelessDataTransferProcessor : public data::buffer::Processor {}
-}}}
-

# transfer

Namespace: oatpp::data::stream

Transfer data from readCallback to writeCallback.

  • @param readCallback - ReadCallback.
  • @param writeCallback - WriteCallback.
  • @param transferSize - how much data should be read from the readCallback. 0 - to read until error.
  • @param buffer - pointer to buffer used to do the transfer by chunks.
  • @param bufferSize - size of the buffer.
  • @param processor - data processing to be applied during the transfer.
  • @return - the actual amout of bytes read from the readCallback.

v_io_size transfer(const base::ObjectHandle<ReadCallback>& readCallback,
-                   const base::ObjectHandle<WriteCallback>& writeCallback,
-                   v_io_size transferSize,
-                   void* buffer,
-                   v_buff_size bufferSize,
-                   const base::ObjectHandle<data::buffer::Processor>& processor = &StatelessDataTransferProcessor::INSTANCE)
-

# transferAsync

Namespace: oatpp::data::stream

Transfer data from readCallback to writeCallback in Async manner.

async::CoroutineStarter transferAsync(const base::ObjectHandle<ReadCallback>& readCallback,
-                                      const base::ObjectHandle<WriteCallback>& writeCallback,
-                                      v_buff_size transferSize,
-                                      const base::ObjectHandle<data::buffer::IOBuffer>& buffer,
-                                      const base::ObjectHandle<data::buffer::Processor>& processor = &StatelessDataTransferProcessor::INSTANCE)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/StreamBufferedProxy/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/StreamBufferedProxy/index.html deleted file mode 100644 index d466f3fb1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/data/stream/StreamBufferedProxy/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - StreamBufferedProxy.hpp | Oat++ - - - - - - - -

# StreamBufferedProxy.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/StreamBufferedProxy.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/macro/basic/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/macro/basic/index.html deleted file mode 100644 index 6de0b712f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/macro/basic/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - basic.hpp | Oat++ - - - - - - - -

# basic.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/macro/basic.hpp"

This file contains source code for basic helper macros used for code-generator.

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/macro/codegen/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/macro/codegen/index.html deleted file mode 100644 index 181ece450..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/macro/codegen/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - codegen.hpp | Oat++ - - - - - - - -

# codegen.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/macro/codegen.hpp"

This file contains source code for OATPP_CODEGEN_BEGIN(NAME) and OATPP_CODEGEN_END(NAME) macros.

-More about use of OATPP_CODEGEN_BEGIN and OATPP_CODEGEN_BEGIN see:

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/macro/component/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/macro/component/index.html deleted file mode 100644 index bad31aba8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/macro/component/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - component.hpp | Oat++ - - - - - - - -

# component.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/macro/component.hpp"

This file contains source code for OATPP_CREATE_COMPONENT and OATPP_COMPONENT macros which are part of -oatpp Dependency Injection (DI) framework.

-For usage examples see example-projects: -

# OATPP_COMPONENT

Inject component. Create variable of type=TYPE and name=NAME and assign registered component to it.

  • @param TYPE - type of the component.
  • @param NAME - name of the variable.
  • @param QUALIFIER_NAME - qualifier name is needed if there are multiple components registered of the same type. If there is one component registered only then TYPE info is enought to search for component.

#define OATPP_COMPONENT(TYPE, ...)
-

# OATPP_CREATE_COMPONENT

Create component that then can be injected in other application classes.

  • @param TYPE - type of the component.
  • @param NAME - name of the component field.

#define OATPP_CREATE_COMPONENT(TYPE, NAME)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/parser/Caret/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/parser/Caret/index.html deleted file mode 100644 index 41cddc7da..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/parser/Caret/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Caret.hpp | Oat++ - - - - - - - -

# Caret.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/parser/Caret.hpp"

# Caret

Helper class to do parsing operations

namespace oatpp { namespace parser { 
-  class Caret {}
-}}
-

# Methods

Return Type Name Summary
const char* getData Get pointer to a data, passed to Caret constructor
const char* getCurrData Same as getData()[position]
v_buff_size getDataSize Get size of a data
std::shared_ptr<std::string> getDataMemoryHandle Get data memoryHandle.
void setPosition Set caret position relative to data
v_buff_size getPosition Get caret position relative to data
void setError Set error message and error code.
const char* getErrorMessage Get error message
v_int64 getErrorCode Get error code
bool hasError Check if error is set for the Caret
void clearError Clear error message and error code
Label putLabel Create Label(this);
void inc Multiple implementations:
  1. Increase caret position by one
  2. Increase caret position by amount
bool skipBlankChars Skip chars: [' ', '\t', '\n', '\r','\f']
bool skipChar Skip char
bool findChar Find char. Position will be set to a found char. If
bool skipCharsFromSet Multiple implementations:
  1. Skip chars defined by set.
  2. Skip chars defined by set.
v_buff_size findCharFromSet Multiple implementations:
  1. Find one of chars defined by set.
  2. Find one of chars defined by set.
bool findRN Find "\r\n" chars
bool skipRN Skip "\r\n"
bool isAtRN Check if caret at "\r\n" chars
bool findROrN Find '\r' char of '\n' char
bool skipRNOrN if at "\r\n" - skip.
bool skipAllRsAndNs skip any sequence of '\r' and '\n'
v_int64 parseInt parse integer value starting from the current position.
v_uint64 parseUnsignedInt parse integer value starting from the current position.
v_float32 parseFloat32 parse float value starting from the current position.
v_float64 parseFloat64 parse float value starting from the current position.
bool isAtText Multiple implementations:
  1. Check if follows text
  2. Check if follows text
bool isAtTextNCS Multiple implementations:
  1. Check if follows text (Not Case Sensitive)
  2. Check if follows text (Not Case Sensitive)
Label parseStringEnclosed Parse enclosed string.
bool findText Multiple implementations:
  1. Find text and set position to found text
  2. Find text and set position to found text
bool isAtCharFromSet Multiple implementations:
  1. Check if caret is at char defined by set
  2. Check if caret is at char defined by set
bool isAtChar Check if caret is at char
bool isAtBlankChar Check if caret is at one of chars [' ', '\t', '\n', '\r','\f']
bool isAtDigitChar Check if caret is at digit
bool canContinueAtChar Multiple implementations:
  1. Check if caret is at char, and no error is set
  2. Check if caret is at char, and no error is set.
bool canContinue Check if caret position < dataSize and not error is set

# Caret::getData

Get pointer to a data, passed to Caret constructor

  • @return

const char* getData()
-

# Caret::getCurrData

Same as getData()[position]

  • @return

const char* getCurrData()
-

# Caret::getDataSize

Get size of a data

  • @return

v_buff_size getDataSize()
-

# Caret::getDataMemoryHandle

Get data memoryHandle.

  • @return

std::shared_ptr<std::string> getDataMemoryHandle()
-

# Caret::setPosition

Set caret position relative to data

  • @param position

void setPosition(v_buff_size position)
-

# Caret::getPosition

Get caret position relative to data

  • @return

v_buff_size getPosition()
-

# Caret::setError

Set error message and error code. Note that once error message is set, methods canContinue... will return false

  • @param errorMessage
  • @param errorCode

void setError(const char* errorMessage, v_int64 errorCode = 0)
-

# Caret::getErrorMessage

Get error message

  • @return error message

const char* getErrorMessage()
-

# Caret::getErrorCode

Get error code

  • @return error code

v_int64 getErrorCode()
-

# Caret::hasError

Check if error is set for the Caret

  • @return

bool hasError()
-

# Caret::clearError

Clear error message and error code

void clearError()
-

# Caret::putLabel

Create Label(this);

  • @return Label

Label putLabel()
-

# Caret::inc

  1. Increase caret position by one
    void inc()
    -
  2. Increase caret position by amount
    • @param amount
    void inc(v_buff_size amount)
    -

# Caret::skipBlankChars

Skip chars: [' ', '\t', '\n', '\r','\f']

  • @return true if other char found

bool skipBlankChars()
-

# Caret::skipChar

Skip char

  • @param c
  • @return true if other char found

bool skipChar(v_char8 c)
-

# Caret::findChar

Find char. Position will be set to a found char. If no such char found - position will be set to a dataSize;

  • @param c
  • @return true if found

bool findChar(v_char8 c)
-

# Caret::skipCharsFromSet

  1. Skip chars defined by set. ex. skipCharsFromSet("abc") - will skip all 'a', 'b', 'c' chars
    • @param set
    • @return true if other char found
    bool skipCharsFromSet(const char* set)
    -
  2. Skip chars defined by set. ex. skipCharsFromSet("abc", 3) - will skip all 'a', 'b', 'c' chars
    • @param set
    • @param setSize
    • @return true if other char found
    bool skipCharsFromSet(const char* set, v_buff_size setSize)
    -

# Caret::findCharFromSet

  1. Find one of chars defined by set.
    • @param set
    • @return char found or -1 if no char found
    v_buff_size findCharFromSet(const char* set)
    -
  2. Find one of chars defined by set.
    • @param set
    • @param setSize
    • @return char found or -1 if no char found
    v_buff_size findCharFromSet(const char* set, v_buff_size setSize)
    -

# Caret::findRN

Find "\r\n" chars

  • @return true if found

bool findRN()
-

# Caret::skipRN

Skip "\r\n"

  • @return True if position changes. False if caret not at "\r\n"

bool skipRN()
-

# Caret::isAtRN

Check if caret at "\r\n" chars

  • @return

bool isAtRN()
-

# Caret::findROrN

Find '\r' char of '\n' char

  • @return true if found '\r' or '\n'

bool findROrN()
-

# Caret::skipRNOrN

if at "\r\n" - skip. if at "\n" - skip.

  • @return true if position changed

bool skipRNOrN()
-

# Caret::skipAllRsAndNs

skip any sequence of '\r' and '\n'

  • @return true if position changed

bool skipAllRsAndNs()
-

# Caret::parseInt

parse integer value starting from the current position. Using function std::strtol() Warning: position may go out of Caret::getSize() bound.

  • @param base - base is passed to std::strtol function
  • @return parsed value

v_int64 parseInt(int base = 10)
-

# Caret::parseUnsignedInt

parse integer value starting from the current position. Using function std::strtoul() Warning: position may go out of Caret::getSize() bound.

  • @param base - base is passed to std::strtoul function
  • @return parsed value

v_uint64 parseUnsignedInt(int base = 10)
-

# Caret::parseFloat32

parse float value starting from the current position. Using function std::strtof() Warning: position may go out of Caret::getSize() bound.

  • @return parsed value

v_float32 parseFloat32()
-

# Caret::parseFloat64

parse float value starting from the current position. Using function std::strtod() Warning: position may go out of Caret::getSize() bound.

  • @return parsed value

v_float64 parseFloat64()
-

# Caret::isAtText

  1. Check if follows text
    • @param text
    • @param skipIfTrue - increase position if true
    • @return
    bool isAtText(const char* text, bool skipIfTrue = false)
    -
  2. Check if follows text
    • @param text
    • @param textSize
    • @param skipIfTrue - increase position if true
    • @return
    bool isAtText(const char* text, v_buff_size textSize, bool skipIfTrue = false)
    -

# Caret::isAtTextNCS

  1. Check if follows text (Not Case Sensitive)
    • @param text
    • @param skipIfTrue - increase position if true
    • @return
    bool isAtTextNCS(const char* text, bool skipIfTrue = false)
    -
  2. Check if follows text (Not Case Sensitive)
    • @param text
    • @param textSize
    • @param skipIfTrue - increase position if true
    • @return
    bool isAtTextNCS(const char* text, v_buff_size textSize, bool skipIfTrue = false)
    -

# Caret::parseStringEnclosed

Parse enclosed string. ex. for data "'let's go'" parseStringEnclosed(''', ''', '\') will return Label to "let's go" without enclosing ''' chars

  • @param openChar
  • @param closeChar
  • @param escapeChar
  • @return

Label parseStringEnclosed(char openChar, char closeChar, char escapeChar)
-

# Caret::findText

  1. Find text and set position to found text
    • @param text
    • @return true if found
    bool findText(const char* text)
    -
  2. Find text and set position to found text
    • @param text
    • @param textSize
    • @return true if found
    bool findText(const char* text, v_buff_size textSize)
    -

# Caret::isAtCharFromSet

  1. Check if caret is at char defined by set ex. isAtCharFromSet("abc") - will return true for 'a', 'b', 'c' chars
    • @param set
    • @return
    bool isAtCharFromSet(const char* set) const
    -
  2. Check if caret is at char defined by set ex. isAtCharFromSet("abc", 3) - will return true for 'a', 'b', 'c' chars
    • @param set
    • @param setSize
    • @return
    bool isAtCharFromSet(const char* set, v_buff_size setSize) const
    -

# Caret::isAtChar

Check if caret is at char

  • @param c
  • @return

bool isAtChar(v_char8 c) const
-

# Caret::isAtBlankChar

Check if caret is at one of chars [' ', '\t', '\n', '\r','\f']

  • @return

bool isAtBlankChar() const
-

# Caret::isAtDigitChar

Check if caret is at digit

  • @return

bool isAtDigitChar() const
-

# Caret::canContinueAtChar

  1. Check if caret is at char, and no error is set
    • @param c
    • @return
    bool canContinueAtChar(v_char8 c) const
    -
  2. Check if caret is at char, and no error is set. If true inc position by skipChars
    • @param c
    • @param skipChars
    • @return
    bool canContinueAtChar(v_char8 c, v_buff_size skipChars)
    -

# Caret::canContinue

Check if caret position < dataSize and not error is set

  • @return

bool canContinue() const
-

# Caret::Label

Class to label parsing data.

namespace oatpp { namespace parser { 
-  class Caret {
-    class Label {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] Label Constructor.
void start Set current caret position as a starting point for label.
void end Fix current caret position as an end point for label.
const char* getData Get pointer to a labeled data.
v_buff_size getSize Get size of labeled data.
v_buff_size getStartPosition Get start position of the label.
v_buff_size getEndPosition Get end position of the label.
oatpp::String toString Same astoString(true).
std::string std_str Create std::string from labeled data.

# Caret::Label::Label

Constructor.

  • @param caret.

Label(Caret* caret)
-

# Caret::Label::start

Set current caret position as a starting point for label.

void start()
-

# Caret::Label::end

Fix current caret position as an end point for label.

void end()
-

# Caret::Label::getData

Get pointer to a labeled data.

  • @return

const char* getData()
-

# Caret::Label::getSize

Get size of labeled data.

  • @return

v_buff_size getSize()
-

# Caret::Label::getStartPosition

Get start position of the label.

  • @return

v_buff_size getStartPosition()
-

# Caret::Label::getEndPosition

Get end position of the label.

  • @return - end position of the label or -1 if end() wasn't called yet.

v_buff_size getEndPosition()
-

# Caret::Label::toString

Same astoString(true).

oatpp::String toString()
-

# Caret::Label::std_str

Create std::string from labeled data.

  • @return - std::string.

std::string std_str()
-

# Caret::StateSaveGuard

Caret state saver guard.

namespace oatpp { namespace parser { 
-  class Caret {
-    class StateSaveGuard {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] StateSaveGuard Constructor.
[none] ~StateSaveGuard Destructor. Restore saved state.
v_buff_size getSavedPosition Get caret saved position.
const char* getSavedErrorMessage Get caret saved error message.
v_int64 getSavedErrorCode Get caret saved error code.

# Caret::StateSaveGuard::StateSaveGuard

Constructor.

  • @param caret.

StateSaveGuard(Caret& caret)
-

# Caret::StateSaveGuard::~StateSaveGuard

Destructor. Restore saved state.

~StateSaveGuard()
-

# Caret::StateSaveGuard::getSavedPosition

Get caret saved position.

  • @return

v_buff_size getSavedPosition()
-

# Caret::StateSaveGuard::getSavedErrorMessage

Get caret saved error message.

  • @return

const char* getSavedErrorMessage()
-

# Caret::StateSaveGuard::getSavedErrorCode

Get caret saved error code.

  • @return

v_int64 getSavedErrorCode()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/parser/ParsingError/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/parser/ParsingError/index.html deleted file mode 100644 index 7201715fc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/parser/ParsingError/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - ParsingError.hpp | Oat++ - - - - - - - -

# ParsingError.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/parser/ParsingError.hpp"

# ParsingError

Thrown when parsing error occurred and ParsingCaret object is not accessible for user. If parsing was made via oatpp::parser::ParsingCaret and ParsingCaret is accessible for user then do not throw this error.- User should read error from ParsingCaret::getError()

namespace oatpp { namespace parser { 
-  class ParsingError : public std::runtime_error {}
-}}
-

# Methods

Return Type Name Summary
[none] ParsingError Constructor
oatpp::String getMessage get error message
v_int64 getCode get error code
v_buff_size getPosition get parsing position of the error

# ParsingError::ParsingError

Constructor

  • @param message
  • @param position

ParsingError(const oatpp::String &message, v_int64 code, v_buff_size position)
-

# ParsingError::getMessage

get error message

  • @return

oatpp::String getMessage() const
-

# ParsingError::getCode

get error code

  • @return

v_int64 getCode() const
-

# ParsingError::getPosition

get parsing position of the error

  • @return

v_buff_size getPosition() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Invalidator/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/provider/Invalidator/index.html deleted file mode 100644 index da6c5d20d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Invalidator/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Invalidator.hpp | Oat++ - - - - - - - -

# Invalidator.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/provider/Invalidator.hpp"

# Invalidator

Abstract resource invalidator.

  • @tparam T - resource class.

namespace oatpp { namespace provider { 
-  template<class T>
-  class Invalidator : public oatpp::base::Countable {}
-}}
-

# Methods

Return Type Name Summary
[none] ~Invalidator Default virtual destructor.
void invalidate Invalidate resource that was previously created by the correspondent provider.

# Invalidator::~Invalidator

Default virtual destructor.

virtual ~Invalidator() = default
-

# Invalidator::invalidate

Invalidate resource that was previously created by the correspondent provider.
Use-case: if provider is pool based - you can signal that this resource should not be reused anymore.

  • @param resource

virtual void invalidate(const std::shared_ptr<T> &resource) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Pool/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/provider/Pool/index.html deleted file mode 100644 index b4358acef..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Pool/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - Pool.hpp | Oat++ - - - - - - - -

# Pool.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/provider/Pool.hpp"

# AcquisitionProxy

Pool acquisition proxy template.

  • @tparam TResource - abstract resource interface type, Ex.: IOStream.
  • @tparam AcquisitionProxyImpl - implementation of proxy.

namespace oatpp { namespace provider { 
-  template<class TResource, class AcquisitionProxyImpl>
-  class AcquisitionProxy : public TResource {}
-}}
-

# Typedefs

Type Name Summary
PoolTemplate<TResource, AcquisitionProxyImpl> PoolInstance Convenience typedef for Pool.

# Methods

Return Type Name Summary
[none] AcquisitionProxy Constructor.
[none] ~AcquisitionProxy Virtual destructor.

# AcquisitionProxy::PoolInstance

Convenience typedef for Pool.

typedef PoolTemplate<TResource, AcquisitionProxyImpl> PoolInstance
-

# AcquisitionProxy::AcquisitionProxy

Constructor.

AcquisitionProxy(const provider::ResourceHandle<TResource>& resource, const std::shared_ptr<PoolInstance>& pool)
-  : _handle(resource)
-  , m_pool(pool)
-  , m_valid(true)
-

# AcquisitionProxy::~AcquisitionProxy

Virtual destructor.

virtual ~AcquisitionProxy()
-

# Pool

Pool template class.

  • @tparam TProvider - base class for pool to inherit, ex.: ServerConnectionProvider.
  • @tparam TResource - abstract resource interface type, Ex.: IOStream. Must be the same as a return-type of Provider.
  • @tparam AcquisitionProxyImpl - implementation of AcquisitionProxy.

namespace oatpp { namespace provider { 
-  template<class TProvider, class TResource, class AcquisitionProxyImpl>
-  class Pool :
-    public TProvider,
-    public std::enable_shared_from_this<Pool<TProvider, TResource, AcquisitionProxyImpl>>,
-    public PoolTemplate<TResource, AcquisitionProxyImpl> {}
-}}
-

# Methods

Return Type Name Summary
std::shared_ptr<Pool> createShared Create shared Pool.
provider::ResourceHandle<TResource> get Get resource.
async::CoroutineStarterForResult<const provider::ResourceHandle<TResource>&> getAsync Get resource asynchronously.
void stop Stop pool.
v_int64 getCounter Get pool resource count. Both acquired and available.

# Pool::createShared

Create shared Pool.

  • @param provider - resource provider.
  • @param maxResources - max resource count in the pool.
  • @param maxResourceTTL - max time-to-live for unused resource in the pool.
  • @param timeout - optional timeout on Pool::get() and Pool::getAsync() operations.
  • @return - std::shared_ptr of Pool.

static std::shared_ptr<Pool> createShared(const std::shared_ptr<TProvider>& provider,
-                                          v_int64 maxResources,
-                                          const std::chrono::duration<v_int64, std::micro>& maxResourceTTL,
-                                          const std::chrono::duration<v_int64, std::micro>& timeout = std::chrono::microseconds::zero())
-

# Pool::get

Get resource.

  • @return

provider::ResourceHandle<TResource> get() override
-

# Pool::getAsync

Get resource asynchronously.

  • @return

async::CoroutineStarterForResult<const provider::ResourceHandle<TResource>&> getAsync() override
-

# Pool::stop

Stop pool.
Note: call to stop() may block.

void stop() override
-

# Pool::getCounter

Get pool resource count. Both acquired and available.

  • @return

v_int64 getCounter()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Provider/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/provider/Provider/index.html deleted file mode 100644 index 35774b2eb..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/provider/Provider/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Provider.hpp | Oat++ - - - - - - - -

# Provider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/provider/Provider.hpp"

# ResourceHandleTemplate

Resource handle template.

  • @tparam T

namespace oatpp { namespace provider { 
-  template<class T, class PTR>
-  struct ResourceHandleTemplate {}
-}}
-

# Fields

Type Name Summary
PTR object Pointer to the resource.
std::shared_ptr<Invalidator<T>> invalidator Invalidator that can be used to invalidate the resource.

# Methods

Return Type Name Summary
[none] ResourceHandleTemplate Multiple implementations:
  1. Default constructor.
  2. Nullptr constructor.
  3. Constructor.
void invalidate Invalidates the resource so it can be disposed and cannot be reused anymore.

# ResourceHandleTemplate::object

Pointer to the resource.

PTR object
-

# ResourceHandleTemplate::invalidator

Invalidator that can be used to invalidate the resource.

std::shared_ptr<Invalidator<T>> invalidator
-

# ResourceHandleTemplate::ResourceHandleTemplate

  1. Default constructor.
    ResourceHandleTemplate() = default
    -
  2. Nullptr constructor.
    ResourceHandleTemplate(std::nullptr_t)
    -
  3. Constructor.
    • @param resourceObject
    • @param resourceInvalidator
    ResourceHandleTemplate(const PTR& resourceObject,
    -                       const std::shared_ptr<Invalidator<T>> &resourceInvalidator)
    -  : object(resourceObject), invalidator(resourceInvalidator)
    -

# ResourceHandleTemplate::invalidate

Invalidates the resource so it can be disposed and cannot be reused anymore.

virtual void invalidate()
-

# ResourceHandle

Resource handle.

  • @tparam T

namespace oatpp { namespace provider { 
-  template<class T>
-  struct ResourceHandle : public ResourceHandleTemplate<T, std::shared_ptr<T>> {}
-}}
-

# Methods

Return Type Name Summary
[none] ResourceHandle Multiple implementations:
  1. Default constructor.
  2. Nullptr constructor.
  3. Constructor.

# ResourceHandle::ResourceHandle

  1. Default constructor.
    ResourceHandle() = default
    -
  2. Nullptr constructor.
    ResourceHandle(std::nullptr_t)
    -
  3. Constructor.
    • @param resourceObject
    • @param resourceInvalidator
    ResourceHandle(const std::shared_ptr<T>& resourceObject,
    -               const std::shared_ptr<Invalidator<T>>& resourceInvalidator)
    -  : ResourceHandleTemplate<T, std::shared_ptr<T>>(resourceObject, resourceInvalidator)
    -

# WeakResourceHandle

Weak Resource handle.

  • @tparam T

namespace oatpp { namespace provider { 
-  template<class T>
-  struct WeakResourceHandle : public ResourceHandleTemplate<T, std::weak_ptr<T>> {}
-}}
-

# Methods

Return Type Name Summary
[none] WeakResourceHandle Multiple implementations:
  1. Default constructor.
  2. Nullptr constructor.
  3. Constructor.

# WeakResourceHandle::WeakResourceHandle

  1. Default constructor.
    WeakResourceHandle() = default
    -
  2. Nullptr constructor.
    WeakResourceHandle(std::nullptr_t)
    -
  3. Constructor.
    • @param resourceObject
    • @param resourceInvalidator
    WeakResourceHandle(const std::weak_ptr<T>& resourceObject,
    -                   const std::shared_ptr<Invalidator<T>>& resourceInvalidator)
    -  : ResourceHandleTemplate<T, std::weak_ptr<T>>(resourceObject, resourceInvalidator)
    -

# Provider

Abstract resource provider.

  • @tparam T - resource class.

namespace oatpp { namespace provider { 
-  template <class T>
-  class Provider : public oatpp::base::Countable {}
-}}
-

# Methods

Return Type Name Summary
[none] Provider Multiple implementations:
  1. Default constructor.
  2. Constructor.
[none] ~Provider Virtual destructor.
const std::unordered_map<data::share::StringKeyLabelCI, data::share::StringKeyLabel>& getProperties Some optional properties that user might want to know.
data::share::StringKeyLabel getProperty Get optional property
ResourceHandle<T> get Get resource.
async::CoroutineStarterForResult<const ResourceHandle<T>&> getAsync Get resource in Async manner.
void stop Stop provider and free associated resources.

# Provider::Provider

  1. Default constructor.
    Provider() = default
    -
  2. Constructor.
    • @param properties
    Provider(const std::unordered_map<data::share::StringKeyLabelCI, data::share::StringKeyLabel>& properties)
    -  : m_properties(properties)
    -

# Provider::~Provider

Virtual destructor.

virtual ~Provider() = default
-

# Provider::getProperties

Some optional properties that user might want to know.
Note: All properties are optional and user should not rely on this.

const std::unordered_map<data::share::StringKeyLabelCI, data::share::StringKeyLabel>& getProperties() const
-

# Provider::getProperty

Get optional property

data::share::StringKeyLabel getProperty(const oatpp::String& key) const
-

# Provider::get

Get resource.

  • @return - resource.

virtual ResourceHandle<T> get() = 0
-

# Provider::getAsync

Get resource in Async manner.

  • @return - oatpp::async::CoroutineStarterForResult of T.

virtual async::CoroutineStarterForResult<const ResourceHandle<T>&> getAsync() = 0
-

# Provider::stop

Stop provider and free associated resources.

virtual void stop() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/utils/Binary/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/utils/Binary/index.html deleted file mode 100644 index ff7c5ed04..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/utils/Binary/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Binary.hpp | Oat++ - - - - - - - -

# Binary.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/utils/Binary.hpp"

# Binary

Collection of methods for binary operations and arithmetics.

namespace oatpp { namespace utils { 
-  class Binary {}
-}}
-

# Methods

Return Type Name Summary
v_int64 nextP2 Calculate the next power of 2.

# Binary::nextP2

Calculate the next power of 2.
Example:
nextP2(127) = 128, nextP2(1025) = 2048.

  • @return

static v_int64 nextP2(v_int64 v)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/utils/ConversionUtils/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/utils/ConversionUtils/index.html deleted file mode 100644 index 942017434..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/utils/ConversionUtils/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - ConversionUtils.hpp | Oat++ - - - - - - - -

# ConversionUtils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/utils/ConversionUtils.hpp"

# strToInt32

Namespace: oatpp::utils::conversion

  1. String to 32-bit integer.
    • @param str - string as const char*.
    • @return - 32-bit integer value.
    v_int32 strToInt32(const char* str)
    -
  2. String to 32-bit integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit integer value.
    v_int32 strToInt32(const oatpp::String& str, bool& success)
    -

# strToInt32

Namespace: oatpp::utils::conversion

  1. String to 32-bit integer.
    • @param str - string as const char*.
    • @return - 32-bit integer value.
    v_int32 strToInt32(const char* str)
    -
  2. String to 32-bit integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit integer value.
    v_int32 strToInt32(const oatpp::String& str, bool& success)
    -

# strToUInt32

Namespace: oatpp::utils::conversion

  1. String to 32-bit unsigned integer.
    • @param str - string as const char*.
    • @return - 32-bit unsigned integer value.
    v_uint32 strToUInt32(const char* str)
    -
  2. String to 32-bit unsigned integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit unsigned integer value.
    v_uint32 strToUInt32(const oatpp::String& str, bool& success)
    -

# strToUInt32

Namespace: oatpp::utils::conversion

  1. String to 32-bit unsigned integer.
    • @param str - string as const char*.
    • @return - 32-bit unsigned integer value.
    v_uint32 strToUInt32(const char* str)
    -
  2. String to 32-bit unsigned integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit unsigned integer value.
    v_uint32 strToUInt32(const oatpp::String& str, bool& success)
    -

# strToInt64

Namespace: oatpp::utils::conversion

  1. String to 64-bit integer.
    • @param str - string as const char*.
    • @return - 64-bit integer value.
    v_int64 strToInt64(const char* str)
    -
  2. String to 64-bit integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit integer value.
    v_int64 strToInt64(const oatpp::String& str, bool& success)
    -

# strToInt64

Namespace: oatpp::utils::conversion

  1. String to 64-bit integer.
    • @param str - string as const char*.
    • @return - 64-bit integer value.
    v_int64 strToInt64(const char* str)
    -
  2. String to 64-bit integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit integer value.
    v_int64 strToInt64(const oatpp::String& str, bool& success)
    -

# strToUInt64

Namespace: oatpp::utils::conversion

  1. String to 64-bit unsigned integer.
    • @param str - string as const char*.
    • @return - 64-bit unsigned integer value.
    v_uint64 strToUInt64(const char* str)
    -
  2. String to 64-bit unsigned integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit unsigned integer value.
    v_uint64 strToUInt64(const oatpp::String& str, bool& success)
    -

# strToUInt64

Namespace: oatpp::utils::conversion

  1. String to 64-bit unsigned integer.
    • @param str - string as const char*.
    • @return - 64-bit unsigned integer value.
    v_uint64 strToUInt64(const char* str)
    -
  2. String to 64-bit unsigned integer.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit unsigned integer value.
    v_uint64 strToUInt64(const oatpp::String& str, bool& success)
    -

# int32ToCharSequence

Namespace: oatpp::utils::conversion

Convert 32-bit integer to it's string representation.

  • @param value - 32-bit integer value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size int32ToCharSequence(v_int32 value, p_char8 data, v_buff_size n)
-

# uint32ToCharSequence

Namespace: oatpp::utils::conversion

Convert 32-bit unsigned integer to it's string representation.

  • @param value - 32-bit unsigned integer value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size uint32ToCharSequence(v_uint32 value, p_char8 data, v_buff_size n)
-

# int64ToCharSequence

Namespace: oatpp::utils::conversion

Convert 64-bit integer to it's string representation.

  • @param value - 64-bit integer value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size int64ToCharSequence(v_int64 value, p_char8 data, v_buff_size n)
-

# uint64ToCharSequence

Namespace: oatpp::utils::conversion

Convert 64-bit unsigned integer to it's string representation.

  • @param value - 64-bit unsigned integer value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size uint64ToCharSequence(v_uint64 value, p_char8 data, v_buff_size n)
-

# int32ToStr

Namespace: oatpp::utils::conversion

Convert 32-bit integer to it's string representation.

  • @param value - 32-bit integer value.
  • @return - value as oatpp::String

oatpp::String int32ToStr(v_int32 value)
-

# uint32ToStr

Namespace: oatpp::utils::conversion

Convert 32-bit unsigned integer to it's string representation.

  • @param value - 32-bit unsigned integer value.
  • @return - value as oatpp::String

oatpp::String uint32ToStr(v_uint32 value)
-

# int64ToStr

Namespace: oatpp::utils::conversion

Convert 64-bit integer to it's string representation.

  • @param value - 64-bit integer value.
  • @return - value as oatpp::String

oatpp::String int64ToStr(v_int64 value)
-

# uint64ToStr

Namespace: oatpp::utils::conversion

Convert 64-bit unsigned integer to it's string representation.

  • @param value - 64-bit unsigned integer value.
  • @return - value as oatpp::String

oatpp::String uint64ToStr(v_uint64 value)
-

# int32ToStdStr

Namespace: oatpp::utils::conversion

Convert 32-bit integer to it's string representation.

  • @param value - 32-bit integer value.
  • @return - value as std::string

std::string int32ToStdStr(v_int32 value)
-

# uint32ToStdStr

Namespace: oatpp::utils::conversion

Convert 32-bit unsigned integer to it's string representation.

  • @param value - 32-bit unsigned integer value.
  • @return - value as std::string

std::string uint32ToStdStr(v_uint32 value)
-

# int64ToStdStr

Namespace: oatpp::utils::conversion

Convert 64-bit integer to it's string representation.

  • @param value - 64-bit integer value.
  • @return - value as std::string

std::string int64ToStdStr(v_int64 value)
-

# uint64ToStdStr

Namespace: oatpp::utils::conversion

Convert 64-bit unsigned integer to it's string representation.

  • @param value - 64-bit unsigned integer value.
  • @return - value as std::string

std::string uint64ToStdStr(v_uint64 value)
-

# primitiveToCharSequence

Namespace: oatpp::utils::conversion

Write value of primitive type (int, float, etc.) as it's string representation with pattern.

  • @tparam T - primitive value type (int, float, etc.).
  • @param value - actual value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @param pattern - pattern as for snprintf.
  • @return - length of the resultant string.

template<typename T>
-v_buff_size primitiveToCharSequence(T value, p_char8 data, v_buff_size n, const char *pattern)
-

# primitiveToStr

Namespace: oatpp::utils::conversion

Write value of primitive type (int, float, etc.) as it's string representation with pattern.

  • @tparam T - primitive value type (int, float, etc.).
  • @param value - actual value.
  • @param pattern - pattern as for sprintf.
  • @return - length of the resultant string.

template<typename T>
-oatpp::String primitiveToStr(T value, const char* pattern)
-

# strToFloat32

Namespace: oatpp::utils::conversion

  1. String to 32-bit float.
    • @param str - string as const char*.
    • @return - 32-bit float value.
    v_float32 strToFloat32(const char* str)
    -
  2. String to 32-bit float.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit float value.
    v_float32 strToFloat32(const oatpp::String& str, bool& success)
    -

# strToFloat32

Namespace: oatpp::utils::conversion

  1. String to 32-bit float.
    • @param str - string as const char*.
    • @return - 32-bit float value.
    v_float32 strToFloat32(const char* str)
    -
  2. String to 32-bit float.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 32-bit float value.
    v_float32 strToFloat32(const oatpp::String& str, bool& success)
    -

# strToFloat64

Namespace: oatpp::utils::conversion

  1. String to 64-bit float.
    • @param str - string as const char*.
    • @return - 64-bit float value.
    v_float64 strToFloat64(const char* str)
    -
  2. String to 64-bit float.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit float value.
    v_float64 strToFloat64(const oatpp::String& str, bool& success)
    -

# strToFloat64

Namespace: oatpp::utils::conversion

  1. String to 64-bit float.
    • @param str - string as const char*.
    • @return - 64-bit float value.
    v_float64 strToFloat64(const char* str)
    -
  2. String to 64-bit float.
    • @param str - string as oatpp::String.
    • @param success - out parameter. true if operation was successful. false otherwise.
    • @return - 64-bit float value.
    v_float64 strToFloat64(const oatpp::String& str, bool& success)
    -

# float32ToCharSequence

Namespace: oatpp::utils::conversion

Convert 32-bit float to it's string representation.

  • @param value - 32-bit float value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size float32ToCharSequence(v_float32 value, p_char8 data, v_buff_size n, const char* format = OATPP_FLOAT_STRING_FORMAT)
-

# float64ToCharSequence

Namespace: oatpp::utils::conversion

Convert 64-bit float to it's string representation.

  • @param value - 64-bit float value.
  • @param data - buffer to write data to.
  • @param n - buffer size.
  • @return - length of the resultant string.

v_buff_size float64ToCharSequence(v_float64 value, p_char8 data, v_buff_size n, const char* format = OATPP_FLOAT_STRING_FORMAT)
-

# float32ToStr

Namespace: oatpp::utils::conversion

Convert 32-bit float to it's string representation.

  • @param value - 32-bit float value.
  • @return - value as oatpp::String

oatpp::String float32ToStr(v_float32 value, const char* format = OATPP_FLOAT_STRING_FORMAT)
-

# float64ToStr

Namespace: oatpp::utils::conversion

Convert 64-bit float to it's string representation.

  • @param value - 64-bit float value.
  • @return - value as oatpp::String

oatpp::String float64ToStr(v_float64 value, const char* format = OATPP_FLOAT_STRING_FORMAT)
-

# boolToStr

Namespace: oatpp::utils::conversion

Convert boolean to it's string representation.

  • @param value - boolean value.
  • @return - value as oatpp::String;

oatpp::String boolToStr(bool value)
-

# strToBool

Namespace: oatpp::utils::conversion

parse string to boolean value.

  • @param str - string to parse.
  • @param success - out parameter. true if operation was successful. false otherwise.
  • @return - boolean value.

bool strToBool(const oatpp::String& str, bool& success)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/utils/Random/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/utils/Random/index.html deleted file mode 100644 index 1d113eec4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/utils/Random/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Random.hpp | Oat++ - - - - - - - -

# Random.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/utils/Random.hpp"

# Random

Utility class for random values.

namespace oatpp { namespace utils { namespace random { 
-  class Random {}
-}}}
-

# Methods

Return Type Name Summary
void randomBytes Fill in buffer with random bytes [0..255].

# Random::randomBytes

Fill in buffer with random bytes [0..255].

  • @param buffer - pointer to buffer.
  • @param bufferSize - size of the buffer.

static void randomBytes(p_char8 buffer, v_buff_size bufferSize)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/core/utils/String/index.html b/docs/.vuepress/dist/api/latest/oatpp/core/utils/String/index.html deleted file mode 100644 index 98e5d1a83..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/core/utils/String/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - String.hpp | Oat++ - - - - - - - -

# String.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/utils/String.hpp"

# String

Utility class for Strings

namespace oatpp { namespace utils { 
-  class String {}
-}}
-

# Methods

Return Type Name Summary
v_buff_size compare Compare data1, data2 using std::memcmp.
v_buff_size compareCI_ASCII Compare data1, data2 - case insensitive (ASCII only).
void lowerCase_ASCII Change characters in data to lowercase (ASCII only).
void upperCase_ASCII Change characters in data to uppercase (ASCII only).

# String::compare

Compare data1, data2 using std::memcmp. It's safe to pass nullptr for data1/data2

  • @param data1 - pointer to data1.
  • @param size1 - size of data1.
  • @param data2 - pointer to data2.
  • @param size2 - size of data2.
  • @return - Negative value if the first differing byte (reinterpreted as unsigned char) in data1 is less than the corresponding byte in data2.
    0 if all count bytes of data1 and data2 are equal.
    Positive value if the first differing byte in data1 is greater than the corresponding byte in data2.

static v_buff_size compare(const void* data1, v_buff_size size1, const void* data2, v_buff_size size2)
-

# String::compareCI_ASCII

Compare data1, data2 - case insensitive (ASCII only). It's safe to pass nullptr for data1/data2

  • @param data1 - pointer to data1.
  • @param size1 - size of data1.
  • @param data2 - pointer to data2.
  • @param size2 - size of data2.
  • @return - Negative value if the first differing byte (reinterpreted as unsigned char) in data1 is less than the corresponding byte in data2.
    0 if all count bytes of data1 and data2 are equal.
    Positive value if the first differing byte in data1 is greater than the corresponding byte in data2.

static v_buff_size compareCI_ASCII(const void* data1, v_buff_size size1, const void* data2, v_buff_size size2)
-

# String::lowerCase_ASCII

Change characters in data to lowercase (ASCII only).

  • @param data - pointer to data.
  • @param size - size of the data.

static void lowerCase_ASCII(void* data, v_buff_size size)
-

# String::upperCase_ASCII

Change characters in data to uppercase (ASCII only).

  • @param data - pointer to data.
  • @param size - size of the data.

static void upperCase_ASCII(void* data, v_buff_size size)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/encoding/Base64/index.html b/docs/.vuepress/dist/api/latest/oatpp/encoding/Base64/index.html deleted file mode 100644 index 179828f71..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/encoding/Base64/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Base64.hpp | Oat++ - - - - - - - -

# Base64.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/encoding/Base64.hpp"

# Base64

Base64 - encoder/decoder.

namespace oatpp { namespace encoding { 
-  class Base64 {}
-}}
-

# Fields

Type Name Summary
const char* const ALPHABET_BASE64 Standard base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '+', '/', '=']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.
const char* const ALPHABET_BASE64_URL URL base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '-', '_', '=']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.
const char* const ALPHABET_BASE64_URL_SAFE URL safe base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '.', '_', '-']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.
const char* const ALPHABET_BASE64_AUXILIARY_CHARS Standard base64 Alphabet auxiliary chars ['+', '/', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.
const char* const ALPHABET_BASE64_URL_AUXILIARY_CHARS URL base64 Alphabet auxiliary chars ['-', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.
const char* const ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS URL safe base64 Alphabet auxiliary chars ['.', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.

# Methods

Return Type Name Summary
v_buff_size calcEncodedStringSize Calculate size of encoding result of a string of the given size.
v_buff_size calcDecodedStringSize Calculate size of decoding result. this method assumes that data passed as a param consists of standard base64 set of chars
bool isBase64String Check if data is a valid base64 encoded string.
oatpp::String encode Multiple implementations:
  1. Encode data as base64 string.
  2. Encode data as base64 string.
oatpp::String decode Multiple implementations:
  1. Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars
  2. Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars

# Base64::ALPHABET_BASE64

Standard base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '+', '/', '=']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.

static const char* const ALPHABET_BASE64
-

# Base64::ALPHABET_BASE64_URL

URL base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '-', '_', '=']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.

static const char* const ALPHABET_BASE64_URL
-

# Base64::ALPHABET_BASE64_URL_SAFE

URL safe base64 Alphabet - ['A'-'Z', 'a'-'z', '0'-'9', '.', '_', '-']. Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char.

static const char* const ALPHABET_BASE64_URL_SAFE
-

# Base64::ALPHABET_BASE64_AUXILIARY_CHARS

Standard base64 Alphabet auxiliary chars ['+', '/', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.

static const char* const ALPHABET_BASE64_AUXILIARY_CHARS
-

# Base64::ALPHABET_BASE64_URL_AUXILIARY_CHARS

URL base64 Alphabet auxiliary chars ['-', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.

static const char* const ALPHABET_BASE64_URL_AUXILIARY_CHARS
-

# Base64::ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS

URL safe base64 Alphabet auxiliary chars ['.', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.

static const char* const ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS
-

# Base64::calcEncodedStringSize

Calculate size of encoding result of a string of the given size.

  • @param size - size of string to encode.
  • @return - size of encoding result of a string of the given size

static v_buff_size calcEncodedStringSize(v_buff_size size)
-

# Base64::calcDecodedStringSize

Calculate size of decoding result. this method assumes that data passed as a param consists of standard base64 set of chars ['A'-'Z', 'a'-'z', '0'-'9'] and three configurable auxiliary chars.

  • @param data - pointer to data.
  • @param size - size of the data.
  • @param base64StrLength - out parameter. Size of base64 valid encoded string. It may appear to be less then size.
  • @param auxiliaryChars - configurable auxiliary chars.
  • @return - size of decoded data. If data passed is not a base64 string then -1 is returned.

static v_buff_size calcDecodedStringSize(const char* data, v_buff_size size, v_buff_size& base64StrLength, const char* auxiliaryChars = ALPHABET_BASE64_AUXILIARY_CHARS)
-

# Base64::isBase64String

Check if data is a valid base64 encoded string.

  • @param data - pointer to data.
  • @param size - data size.
  • @param auxiliaryChars - configurable auxiliary chars.
  • @return (calcDecodedStringSize(data, size, base64StrLength, auxiliaryChars) >= 0).

static bool isBase64String(const char* data, v_buff_size size, const char* auxiliaryChars = ALPHABET_BASE64_AUXILIARY_CHARS)
-

# Base64::encode

  1. Encode data as base64 string.
    • @param data - pointer to data.
    • @param size - data size.
    • @param alphabet - base64 alphabet to use.
    • @return - encoded base64 string as oatpp::String.
    static oatpp::String encode(const void* data, v_buff_size size, const char* alphabet = ALPHABET_BASE64)
    -
  2. Encode data as base64 string.
    • @param data - data to encode.
    • @param alphabet - base64 alphabet to use.
    • @return - encoded base64 string as oatpp::String.
    static oatpp::String encode(const oatpp::String& data, const char* alphabet = ALPHABET_BASE64)
    -

# Base64::decode

  1. Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars ['A'-'Z', 'a'-'z', '0'-'9'] and three configurable auxiliary chars.
    • @param data - pointer to data to decode.
    • @param size - encoded data size.
    • @param auxiliaryChars - configurable auxiliary chars.
    • @return - decoded data as oatpp::String.
    • @throws - Base64::DecodingError
    static oatpp::String decode(const char* data, v_buff_size size, const char* auxiliaryChars = ALPHABET_BASE64_AUXILIARY_CHARS)
    -
  2. Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars ['A'-'Z', 'a'-'z', '0'-'9'] and three configurable auxiliary chars.
    static oatpp::String decode(const oatpp::String& data, const char* auxiliaryChars = ALPHABET_BASE64_AUXILIARY_CHARS)
    -

# Base64::DecodingError

DecodingError.

namespace oatpp { namespace encoding { 
-  class Base64 {
-    class DecodingError : public std::runtime_error {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] DecodingError Constructor.

# Base64::DecodingError::DecodingError

Constructor.

  • @param message - error message.

DecodingError(const char* message)
-  :std::runtime_error(message)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/encoding/Hex/index.html b/docs/.vuepress/dist/api/latest/oatpp/encoding/Hex/index.html deleted file mode 100644 index 9df64cb67..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/encoding/Hex/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Hex.hpp | Oat++ - - - - - - - -

# Hex.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/encoding/Hex.hpp"

# Hex

Utility class for hex string encoding/decoding .

namespace oatpp { namespace encoding { 
-  class Hex {}
-}}
-

# Fields

Type Name Summary
v_int32 ERROR_UNKNOWN_SYMBOL Unknown symbol error.

# Methods

Return Type Name Summary
void writeUInt16 Write value as hex string to buffer.
void writeUInt32 Write value as hex string to buffer.
v_int32 readUInt16 Parse 4-char hex string to int16.
v_int32 readUInt32 Parse 8-char hex string to int32.
void encode Write binary data as HEX string.
void decode Read binary data from hex string.

# Hex::ERROR_UNKNOWN_SYMBOL

Unknown symbol error.

static constexpr v_int32 ERROR_UNKNOWN_SYMBOL = 1
-

# Hex::writeUInt16

Write value as hex string to buffer.

  • @param value - value to write.
  • @param buffer - buffer for resultant string.

static void writeUInt16(v_uint16 value, p_char8 buffer)
-

# Hex::writeUInt32

Write value as hex string to buffer.

  • @param value - value to write.
  • @param buffer - buffer for resultant string.

static void writeUInt32(v_uint32 value, p_char8 buffer)
-

# Hex::readUInt16

Parse 4-char hex string to int16.

  • @param buffer - buffer containing string to parse.
  • @param value - out parameter. Resultant value.
  • @return - 0 on success. Negative value on failure.

static v_int32 readUInt16(const char* buffer, v_uint16& value)
-

# Hex::readUInt32

Parse 8-char hex string to int32.

  • @param buffer - buffer containing string to parse.
  • @param value - out parameter. Resultant value.
  • @return - 0 on success. Negative value on failure.

static v_int32 readUInt32(const char* buffer, v_uint32& value)
-

# Hex::encode

Write binary data as HEX string.

  • @param stream
  • @param data
  • @param size
  • @param alphabet

static void encode(data::stream::ConsistentOutputStream* stream,
-                   const void* data, v_buff_size size,
-                   const char* alphabet = ALPHABET_UPPER)
-

# Hex::decode

Read binary data from hex string.

  • @param stream
  • @param data
  • @param size
  • @param allowSeparators - skip any char which is not ([A-Z], [a-z], [0-9]) without error.
  • @throws - Hex::DecodingError

static void decode(data::stream::ConsistentOutputStream* stream,
-                   const void* data, v_buff_size size, bool allowSeparators = false)
-

# Hex::DecodingError

DecodingError.

namespace oatpp { namespace encoding { 
-  class Hex {
-    class DecodingError : public std::runtime_error {}
-  };
-}}
-

# Methods

Return Type Name Summary
[none] DecodingError Constructor.

# Hex::DecodingError::DecodingError

Constructor.

  • @param message - error message.

DecodingError(const char* message)
-  :std::runtime_error(message)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/encoding/Unicode/index.html b/docs/.vuepress/dist/api/latest/oatpp/encoding/Unicode/index.html deleted file mode 100644 index 084e9daad..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/encoding/Unicode/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Unicode.hpp | Oat++ - - - - - - - -

# Unicode.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/encoding/Unicode.hpp"

# Unicode

Helper class for processing unicode characters.

namespace oatpp { namespace encoding { 
-  class Unicode {}
-}}
-

# Methods

Return Type Name Summary
v_buff_size getUtf8CharSequenceLength Get length in bytes of UTF-8 character by its first byte.
v_buff_size getUtf8CharSequenceLengthForCode Get length in bytes of UTF-8 character by its code.
v_int32 encodeUtf8Char Get code of UTF-8 character.
v_buff_size decodeUtf8Char Write UTF-8 character to buffer.
void codeToUtf16SurrogatePair Get corresponding UTF-16 surrogate pair for symbol code.
v_int32 utf16SurrogatePairToCode Get symbol code of corresponding UTF-16 surrogate pair.

# Unicode::getUtf8CharSequenceLength

Get length in bytes of UTF-8 character by its first byte.

  • @param firstByte - first byte of UTF-8 character.
  • @return - length in bytes of UTF-8 character.

static v_buff_size getUtf8CharSequenceLength(v_char8 firstByte)
-

# Unicode::getUtf8CharSequenceLengthForCode

Get length in bytes of UTF-8 character by its code.

  • @param code - code of UTF-8 character.
  • @return - length in bytes of UTF-8 character.

static v_buff_size getUtf8CharSequenceLengthForCode(v_uint32 code)
-

# Unicode::encodeUtf8Char

Get code of UTF-8 character.

  • @param sequence - pointer to first byte of UTF-8 character.
  • @param length - out parameter. Length in bytes of UTF-8 character.
  • @return - code of UTF-8 character.

static v_int32 encodeUtf8Char(const char* sequence, v_buff_size& length)
-

# Unicode::decodeUtf8Char

Write UTF-8 character to buffer.

  • @param code - UTF-8 character code.
  • @param buffer - pointer to write UTF-8 character to.
  • @return - length in bytes of UTF-8 character.

static v_buff_size decodeUtf8Char(v_int32 code, p_char8 buffer)
-

# Unicode::codeToUtf16SurrogatePair

Get corresponding UTF-16 surrogate pair for symbol code.

  • @param code - symbol code.
  • @param high - out parameter. High surrogate.
  • @param low - out parameter. Low surrogate.

static void codeToUtf16SurrogatePair(v_int32 code, v_int16& high, v_int16& low)
-

# Unicode::utf16SurrogatePairToCode

Get symbol code of corresponding UTF-16 surrogate pair.

  • @param high - High surrogate.
  • @param low - Low surrogate.
  • @return - symbol code.

static v_int32 utf16SurrogatePairToCode(v_int16 high, v_int16 low)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/Address/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/Address/index.html deleted file mode 100644 index 12bfc3d8e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/Address/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Address.hpp | Oat++ - - - - - - - -

# Address.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/Address.hpp"

# Address

Network address.

namespace oatpp { namespace network { 
-  class Address {}
-}}
-

# Fields

Type Name Summary
oatpp::String host Host name without schema and port. Ex.: "oatpp.io", "127.0.0.1", "localhost".
v_uint16 port Port.
Family family Family Address::Family.

# Methods

Return Type Name Summary
[none] Address Constructor.

# Address::host

Host name without schema and port. Ex.: "oatpp.io", "127.0.0.1", "localhost".

oatpp::String host
-

# Address::port

Port.

v_uint16 port
-

# Address::family

Family Address::Family.

Family family
-

# Address::Address

Constructor.

  • @param pHost
  • @param pPort
  • @param pFamily

Address(const oatpp::String& pHost, v_uint16 pPort, Family pFamily = UNSPEC)
-

# Address::Family

Address family.

namespace oatpp { namespace network { 
-  class Address {}
-}}
-

# Address::Family::IP_4

IPv4.

IP_4 = 0
-

# Address::Family::IP_6

IPv6.

IP_6 = 1
-

# Address::Family::UNSPEC

Unspecified.

UNSPEC = 2
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionHandler/index.html deleted file mode 100644 index 0246c543f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionHandler/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ConnectionHandler.hpp | Oat++ - - - - - - - -

# ConnectionHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/ConnectionHandler.hpp"

# ConnectionHandler

Abstract ConnectionHandler.

namespace oatpp { namespace network { 
-  class ConnectionHandler {}
-}}
-

# Typedefs

Type Name Summary
oatpp::data::stream::IOStream IOStream Convenience typedef for oatpp::data::stream::IOStream.
std::unordered_map<oatpp::String, oatpp::String> ParameterMap Convenience typedef for accompanying parameters of connection handling.

# Methods

Return Type Name Summary
[none] ~ConnectionHandler Virtual Destructor.
void handleConnection Handle provided connection.
void stop Stop all threads here

# ConnectionHandler::IOStream

Convenience typedef for oatpp::data::stream::IOStream.

typedef oatpp::data::stream::IOStream IOStream
-

# ConnectionHandler::ParameterMap

Convenience typedef for accompanying parameters of connection handling.

typedef std::unordered_map<oatpp::String, oatpp::String> ParameterMap
-

# ConnectionHandler::~ConnectionHandler

Virtual Destructor.

virtual ~ConnectionHandler() = default
-

# ConnectionHandler::handleConnection

Handle provided connection.

virtual void handleConnection(const provider::ResourceHandle<IOStream>& connectionData,
-                              const std::shared_ptr<const ParameterMap>& params) = 0
-

# ConnectionHandler::stop

Stop all threads here

virtual void stop() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionPool/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionPool/index.html deleted file mode 100644 index 50a9d5baa..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionPool/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - ConnectionPool.hpp | Oat++ - - - - - - - -

# ConnectionPool.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/ConnectionPool.hpp"

# ConnectionAcquisitionProxy

Wrapper over oatpp::data::stream::IOStream. Will acquire connection from the pool on initialization and will return connection to the pool on destruction.

namespace oatpp { namespace network { 
-  struct ConnectionAcquisitionProxy : public provider::AcquisitionProxy<data::stream::IOStream, ConnectionAcquisitionProxy> {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProvider/index.html deleted file mode 100644 index d9708d6eb..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProvider/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/ConnectionProvider.hpp"

# ConnectionProvider

Abstract ConnectionProvider.
Basically it returns whatever stream (oatpp::data::stream::IOStream).
User of ConnectionProvider should care about IOStream only. All other properties are optional.

namespace oatpp { namespace network { 
-  class ConnectionProvider : public provider::Provider<data::stream::IOStream> {}
-}}
-

# Fields

Type Name Summary
const char* const PROPERTY_HOST Predefined property key for HOST.
const char* const PROPERTY_PORT Predefined property key for PORT.

# ConnectionProvider::PROPERTY_HOST

Predefined property key for HOST.

static const char* const PROPERTY_HOST
-

# ConnectionProvider::PROPERTY_PORT

Predefined property key for PORT.

static const char* const PROPERTY_PORT
-

# ServerConnectionProvider

No properties here. It is just a logical division

namespace oatpp { namespace network { 
-  class ServerConnectionProvider : virtual public ConnectionProvider {}
-}}
-

# ClientConnectionProvider

No properties here. It is just a logical division

namespace oatpp { namespace network { 
-  class ClientConnectionProvider : virtual public ConnectionProvider {}
-}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProviderSwitch/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProviderSwitch/index.html deleted file mode 100644 index a164fadd4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/ConnectionProviderSwitch/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ConnectionProviderSwitch.hpp | Oat++ - - - - - - - -

# ConnectionProviderSwitch.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/ConnectionProviderSwitch.hpp"

# ConnectionProviderSwitch

ConnectionProviderSwitch can be used to hot-change connection providers. Ex.: to hot-reload server certificate.

namespace oatpp { namespace network { 
-  class ConnectionProviderSwitch : public ServerConnectionProvider, public ClientConnectionProvider {}
-}}
-

# Methods

Return Type Name Summary
[none] ConnectionProviderSwitch Multiple implementations:
  1. Default constructor.
  2. Constructor.
void resetProvider Reset current provider.
provider::ResourceHandle<data::stream::IOStream> get Get new connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync Get new connection.
void stop Stop current provider.

# ConnectionProviderSwitch::ConnectionProviderSwitch

  1. Default constructor.
    ConnectionProviderSwitch() = default
    -
  2. Constructor.
    • @param provider
    ConnectionProviderSwitch(const std::shared_ptr<ConnectionProvider>& provider)
    -

# ConnectionProviderSwitch::resetProvider

Reset current provider.

  • @param provider

void resetProvider(const std::shared_ptr<ConnectionProvider>& provider)
-

# ConnectionProviderSwitch::get

Get new connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProviderSwitch::getAsync

Get new connection.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-

# ConnectionProviderSwitch::stop

Stop current provider.

void stop() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/Server/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/Server/index.html deleted file mode 100644 index b1da4b606..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/Server/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - Server.hpp | Oat++ - - - - - - - -

# Server.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/Server.hpp"

# Server

Server calls oatpp::network::ConnectionProvider::get in the loop and passes obtained Connection to oatpp::network::ConnectionHandler.

namespace oatpp { namespace network { 
-  class Server : public base::Countable {}
-}}
-

# Fields

Type Name Summary
const v_int32 STATUS_CREATED Status constant.
const v_int32 STATUS_STARTING Status constant.
const v_int32 STATUS_RUNNING Status constant.
const v_int32 STATUS_STOPPING Status constant.
const v_int32 STATUS_DONE Status constant.

# Methods

Return Type Name Summary
[none] Server Constructor.
std::shared_ptr<Server> createShared Create shared Server.
void run Multiple implementations:
  1. Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection
  2. Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection
void stop Break server loop.
v_int32 getStatus Get server status.

# Server::STATUS_CREATED

Status constant.

static const v_int32 STATUS_CREATED
-

# Server::STATUS_STARTING

Status constant.

static const v_int32 STATUS_STARTING
-

# Server::STATUS_RUNNING

Status constant.

static const v_int32 STATUS_RUNNING
-

# Server::STATUS_STOPPING

Status constant.

static const v_int32 STATUS_STOPPING
-

# Server::STATUS_DONE

Status constant.

static const v_int32 STATUS_DONE
-

# Server::Server

Constructor.

Server(const std::shared_ptr<ConnectionProvider>& connectionProvider,
-       const std::shared_ptr<ConnectionHandler>& connectionHandler)
-

# Server::createShared

Create shared Server.

static std::shared_ptr<Server> createShared(const std::shared_ptr<ServerConnectionProvider>& connectionProvider,
-                                            const std::shared_ptr<ConnectionHandler>& connectionHandler)
-

# Server::run

  1. Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection to oatpp::network::ConnectionHandler.
    • @param conditional - Function that is called every mainloop iteration to check if the server should continue to run
      Return true to let the server continue, false to shut it down.
    void run(std::function<bool()> conditional = nullptr)
    -
  2. Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection to oatpp::network::ConnectionHandler.
    • @param startAsNewThread - Start the server blocking (thread of callee) or non-blocking (own thread) deprecated Deprecated since 1.3.0, will be removed in the next release. The new repository https://github.com/oatpp/oatpp-threaded-starter shows many configurations how to run Oat++ in its own thread. From simple No-Stop to Stop-Simple and ending in Oat++ completely isolated in its own thread-scope. We recommend the Stop-Simple for most applications! You can find it here: https://github.com/oatpp/oatpp-threaded-starter/blob/master/src/App_StopSimple.cpp The other examples are non trivial and highly specialized on specific environments or requirements. Please read the comments carefully and think about the consequences twice. If someone wants to use them please get back to us in an issue in the new repository and we can assist you with them. Again: These examples introduce special conditions and requirements for your code!
    void run(bool startAsNewThread)
    -

# Server::stop

Break server loop. Note: thread can still be blocked on the Server::run() call as it may be waiting for ConnectionProvider to provide connection.

void stop()
-

# Server::getStatus

Get server status.

v_int32 getStatus()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/Url/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/Url/index.html deleted file mode 100644 index 913364e5d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/Url/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - Url.hpp | Oat++ - - - - - - - -

# Url.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/Url.hpp"

# Url

Class holding URL information.

namespace oatpp { namespace network { 
-  class Url {}
-}}
-

# Typedefs

Type Name Summary
oatpp::data::share::StringKeyLabel StringKeyLabel Convenience typedef for oatpp::data::share::StringKeyLabel.
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabel> Parameters Parameters - map string to string. oatpp::data::share::LazyStringMultimap.

# Fields

Type Name Summary
oatpp::String scheme Url scheme. Ex.: [http, https, ftp, etc.]
Authority authority Utl authority.
oatpp::String path Path to resource.
Parameters queryParams Query params.

# Url::StringKeyLabel

Convenience typedef for oatpp::data::share::StringKeyLabel.

typedef oatpp::data::share::StringKeyLabel StringKeyLabel
-

# Url::Parameters

Parameters - map string to string. oatpp::data::share::LazyStringMultimap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabel> Parameters
-

# Url::scheme

Url scheme. Ex.: [http, https, ftp, etc.]

oatpp::String scheme
-

# Url::authority

Utl authority.

Authority authority
-

# Url::path

Path to resource.

oatpp::String path
-

# Url::queryParams

Query params.

Parameters queryParams
-

# Url::Authority

Structure representing URL Authority information.

namespace oatpp { namespace network { 
-  class Url {
-    struct Authority {}
-  };
-}}
-

# Fields

Type Name Summary
oatpp::String userInfo User info.
oatpp::String host Host.
v_int32 port Port. Treat -1 as undefined or as default.

# Url::Authority::userInfo

User info.

oatpp::String userInfo
-

# Url::Authority::host

Host.

oatpp::String host
-

# Url::Authority::port

Port. Treat -1 as undefined or as default.

v_int32 port = -1
-

# Url::Parser

Url parser.

namespace oatpp { namespace network { 
-  class Url {
-    class Parser {}
-  };
-}}
-

# Methods

Return Type Name Summary
oatpp::String parseScheme parse <scheme>:
Url::Authority parseAuthority parse url authority components.
oatpp::String parsePath parse path of the url
void parseQueryParams Multiple implementations:
  1. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by ParsingCaret
  2. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by str
  3. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by ParsingCaret
  4. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by str
Url parseUrl Multiple implementations:
  1. Parse Url
  2. Parse Url

# Url::Parser::parseScheme

parse <scheme>: example "http", "https", "ftp" returns lowercase string before ':' char caret should be at the first char of the scheme

static oatpp::String parseScheme(oatpp::parser::Caret& caret)
-

# Url::Parser::parseAuthority

parse url authority components. userinfo is not parsed into login and password separately as inclusion of password in userinfo is deprecated and ignored here caret should be at the first char of the authority (not at "//")

static Url::Authority parseAuthority(oatpp::parser::Caret& caret)
-

# Url::Parser::parsePath

parse path of the url caret should be at the first char of the path

static oatpp::String parsePath(oatpp::parser::Caret& caret)
-

# Url::Parser::parseQueryParams

  1. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by ParsingCaret and put that params to Parameters map
    static void parseQueryParams(Url::Parameters& params, oatpp::parser::Caret& caret)
    -
  2. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by str and put that params to Parameters map
    static void parseQueryParams(Url::Parameters& params, const oatpp::String& str)
    -
  3. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by ParsingCaret
    static Url::Parameters parseQueryParams(oatpp::parser::Caret& caret)
    -
  4. parse query params in form of "?<paramName>=<paramValue><paramName>=<paramValue>..." referred by str
    static Url::Parameters parseQueryParams(const oatpp::String& str)
    -

# Url::Parser::parseUrl

  1. Parse Url
    • @param caret
    • @return parsed URL structure
    static Url parseUrl(oatpp::parser::Caret& caret)
    -
  2. Parse Url
    • @param str
    • @return parsed URL structure
    static Url parseUrl(const oatpp::String& str)
    -
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionInactivityChecker/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionInactivityChecker/index.html deleted file mode 100644 index 8fddcb7cd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionInactivityChecker/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - ConnectionInactivityChecker.hpp | Oat++ - - - - - - - -

# ConnectionInactivityChecker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/monitor/ConnectionInactivityChecker.hpp"

# ConnectionInactivityChecker

ConnectionInactivityChecker - checks if a connection is inactive (has no read/writes) and whether it should be closed. Extends - oatpp::network::monitor::MetricsChecker.

namespace oatpp { namespace network { namespace monitor { 
-  class ConnectionInactivityChecker : public MetricsChecker {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionInactivityChecker Constructor.

# ConnectionInactivityChecker::ConnectionInactivityChecker

Constructor.

  • @param lastReadTimeout - how long can live connection without reads.
  • @param lastWriteTimeout - how long can live connection without writes.

ConnectionInactivityChecker(const std::chrono::duration<v_int64, std::micro>& lastReadTimeout,
-                            const std::chrono::duration<v_int64, std::micro>& lastWriteTimeout)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMaxAgeChecker/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMaxAgeChecker/index.html deleted file mode 100644 index c5c51411c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMaxAgeChecker/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - ConnectionMaxAgeChecker.hpp | Oat++ - - - - - - - -

# ConnectionMaxAgeChecker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/monitor/ConnectionMaxAgeChecker.hpp"

# ConnectionMaxAgeChecker

ConnectionMaxAgeChecker - checks if connection is too old and should be closed. Extends - oatpp::network::monitor::MetricsChecker.

namespace oatpp { namespace network { namespace monitor { 
-  class ConnectionMaxAgeChecker : public MetricsChecker {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionMaxAgeChecker Constructor.

# ConnectionMaxAgeChecker::ConnectionMaxAgeChecker

Constructor.

  • @param maxAge - how long should connection live.

ConnectionMaxAgeChecker(const std::chrono::duration<v_int64, std::micro>& maxAge)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMonitor/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMonitor/index.html deleted file mode 100644 index a9fb966f3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/ConnectionMonitor/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - ConnectionMonitor.hpp | Oat++ - - - - - - - -

# ConnectionMonitor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/monitor/ConnectionMonitor.hpp"

# ConnectionMonitor

ConnectionMonitor is a middleman who's able to manage provided connections and close those ones that are not satisfy selected rules.

namespace oatpp { namespace network { namespace monitor { 
-  class ConnectionMonitor : public ClientConnectionProvider, public ServerConnectionProvider {}
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionMonitor Constructor.
void addMetricsChecker Add metrics checker.

# ConnectionMonitor::ConnectionMonitor

Constructor.

  • @param connectionProvider - underlying connection provider.

ConnectionMonitor(const std::shared_ptr<ConnectionProvider>& connectionProvider)
-

# ConnectionMonitor::addMetricsChecker

Add metrics checker.

void addMetricsChecker(const std::shared_ptr<MetricsChecker>& checker)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/MetricsChecker/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/monitor/MetricsChecker/index.html deleted file mode 100644 index 770d5979d..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/MetricsChecker/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - MetricsChecker.hpp | Oat++ - - - - - - - -

# MetricsChecker.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/monitor/MetricsChecker.hpp"

# MetricsChecker

MetricsChecker checks oatpp::network::monitor::ConnectionStats if those are satisfy the rule.

namespace oatpp { namespace network { namespace monitor { 
-  class MetricsChecker : public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~MetricsChecker Default virtual destructor.
std::vector<oatpp::String> getMetricsList Get list of metrics names that are checked by this MetricsChecker.
std::shared_ptr<StatCollector> createStatCollector Create oatpp::network::monitor::StatCollector for given metricName.
bool check Called by oatpp::network::monitor::ConnectionMonitor on each

# MetricsChecker::~MetricsChecker

Default virtual destructor.

virtual ~MetricsChecker() = default
-

# MetricsChecker::getMetricsList

Get list of metrics names that are checked by this MetricsChecker.

  • @return

virtual std::vector<oatpp::String> getMetricsList() = 0
-

# MetricsChecker::createStatCollector

Create oatpp::network::monitor::StatCollector for given metricName. This method will be called by oatpp::network::monitor::ConnectionMonitor only if there is no such StatCollector registered in the ConnectionMonitor yet.

virtual std::shared_ptr<StatCollector> createStatCollector(const oatpp::String& metricName) = 0
-

# MetricsChecker::check

Called by oatpp::network::monitor::ConnectionMonitor on each time interval to check if connection satisfies the rule.

virtual bool check(const ConnectionStats& stats, v_int64 currMicroTime) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/StatCollector/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/monitor/StatCollector/index.html deleted file mode 100644 index 54365ccea..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/monitor/StatCollector/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - StatCollector.hpp | Oat++ - - - - - - - -

# StatCollector.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/monitor/StatCollector.hpp"

# ConnectionStats

ConnectionStats.

namespace oatpp { namespace network { namespace monitor { 
-  struct ConnectionStats {}
-}}}
-

# Fields

Type Name Summary
v_int64 timestampCreated Timestamp created microseconds. When connection was created.
v_io_size totalRead Total bytes read from the connection. Logs all bytes when the read method is called.
v_io_size totalWrite Total bytes written to the connection. Logs all bytes when the write method is called.
v_int64 timestampLastRead Timestamp microseconds when the last successful read was performed on the connection.
v_int64 timestampLastWrite Timestamp microseconds when the last successful write was performed on the connection.
v_io_size lastReadSize Amount of bytes read during the last successful read.
v_io_size lastWriteSize Amount of bytes written during the last successful write.
std::unordered_map<oatpp::String, void*> metricsData Data collected by stat-collectors - StatCollector

# ConnectionStats::timestampCreated

Timestamp created microseconds. When connection was created.

v_int64 timestampCreated = 0
-

# ConnectionStats::totalRead

Total bytes read from the connection. Logs all bytes when the read method is called.

v_io_size totalRead = 0
-

# ConnectionStats::totalWrite

Total bytes written to the connection. Logs all bytes when the write method is called.

v_io_size totalWrite = 0
-

# ConnectionStats::timestampLastRead

Timestamp microseconds when the last successful read was performed on the connection.

v_int64 timestampLastRead = 0
-

# ConnectionStats::timestampLastWrite

Timestamp microseconds when the last successful write was performed on the connection.

v_int64 timestampLastWrite = 0
-

# ConnectionStats::lastReadSize

Amount of bytes read during the last successful read.

v_io_size lastReadSize = 0
-

# ConnectionStats::lastWriteSize

Amount of bytes written during the last successful write.

v_io_size lastWriteSize = 0
-

# ConnectionStats::metricsData

Data collected by stat-collectors - StatCollector

std::unordered_map<oatpp::String, void*> metricsData
-

# StatCollector

StatCollector collects metrics data of the connection.

namespace oatpp { namespace network { namespace monitor { 
-  class StatCollector : public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~StatCollector Default virtual destructor.
oatpp::String metricName Unique metric name that is collected by this StatCollector.
void* createMetricData Metric data constructor.
void deleteMetricData Metric data destructor.
void onRead On connection read event.
void onWrite On connection write event.

# StatCollector::~StatCollector

Default virtual destructor.

virtual ~StatCollector() = default
-

# StatCollector::metricName

Unique metric name that is collected by this StatCollector.

virtual oatpp::String metricName() = 0
-

# StatCollector::createMetricData

Metric data constructor.

  • @return

virtual void* createMetricData() = 0
-

# StatCollector::deleteMetricData

Metric data destructor.

  • @param metricData

virtual void deleteMetricData(void* metricData) = 0
-

# StatCollector::onRead

On connection read event.

  • @param metricData - metric data of the given connection.- the one created in the createMetricData method.
  • @param readResult - result of the connection read method.
  • @param timestamp - timestamp microseconds when the connection read method was called.

virtual void onRead(void* metricData, v_io_size readResult, v_int64 timestamp) = 0
-

# StatCollector::onWrite

On connection write event.

  • @param metricData - metric data of the given connection.- the one created in the createMetricData method.
  • @param writeResult - result of the connection write method.
  • @param timestamp - timestamp microseconds when the connection write method was called.

virtual void onWrite(void* metricData, v_io_size writeResult, v_int64 timestamp) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/tcp/Connection/index.html deleted file mode 100644 index 184dcb1ac..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/Connection/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/tcp/Connection.hpp"

# Connection

TCP Connection implementation. Extends oatpp::base::Countable and oatpp::data::stream::IOStream.

namespace oatpp { namespace network { namespace tcp { 
-  class Connection : public oatpp::base::Countable, public oatpp::data::stream::IOStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] Connection Constructor.
[none] ~Connection Virtual Destructor (See oatpp::base::Countable).
v_io_size write Implementation of oatpp::data::stream::IOStream::write.
v_io_size read Implementation of oatpp::data::stream::IOStream::read.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
void close Close socket handle.
v_io_handle getHandle Get socket handle.

# Connection::Connection

Constructor.

  • @param handle - file descriptor (socket handle). See oatpp::v_io_handle.

Connection(v_io_handle handle)
-

# Connection::~Connection

Virtual Destructor (See oatpp::base::Countable). Close socket handle.

~Connection()
-

# Connection::write

Implementation of oatpp::data::stream::IOStream::write.

  • @param buff - buffer containing data to write.
  • @param count - bytes count you want to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes written. See oatpp::v_io_size.

v_io_size write(const void *buff, v_buff_size count, async::Action& action) override
-

# Connection::read

Implementation of oatpp::data::stream::IOStream::read.

  • @param buff - buffer to read data to.
  • @param count - buffer size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of bytes read. See oatpp::v_io_size.

v_io_size read(void *buff, v_buff_size count, async::Action& action) override
-

# Connection::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Connection::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Connection::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Connection::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Connection::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-

# Connection::close

Close socket handle.

void close()
-

# Connection::getHandle

Get socket handle.

  • @return - socket handle. oatpp::v_io_handle.

v_io_handle getHandle()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/client/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/tcp/client/ConnectionProvider/index.html deleted file mode 100644 index 1cb80c752..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/client/ConnectionProvider/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/tcp/client/ConnectionProvider.hpp"

# ConnectionProvider

Simple provider of clinet TCP connections.

namespace oatpp { namespace network { namespace tcp { namespace client { 
-  class ConnectionProvider : public ClientConnectionProvider {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Create shared client ConnectionProvider.
void stop Implements oatpp::provider::Provider::stop(). Here does nothing.
provider::ResourceHandle<data::stream::IOStream> get Get connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync Get connection in asynchronous manner.
const network::Address& getAddress Get address - oatpp::network::Address.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const network::Address& address)
-

# ConnectionProvider::createShared

Create shared client ConnectionProvider.

static std::shared_ptr<ConnectionProvider> createShared(const network::Address& address)
-

# ConnectionProvider::stop

Implements oatpp::provider::Provider::stop(). Here does nothing.

void stop() override
-

# ConnectionProvider::get

Get connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

Get connection in asynchronous manner.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-

# ConnectionProvider::getAddress

Get address - oatpp::network::Address.

  • @return

const network::Address& getAddress() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/server/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/tcp/server/ConnectionProvider/index.html deleted file mode 100644 index b8bd14eb1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/tcp/server/ConnectionProvider/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"

# ConnectionProvider

Simple provider of TCP connections.

namespace oatpp { namespace network { namespace tcp { namespace server { 
-  class ConnectionProvider : public ServerConnectionProvider {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Create shared ConnectionProvider.
[none] ~ConnectionProvider Virtual destructor.
void stop Close accept-socket.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync No need to implement this.
const network::Address& getAddress Get address - oatpp::network::Address.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const network::Address& address, bool useExtendedConnections = false)
-

# ConnectionProvider::createShared

Create shared ConnectionProvider.

static std::shared_ptr<ConnectionProvider> createShared(const network::Address& address, bool useExtendedConnections = false)
-

# ConnectionProvider::~ConnectionProvider

Virtual destructor.

~ConnectionProvider()
-

# ConnectionProvider::stop

Close accept-socket.

void stop() override
-

# ConnectionProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-

# ConnectionProvider::getAddress

Get address - oatpp::network::Address.

  • @return

const network::Address& getAddress() const
-

# ConnectionProvider::ExtendedConnection

Connection with extra data - ex.: peer address.

namespace oatpp { namespace network { namespace tcp { namespace server { 
-  class ConnectionProvider : public ServerConnectionProvider {
-    class ExtendedConnection : public oatpp::network::tcp::Connection {}
-  };
-}}}}
-

# Methods

Return Type Name Summary
[none] ExtendedConnection Constructor.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.

# ConnectionProvider::ExtendedConnection::ExtendedConnection

Constructor.

ExtendedConnection(v_io_handle handle, data::stream::Context::Properties&& properties)
-

# ConnectionProvider::ExtendedConnection::getOutputStreamContext

Get output stream context.

oatpp::data::stream::Context& getOutputStreamContext() override
-

# ConnectionProvider::ExtendedConnection::getInputStreamContext

Get input stream context.

oatpp::data::stream::Context& getInputStreamContext() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Interface/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Interface/index.html deleted file mode 100644 index d368e75c8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Interface/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - Interface.hpp | Oat++ - - - - - - - -

# Interface.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/virtual_/Interface.hpp"

# Interface

"Virtual" Interface provides functionality for accepting "virtual" connections. "virtual" connection is represented by oatpp::network::virtual_::Socket.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Interface : public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~Interface Destructor.
std::shared_ptr<Interface> obtainShared Obtain interface for given name.
std::shared_ptr<ListenerLock> bind Aquire Interface::ListenerLock.
std::shared_ptr<ConnectionSubmission> connect Connect to interface.
std::shared_ptr<ConnectionSubmission> connectNonBlocking Connect to interface.
std::shared_ptr<Socket> accept Block and wait for incloming connection.
std::shared_ptr<Socket> acceptNonBlocking Check if incoming connection is available. NonBlocking.
void dropAllConnection Drop all waiting connections.
void notifyAcceptors Notify all threads that are waiting on accept().
oatpp::String getName Get interface name.

# Interface::~Interface

Destructor.

~Interface()
-

# Interface::obtainShared

Obtain interface for given name.

  • @param name - name of the interface.
  • @return - std::shared_ptr to Interface.

static std::shared_ptr<Interface> obtainShared(const oatpp::String& name)
-

# Interface::bind

Aquire Interface::ListenerLock.

std::shared_ptr<ListenerLock> bind()
-

# Interface::connect

Connect to interface.

std::shared_ptr<ConnectionSubmission> connect()
-

# Interface::connectNonBlocking

Connect to interface.

std::shared_ptr<ConnectionSubmission> connectNonBlocking()
-

# Interface::accept

Block and wait for incloming connection.

std::shared_ptr<Socket> accept(const bool& waitingHandle = true,
-                               const std::chrono::duration<v_int64, std::micro>& timeout = std::chrono::minutes (10))
-

# Interface::acceptNonBlocking

Check if incoming connection is available. NonBlocking.

std::shared_ptr<Socket> acceptNonBlocking()
-

# Interface::dropAllConnection

Drop all waiting connections.

void dropAllConnection()
-

# Interface::notifyAcceptors

Notify all threads that are waiting on accept(). Those threads that have waitingHandle changed to false will be unblocked.

void notifyAcceptors()
-

# Interface::getName

Get interface name.

oatpp::String getName()
-

# Interface::ListenerLock

ListenerLock is the Lock object, which represents interface binding ownership.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Interface : public oatpp::base::Countable {
-    class ListenerLock {}
-  };
-}}}
-

# Interface::ConnectionSubmission

"Future" for oatpp::network::virtual_::Socket.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Interface : public oatpp::base::Countable {
-    class ConnectionSubmission {}
-  };
-}}}
-

# Methods

Return Type Name Summary
[none] ConnectionSubmission Constructor.
void setSocket Set socket to be returned in call to Interface::ConnectionSubmission::getSocket()/Interface::ConnectionSubmission::getSocketNonBlocking().
std::shared_ptr<Socket> getSocket Block and wait for socket.
std::shared_ptr<Socket> getSocketNonBlocking Check if socket already available.
bool isValid Check if submission is still valid.

# Interface::ConnectionSubmission::ConnectionSubmission

Constructor.

ConnectionSubmission(bool valid) : m_valid(valid)
-

# Interface::ConnectionSubmission::setSocket

Set socket to be returned in call to Interface::ConnectionSubmission::getSocket()/Interface::ConnectionSubmission::getSocketNonBlocking().

void setSocket(const std::shared_ptr<Socket>& socket)
-

# Interface::ConnectionSubmission::getSocket

Block and wait for socket.

std::shared_ptr<Socket> getSocket()
-

# Interface::ConnectionSubmission::getSocketNonBlocking

Check if socket already available. User should repeat call if (!socket isPending()).

std::shared_ptr<Socket> getSocketNonBlocking()
-

# Interface::ConnectionSubmission::isValid

Check if submission is still valid.

  • @return - true if still valid.

bool isValid()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Pipe/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Pipe/index.html deleted file mode 100644 index 29f98ca3f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Pipe/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - Pipe.hpp | Oat++ - - - - - - - -

# Pipe.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/virtual_/Pipe.hpp"

# Pipe

Virtual pipe implementation. Can be used for unidirectional data transfer between different threads of the same process.
Under the hood it uses oatpp::data::buffer::SynchronizedFIFOBuffer over the oatpp::data::buffer::IOBuffer.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Pipe : public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] Pipe Constructor.
std::shared_ptr<Pipe> createShared Create shared pipe.
[none] ~Pipe Virtual destructor.
Writer* getWriter Get pointer to Pipe::Writer for this pipe.
Reader* getReader Get pointer to Pipe::Reader for this pipe.
void close Mark pipe as closed.

# Pipe::Pipe

Constructor.

Pipe()
-

# Pipe::createShared

Create shared pipe.

  • @return - std::shared_ptr to Pipe.

static std::shared_ptr<Pipe> createShared()
-

# Pipe::~Pipe

Virtual destructor.

virtual ~Pipe()
-

# Pipe::getWriter

Get pointer to Pipe::Writer for this pipe. There can be only one Pipe::Writer per pipe.

Writer* getWriter()
-

# Pipe::getReader

Get pointer to Pipe::Reader for this pipe. There can be only one Pipe::Reader per pipe.

Reader* getReader()
-

# Pipe::close

Mark pipe as closed.

void close()
-

# Pipe::Reader

Pipe Reader. Extends oatpp::data::stream::InputStream. Provides read interface for the pipe. Can work in both blocking and nonblocking regime.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Pipe : public oatpp::base::Countable {
-    class Reader : public oatpp::data::stream::InputStream {}
-  };
-}}}
-

# Methods

Return Type Name Summary
void setMaxAvailableToRead Limit the available amount of bytes to read from pipe.
v_io_size read Implements oatpp::data::stream::InputStream::read method.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getInputStreamContext Get stream context.
void notifyWaitList Notify coroutine wait-list

# Pipe::Reader::setMaxAvailableToRead

Limit the available amount of bytes to read from pipe.
This method is used for testing purposes only.
set to -1 in order to ignore this value.

  • @param maxAvailableToRead - maximum available amount of bytes to read.

void setMaxAvailableToRead(v_io_size maxAvailableToRead)
-

# Pipe::Reader::read

Implements oatpp::data::stream::InputStream::read method. Read data from pipe.

  • @param data - buffer to read data to.
  • @param count - max count of bytes to read.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - oatpp::v_io_size.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# Pipe::Reader::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Pipe::Reader::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Pipe::Reader::getInputStreamContext

Get stream context.

  • @return

oatpp::data::stream::Context& getInputStreamContext() override
-

# Pipe::Reader::notifyWaitList

Notify coroutine wait-list

void notifyWaitList()
-

# Pipe::Writer

Pipe writer. Extends oatpp::data::stream::OutputStream. Provides write interface for the pipe. Can work in both blocking and nonblocking regime.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Pipe : public oatpp::base::Countable {
-    class Writer : public oatpp::data::stream::OutputStream {}
-  };
-}}}
-

# Methods

Return Type Name Summary
void setMaxAvailableToWrite Limit the available space for data writes in pipe.
v_io_size write Implements oatpp::data::stream::OutputStream::write method.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get stream context.
void notifyWaitList Notify coroutine wait-list

# Pipe::Writer::setMaxAvailableToWrite

Limit the available space for data writes in pipe.
This method is used for testing purposes only.
set to -1 in order to ignore this value.

  • @param maxAvailableToWrite - maximum available amount of bytes to write.

void setMaxAvailableToWrite(v_io_size maxAvailableToWrite)
-

# Pipe::Writer::write

Implements oatpp::data::stream::OutputStream::write method. Write data to pipe.

  • @param data - data to write to pipe.
  • @param count - data size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Pipe::Writer::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Pipe::Writer::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Pipe::Writer::getOutputStreamContext

Get stream context.

  • @return

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Pipe::Writer::notifyWaitList

Notify coroutine wait-list

void notifyWaitList()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Socket/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Socket/index.html deleted file mode 100644 index 65af37d9f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/Socket/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - Socket.hpp | Oat++ - - - - - - - -

# Socket.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/virtual_/Socket.hpp"

# Socket

Virtual socket implementation. Can be used as a bidirectional data transfer between different threads of the same process.
Under the hood it uses a pair of oatpp::network::virtual_::Pipe. One to write data to, and one to read data from. Extends oatpp::base::Countable and oatpp::data::stream::IOStream.

namespace oatpp { namespace network { namespace virtual_ { 
-  class Socket : public oatpp::data::stream::IOStream, public oatpp::base::Countable {}
-}}}
-

# Methods

Return Type Name Summary
[none] Socket Constructor.
std::shared_ptr<Socket> createShared Create shared socket.
[none] ~Socket Virtual destructor. Close corresponding pipes.
void setMaxAvailableToReadWrtie Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
v_io_size read Read data from socket.
v_io_size write Write data to socket.
void setOutputStreamIOMode Set OutputStream I/O mode.
oatpp::data::stream::IOMode getOutputStreamIOMode Set OutputStream I/O mode.
void setInputStreamIOMode Set InputStream I/O mode.
oatpp::data::stream::IOMode getInputStreamIOMode Get InputStream I/O mode.
oatpp::data::stream::Context& getOutputStreamContext Get output stream context.
oatpp::data::stream::Context& getInputStreamContext Get input stream context.
void close Close socket pipes.

# Socket::Socket

Constructor.

  • @param pipeIn - pipe to read data from.
  • @param pipeOut - pipe to write data to.

Socket(const std::shared_ptr<Pipe>& pipeIn, const std::shared_ptr<Pipe>& pipeOut)
-

# Socket::createShared

Create shared socket.

  • @param pipeIn - pipe to read data from.
  • @param pipeOut - pipe to write data to.
  • @return - std::shared_ptr to Socket.

static std::shared_ptr<Socket> createShared(const std::shared_ptr<Pipe>& pipeIn, const std::shared_ptr<Pipe>& pipeOut)
-

# Socket::~Socket

Virtual destructor. Close corresponding pipes.

~Socket()
-

# Socket::setMaxAvailableToReadWrtie

Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
This method is used for testing purposes only.

  • @param maxToRead - maximum available amount of bytes to read.
  • @param maxToWrite - maximum available amount of bytes to write.

void setMaxAvailableToReadWrtie(v_io_size maxToRead, v_io_size maxToWrite)
-

# Socket::read

Read data from socket.

  • @param data - buffer to read data to.
  • @param count - buffer size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of data read from socket.

v_io_size read(void *data, v_buff_size count, async::Action& action) override
-

# Socket::write

Write data to socket.

  • @param data - data to write to socket.
  • @param count - data size.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual amount of data written to socket.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Socket::setOutputStreamIOMode

Set OutputStream I/O mode.

  • @param ioMode

void setOutputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Socket::getOutputStreamIOMode

Set OutputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getOutputStreamIOMode() override
-

# Socket::setInputStreamIOMode

Set InputStream I/O mode.

  • @param ioMode

void setInputStreamIOMode(oatpp::data::stream::IOMode ioMode) override
-

# Socket::getInputStreamIOMode

Get InputStream I/O mode.

  • @return

oatpp::data::stream::IOMode getInputStreamIOMode() override
-

# Socket::getOutputStreamContext

Get output stream context.

  • @return

oatpp::data::stream::Context& getOutputStreamContext() override
-

# Socket::getInputStreamContext

Get input stream context.

  • @return

oatpp::data::stream::Context& getInputStreamContext() override
-

# Socket::close

Close socket pipes.

void close()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/client/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/client/ConnectionProvider/index.html deleted file mode 100644 index dcbd94fb0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/client/ConnectionProvider/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/virtual_/client/ConnectionProvider.hpp"

# ConnectionProvider

Provider of "virtual" connections for client. See oatpp::network::virtual_::Interface, oatpp::network::virtual_::Socket
Extends oatpp::network::ClientConnectionProvider.

namespace oatpp { namespace network { namespace virtual_ { namespace client { 
-  class ConnectionProvider : public oatpp::network::ClientConnectionProvider {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Create shared ConnectionProvider.
void setSocketMaxAvailableToReadWrtie Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
void stop Implementation of oatpp::provider::Provider::Stop method.
provider::ResourceHandle<data::stream::IOStream> get Get connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync Get connection in asynchronous manner.

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<virtual_::Interface>& _interface)
-

# ConnectionProvider::createShared

Create shared ConnectionProvider.

static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<virtual_::Interface>& _interface)
-

# ConnectionProvider::setSocketMaxAvailableToReadWrtie

Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
This method is used for testing purposes only.

  • @param maxToRead - maximum available amount of bytes to read.
  • @param maxToWrite - maximum available amount of bytes to write.

void setSocketMaxAvailableToReadWrtie(v_io_size maxToRead, v_io_size maxToWrite)
-

# ConnectionProvider::stop

Implementation of oatpp::provider::Provider::Stop method.

void stop() override
-

# ConnectionProvider::get

Get connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

Get connection in asynchronous manner.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/server/ConnectionProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/server/ConnectionProvider/index.html deleted file mode 100644 index 308f316e1..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/network/virtual_/server/ConnectionProvider/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - ConnectionProvider.hpp | Oat++ - - - - - - - -

# ConnectionProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/network/virtual_/server/ConnectionProvider.hpp"

# ConnectionProvider

Provider of "virtual" connections. See oatpp::network::virtual_::Interface, oatpp::network::virtual_::Socket
Extends oatpp::network::ServerConnectionProvider.

namespace oatpp { namespace network { namespace virtual_ { namespace server { 
-  class ConnectionProvider : public oatpp::network::ServerConnectionProvider {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ConnectionProvider Constructor.
std::shared_ptr<ConnectionProvider> createShared Create shared ConnectionProvider.
void setSocketMaxAvailableToReadWrtie Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
void stop Break accepting loop.
provider::ResourceHandle<data::stream::IOStream> get Get incoming connection.
oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync NOT IMPLEMENTED!

# ConnectionProvider::ConnectionProvider

Constructor.

ConnectionProvider(const std::shared_ptr<virtual_::Interface>& _interface)
-

# ConnectionProvider::createShared

Create shared ConnectionProvider.

static std::shared_ptr<ConnectionProvider> createShared(const std::shared_ptr<virtual_::Interface>& _interface)
-

# ConnectionProvider::setSocketMaxAvailableToReadWrtie

Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket.
This method is used for testing purposes only.

  • @param maxToRead - maximum available amount of bytes to read.
  • @param maxToWrite - maximum available amount of bytes to write.

void setSocketMaxAvailableToReadWrtie(v_io_size maxToRead, v_io_size maxToWrite)
-

# ConnectionProvider::stop

Break accepting loop.

void stop() override
-

# ConnectionProvider::get

Get incoming connection.

provider::ResourceHandle<data::stream::IOStream> get() override
-

# ConnectionProvider::getAsync

NOT IMPLEMENTED!
No need to implement this.
For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write.
It may be implemented later.

oatpp::async::CoroutineStarterForResult<const provider::ResourceHandle<data::stream::IOStream>&> getAsync() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/Connection/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/Connection/index.html deleted file mode 100644 index 4964b07df..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/Connection/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Connection.hpp | Oat++ - - - - - - - -

# Connection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/Connection.hpp"

# Connection

Abstract database connection.

namespace oatpp { namespace orm { 
-  class Connection : public base::Countable {}
-}}
-

# Methods

Return Type Name Summary
[none] ~Connection Virtual destructor.

# Connection::~Connection

Virtual destructor.

virtual ~Connection() = default
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/DbClient/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/DbClient/index.html deleted file mode 100644 index 22cbd1129..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/DbClient/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - DbClient.hpp | Oat++ - - - - - - - -

# DbClient.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/DbClient.hpp"

# DbClient

Database client.

namespace oatpp { namespace orm { 
-  class DbClient {}
-}}
-

# Methods

Return Type Name Summary
[none] DbClient Constructor.
[none] ~DbClient Virtual destructor.
provider::ResourceHandle<Connection> getConnection Get database connection.
void setEnabledInterpretations Set enabled type interpretations.
std::shared_ptr<const data::mapping::TypeResolver> getTypeResolver Get type resolver.
data::share::StringTemplate parseQueryTemplate Parse query template.
std::shared_ptr<QueryResult> execute Execute query using template.
std::shared_ptr<QueryResult> executeQuery Execute arbitrary query.
Transaction beginTransaction Begin database transaction.

# DbClient::DbClient

Constructor.

DbClient(const std::shared_ptr<Executor>& executor)
-

# DbClient::~DbClient

Virtual destructor.

virtual ~DbClient() = default
-

# DbClient::getConnection

Get database connection.

  • @return

provider::ResourceHandle<Connection> getConnection()
-

# DbClient::setEnabledInterpretations

Set enabled type interpretations.

  • @param enabledInterpretations

void setEnabledInterpretations(const std::vector<std::string>& enabledInterpretations)
-

# DbClient::getTypeResolver

Get type resolver.

std::shared_ptr<const data::mapping::TypeResolver> getTypeResolver()
-

# DbClient::parseQueryTemplate

Parse query template.

  • @param name - template name.
  • @param text - template text.
  • @param paramsTypeMap - template parameter types.
  • @param prepare - true if the query should use prepared statement, false otherwise.
  • @return - oatpp::data::share::StringTemplate.

data::share::StringTemplate parseQueryTemplate(const oatpp::String& name,
-                                               const oatpp::String& text,
-                                               const Executor::ParamsTypeMap& paramsTypeMap,
-                                               bool prepare = false)
-

# DbClient::execute

Execute query using template.

std::shared_ptr<QueryResult> execute(const data::share::StringTemplate& queryTemplate,
-                                     const std::unordered_map<oatpp::String, oatpp::Void>& params,
-                                     const provider::ResourceHandle<Connection>& connection = nullptr)
-

# DbClient::executeQuery

Execute arbitrary query.

  • @param query - query text.
  • @param params - query parameters.
  • @param connection - database connection.
  • @return - oatpp::orm::QueryResult.

std::shared_ptr<QueryResult> executeQuery(const oatpp::String& query,
-                                          const std::unordered_map<oatpp::String, oatpp::Void>& params,
-                                          const provider::ResourceHandle<Connection>& connection = nullptr)
-

# DbClient::beginTransaction

Begin database transaction.

Transaction beginTransaction(const provider::ResourceHandle<Connection>& connection = nullptr)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/Executor/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/Executor/index.html deleted file mode 100644 index 11379c1f4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/Executor/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - Executor.hpp | Oat++ - - - - - - - -

# Executor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/Executor.hpp"

# Executor

Database executor.

namespace oatpp { namespace orm { 
-  class Executor {}
-}}
-

# Methods

Return Type Name Summary
[none] Executor Default constructor.
[none] ~Executor Default virtual destructor.
std::shared_ptr<const data::mapping::TypeResolver> getDefaultTypeResolver Get default type resolver.
std::shared_ptr<data::mapping::TypeResolver> createTypeResolver Create new type resolver.
provider::ResourceHandle<Connection> getConnection Get database connection.
StringTemplate parseQueryTemplate Parse query template.
std::shared_ptr<QueryResult> execute Multiple implementations:
  1. Execute database query using a query template.
  2. Execute an arbitrary database query.
std::shared_ptr<QueryResult> begin Begin database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.
std::shared_ptr<QueryResult> commit Commit database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.
std::shared_ptr<QueryResult> rollback Rollback database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.
v_int64 getSchemaVersion Get current database schema version.
void migrateSchema Run schema migration script. Should NOT be used directly. Use oatpp::orm::SchemaMigration instead.

# Executor::Executor

Default constructor.

Executor()
-

# Executor::~Executor

Default virtual destructor.

virtual ~Executor() = default
-

# Executor::getDefaultTypeResolver

Get default type resolver.

  • @return

std::shared_ptr<const data::mapping::TypeResolver> getDefaultTypeResolver()
-

# Executor::createTypeResolver

Create new type resolver.

  • @return

virtual std::shared_ptr<data::mapping::TypeResolver> createTypeResolver() = 0
-

# Executor::getConnection

Get database connection.

  • @return

virtual provider::ResourceHandle<Connection> getConnection() = 0
-

# Executor::parseQueryTemplate

Parse query template.

  • @param name - template name.
  • @param text - template text.
  • @param paramsTypeMap - template parameter types.
  • @param prepare - true if the query should use prepared statement, false otherwise.
  • @return - oatpp::data::share::StringTemplate.

virtual StringTemplate parseQueryTemplate(const oatpp::String& name,
-                                          const oatpp::String& text,
-                                          const ParamsTypeMap& paramsTypeMap,
-                                          bool prepare = false) = 0
-

# Executor::execute

  1. Execute database query using a query template.
    • @param queryTemplate - a query template obtained in a prior call to Executor::parseQueryTemplate() method.
    • @param params - query parameters.
    • @param enabledInterpretations - enabled type interpretations.
    • @param connection - database connection.
    • @return - oatpp::orm::QueryResult.
    virtual std::shared_ptr<QueryResult> execute(const StringTemplate& queryTemplate,
    -                                             const std::unordered_map<oatpp::String, oatpp::Void>& params,
    -                                             const std::shared_ptr<const data::mapping::TypeResolver>& typeResolver = nullptr,
    -                                             const provider::ResourceHandle<Connection>& connection = nullptr) = 0
    -
  2. Execute an arbitrary database query.
    In its default implementation it'll call execute with the null-named query template. The query template will be created by a call to parseQueryTemplate(nullptr, query, {}, false).
    • @param query - query text.
    • @param params - query parameters.
    • @param enabledInterpretations - enabled type interpretations.
    • @param connection - database connection.
    • @return - oatpp::orm::QueryResult.
    virtual std::shared_ptr<QueryResult> execute(const oatpp::String& query,
    -                                             const std::unordered_map<oatpp::String, oatpp::Void>& params,
    -                                             const std::shared_ptr<const data::mapping::TypeResolver>& typeResolver = nullptr,
    -                                             const provider::ResourceHandle<Connection>& connection = nullptr)
    -

# Executor::begin

Begin database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.

virtual std::shared_ptr<QueryResult> begin(const provider::ResourceHandle<Connection>& connection = nullptr) = 0
-

# Executor::commit

Commit database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.

virtual std::shared_ptr<QueryResult> commit(const provider::ResourceHandle<Connection>& connection) = 0
-

# Executor::rollback

Rollback database transaction. Should NOT be used directly. Use oatpp::orm::Transaction instead.

virtual std::shared_ptr<QueryResult> rollback(const provider::ResourceHandle<Connection>& connection) = 0
-

# Executor::getSchemaVersion

Get current database schema version.

  • @param suffix - suffix of schema version control table name.
  • @param connection - database connection.
  • @return - schema version.

virtual v_int64 getSchemaVersion(const oatpp::String& suffix = nullptr,
-                                 const provider::ResourceHandle<Connection>& connection = nullptr) = 0
-

# Executor::migrateSchema

Run schema migration script. Should NOT be used directly. Use oatpp::orm::SchemaMigration instead.

  • @param script - script text.
  • @param newVersion - schema version corresponding to this script.
  • @param suffix - suffix of schema version control table name.
  • @param connection - database connection.

virtual void migrateSchema(const oatpp::String& script,
-                           v_int64 newVersion,
-                           const oatpp::String& suffix = nullptr,
-                           const provider::ResourceHandle<Connection>& connection = nullptr) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/QueryResult/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/QueryResult/index.html deleted file mode 100644 index e7cd53047..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/QueryResult/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - QueryResult.hpp | Oat++ - - - - - - - -

# QueryResult.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/QueryResult.hpp"

# QueryResult

Result of DB query.

namespace oatpp { namespace orm { 
-  class QueryResult {}
-}}
-

# Methods

Return Type Name Summary
[none] ~QueryResult Virtual destructor.
provider::ResourceHandle<Connection> getConnection Get DB connection associated with this result.
bool isSuccess Check if the query was successful.
oatpp::String getErrorMessage Get error message in case isSuccess() == false
v_int64 getPosition Get result read position.
v_int64 getKnownCount Get result entries count in the case it's known.
bool hasMoreToFetch Check if there is more data to fetch.
oatpp::Void fetch Multiple implementations:
  1. Fetch result entries.
  2. Fetch result entries.

# QueryResult::~QueryResult

Virtual destructor.

virtual ~QueryResult() = default
-

# QueryResult::getConnection

Get DB connection associated with this result.

  • @return

virtual provider::ResourceHandle<Connection> getConnection() const = 0
-

# QueryResult::isSuccess

Check if the query was successful.

  • @return

virtual bool isSuccess() const = 0
-

# QueryResult::getErrorMessage

Get error message in case isSuccess() == false

  • @return

virtual oatpp::String getErrorMessage() const = 0
-

# QueryResult::getPosition

Get result read position.

  • @return

virtual v_int64 getPosition() const = 0
-

# QueryResult::getKnownCount

Get result entries count in the case it's known.

  • @return - [0..N] - in case known. -1 - otherwise.

virtual v_int64 getKnownCount() const = 0
-

# QueryResult::hasMoreToFetch

Check if there is more data to fetch.

  • @return

virtual bool hasMoreToFetch() const = 0
-

# QueryResult::fetch

  1. Fetch result entries.
    • @param resultType - wanted output type.
    • @param count - how many entries to fetch. Use -1 to fetch all.
    • @return - oatpp::Void.
    virtual oatpp::Void fetch(const oatpp::Type* const resultType, v_int64 count) = 0
    -
  2. Fetch result entries.
    • @tparam Wrapper - output type.
    • @param count - how many entries to fetch. Use -1 to fetch all.
    • @return - Wrapper.
    template<class Wrapper>
    -Wrapper fetch(v_int64 count = -1)
    -
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/SchemaMigration/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/SchemaMigration/index.html deleted file mode 100644 index 9d636fed9..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/SchemaMigration/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - SchemaMigration.hpp | Oat++ - - - - - - - -

# SchemaMigration.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/SchemaMigration.hpp"

# SchemaMigration

Database schema migration helper.

namespace oatpp { namespace orm { 
-  class SchemaMigration {}
-}}
-

# Methods

Return Type Name Summary
[none] SchemaMigration Constructor.
[none] ~SchemaMigration Default virtual destructor.
void addText Add migration script as text.
void addFile Add migration script file.
void migrate Run database schema migration.

# SchemaMigration::SchemaMigration

Constructor.

SchemaMigration(const base::ObjectHandle<Executor>& executor, const oatpp::String& suffix = nullptr)
-

# SchemaMigration::~SchemaMigration

Default virtual destructor.

virtual ~SchemaMigration() = default
-

# SchemaMigration::addText

Add migration script as text.

  • @param version - schema version corresponding to this script.
  • @param script - script text.

void addText(v_int64 version, const oatpp::String& script)
-

# SchemaMigration::addFile

Add migration script file.

  • @param version - schema version corresponding to this script.
  • @param script - path to script file.

void addFile(v_int64 version, const oatpp::String& filename)
-

# SchemaMigration::migrate

Run database schema migration.

void migrate()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/orm/Transaction/index.html b/docs/.vuepress/dist/api/latest/oatpp/orm/Transaction/index.html deleted file mode 100644 index c854df7c2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/orm/Transaction/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - Transaction.hpp | Oat++ - - - - - - - -

# Transaction.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/orm/Transaction.hpp"

# Transaction

Database transaction.

namespace oatpp { namespace orm { 
-  class Transaction {}
-}}
-

# Methods

Return Type Name Summary
[none] Transaction Multiple implementations:
  1. Constructor.
  2. Copy constructor.
  3. Move constructor.
[none] ~Transaction Virtual destructor.
provider::ResourceHandle<Connection> getConnection Get the database connection associated with the transaction.
std::shared_ptr<QueryResult> commit Commit transaction.
std::shared_ptr<QueryResult> rollback Rollback transaction.

# Transaction::Transaction

  1. Constructor.
    Transaction(const base::ObjectHandle<Executor>& executor, const provider::ResourceHandle<Connection>& connection = nullptr)
    -
  2. Copy constructor.
    • @param other
    Transaction(const Transaction& other) = delete
    -
  3. Move constructor.
    • @param other
    Transaction(Transaction&& other)
    -

# Transaction::~Transaction

Virtual destructor.
Will automatically call Transaction::rollback() if there was no prior call to Transaction::commit() method.

virtual ~Transaction()
-

# Transaction::getConnection

Get the database connection associated with the transaction.
Note: all database queries within the transaction MUST be called on this connection.

  • @return

provider::ResourceHandle<Connection> getConnection() const
-

# Transaction::commit

Commit transaction.

  • @return

std::shared_ptr<QueryResult> commit()
-

# Transaction::rollback

Rollback transaction.

  • @return

std::shared_ptr<QueryResult> rollback()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/parser/json/Beautifier/index.html b/docs/.vuepress/dist/api/latest/oatpp/parser/json/Beautifier/index.html deleted file mode 100644 index ac6a271ae..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/parser/json/Beautifier/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - Beautifier.hpp | Oat++ - - - - - - - -

# Beautifier.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/parser/json/Beautifier.hpp"

# Beautifier

JSON output stream beautifier.

namespace oatpp { namespace parser { namespace json { 
-  class Beautifier : public oatpp::data::stream::ConsistentOutputStream {}
-}}}
-

# Methods

Return Type Name Summary
[none] Beautifier Constructor.
v_io_size write Write count of bytes to stream.
void setOutputStreamIOMode Set stream I/O mode.
IOMode getOutputStreamIOMode Get stream I/O mode.
Context& getOutputStreamContext Get stream context.

# Beautifier::Beautifier

Constructor.

  • @param outputStream - destination output stream.
  • @param indent
  • @param newLine

Beautifier(ConsistentOutputStream* outputStream, const oatpp::String& indent, const oatpp::String& newLine)
-

# Beautifier::write

Write count of bytes to stream.

  • @param data - data to write.
  • @param count - number of bytes to write.
  • @param action
  • @return - actual number of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override
-

# Beautifier::setOutputStreamIOMode

Set stream I/O mode.

  • @throws

void setOutputStreamIOMode(IOMode ioMode) override
-

# Beautifier::getOutputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getOutputStreamIOMode() override
-

# Beautifier::getOutputStreamContext

Get stream context.

  • @return

Context& getOutputStreamContext() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/parser/json/Utils/index.html b/docs/.vuepress/dist/api/latest/oatpp/parser/json/Utils/index.html deleted file mode 100644 index 5b8c001a0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/parser/json/Utils/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Utils.hpp | Oat++ - - - - - - - -

# Utils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/parser/json/Utils.hpp"

# Utils

Utility class for json serializer/deserializer. Used by oatpp::parser::json::mapping::Serializer, oatpp::parser::json::mapping::Deserializer.

namespace oatpp { namespace parser { namespace json { 
-  class Utils {}
-}}}
-

# Fields

Type Name Summary
v_int64 ERROR_CODE_INVALID_ESCAPED_CHAR ERROR_CODE_INVALID_ESCAPED_CHAR
v_int64 ERROR_CODE_INVALID_SURROGATE_PAIR ERROR_CODE_INVALID_SURROGATE_PAIR
v_int64 ERROR_CODE_PARSER_QUOTE_EXPECTED '\' - EXPECTED" ERROR_CODE_PARSER_QUOTE_EXPECTED

# Methods

Return Type Name Summary
String escapeString Escape string as for json standard.
String unescapeString Unescape string as for json standard.
std::string unescapeStringToStdString Same as Utils::unescapeString() but return std::string.
String parseString Parse string enclosed in "<string>".
std::string parseStringToStdString Parse string enclosed in "<string>".

# Utils::ERROR_CODE_INVALID_ESCAPED_CHAR

ERROR_CODE_INVALID_ESCAPED_CHAR

static constexpr v_int64 ERROR_CODE_INVALID_ESCAPED_CHAR = 1
-

# Utils::ERROR_CODE_INVALID_SURROGATE_PAIR

ERROR_CODE_INVALID_SURROGATE_PAIR

static constexpr v_int64 ERROR_CODE_INVALID_SURROGATE_PAIR = 2
-

# Utils::ERROR_CODE_PARSER_QUOTE_EXPECTED

'\' - EXPECTED" ERROR_CODE_PARSER_QUOTE_EXPECTED

static constexpr v_int64 ERROR_CODE_PARSER_QUOTE_EXPECTED = 3
-

# Utils::escapeString

Escape string as for json standard.
Note: if(copyAsOwnData == false escapedString == initialString) then result string will point to initial data.

  • @param data - pointer to string to escape.
  • @param size - data size.
  • @param flags - escape flags.
  • @return - oatpp::String.

static String escapeString(const char* data, v_buff_size size, v_uint32 flags = FLAG_ESCAPE_ALL)
-

# Utils::unescapeString

Unescape string as for json standard.

static String unescapeString(const char* data, v_buff_size size, v_int64& errorCode, v_buff_size& errorPosition)
-

# Utils::unescapeStringToStdString

Same as Utils::unescapeString() but return std::string.

static std::string unescapeStringToStdString(const char* data, v_buff_size size, v_int64& errorCode, v_buff_size& errorPosition)
-

# Utils::parseString

Parse string enclosed in "<string>".

static String parseString(ParsingCaret& caret)
-

# Utils::parseStringToStdString

Parse string enclosed in "<string>".

static std::string parseStringToStdString(ParsingCaret& caret)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Deserializer/index.html b/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Deserializer/index.html deleted file mode 100644 index 9e2a8af6e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Deserializer/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Deserializer.hpp | Oat++ - - - - - - - -

# Deserializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/parser/json/mapping/Deserializer.hpp"

# Deserializer

Json Deserializer. Deserialize oatpp DTO object from json. See Data Transfer Object(DTO) component.

namespace oatpp { namespace parser { namespace json { namespace mapping { 
-  class Deserializer {}
-}}}}
-

# Fields

Type Name Summary
v_int32 ERROR_CODE_OBJECT_SCOPE_OPEN "'{' - expected"
v_int32 ERROR_CODE_OBJECT_SCOPE_CLOSE "'}' - expected"
v_int32 ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD "Unknown field"
v_int32 ERROR_CODE_OBJECT_SCOPE_COLON_MISSING "':' - expected"
v_int32 ERROR_CODE_ARRAY_SCOPE_OPEN "'[' - expected"
v_int32 ERROR_CODE_ARRAY_SCOPE_CLOSE "']' - expected"
v_int32 ERROR_CODE_VALUE_BOOLEAN "'true' or 'false' - expected"

# Methods

Return Type Name Summary
[none] Deserializer Constructor.
void setDeserializerMethod Set deserializer method for type.
oatpp::Void deserialize Deserialize text.
const std::shared_ptr<Config>& getConfig Get deserializer config.

# Deserializer::ERROR_CODE_OBJECT_SCOPE_OPEN

"'{' - expected"

static constexpr v_int32 ERROR_CODE_OBJECT_SCOPE_OPEN = 1
-

# Deserializer::ERROR_CODE_OBJECT_SCOPE_CLOSE

"'}' - expected"

static constexpr v_int32 ERROR_CODE_OBJECT_SCOPE_CLOSE = 2
-

# Deserializer::ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD

"Unknown field"

static constexpr v_int32 ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD = 3
-

# Deserializer::ERROR_CODE_OBJECT_SCOPE_COLON_MISSING

"':' - expected"

static constexpr v_int32 ERROR_CODE_OBJECT_SCOPE_COLON_MISSING = 4
-

# Deserializer::ERROR_CODE_ARRAY_SCOPE_OPEN

"'[' - expected"

static constexpr v_int32 ERROR_CODE_ARRAY_SCOPE_OPEN = 5
-

# Deserializer::ERROR_CODE_ARRAY_SCOPE_CLOSE

"']' - expected"

static constexpr v_int32 ERROR_CODE_ARRAY_SCOPE_CLOSE = 6
-

# Deserializer::ERROR_CODE_VALUE_BOOLEAN

"'true' or 'false' - expected"

static constexpr v_int32 ERROR_CODE_VALUE_BOOLEAN = 7
-

# Deserializer::Deserializer

Constructor.

  • @param config

Deserializer(const std::shared_ptr<Config>& config = std::make_shared<Config>())
-

# Deserializer::setDeserializerMethod

Set deserializer method for type.

void setDeserializerMethod(const data::mapping::type::ClassId& classId, DeserializerMethod method)
-

# Deserializer::deserialize

Deserialize text.

oatpp::Void deserialize(parser::Caret& caret, const Type* const type)
-

# Deserializer::getConfig

Get deserializer config.

  • @return

const std::shared_ptr<Config>& getConfig()
-

# Deserializer::Config

Deserializer config.

namespace oatpp { namespace parser { namespace json { namespace mapping { 
-  class Deserializer {
-    class Config : public oatpp::base::Countable {}
-  };
-}}}}
-

# Fields

Type Name Summary
bool allowUnknownFields Do not fail if unknown field is found in json. "unknown field" is the one which is not present in DTO object class.
std::vector<std::string> enabledInterpretations Enable type interpretations.

# Methods

Return Type Name Summary
[none] Config Constructor.
std::shared_ptr<Config> createShared Create shared Config.

# Deserializer::Config::allowUnknownFields

Do not fail if unknown field is found in json. "unknown field" is the one which is not present in DTO object class.

bool allowUnknownFields = true
-

# Deserializer::Config::enabledInterpretations

Enable type interpretations.

std::vector<std::string> enabledInterpretations =
-

# Deserializer::Config::Config

Constructor.

Config()
-

# Deserializer::Config::createShared

Create shared Config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/ObjectMapper/index.html b/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/ObjectMapper/index.html deleted file mode 100644 index 3216e572c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/ObjectMapper/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ObjectMapper.hpp | Oat++ - - - - - - - -

# ObjectMapper.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/parser/json/mapping/ObjectMapper.hpp"

# ObjectMapper

Json ObjectMapper. Serialized/Deserializes oatpp DTO objects to/from JSON. See Data Transfer Object(DTO) component.
Extends oatpp::base::Countable, oatpp::data::mapping::ObjectMapper.

namespace oatpp { namespace parser { namespace json { namespace mapping { 
-  class ObjectMapper : public oatpp::base::Countable, public oatpp::data::mapping::ObjectMapper {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ObjectMapper Multiple implementations:
  1. Constructor.
  2. Constructor.
std::shared_ptr<ObjectMapper> createShared Multiple implementations:
  1. Create shared ObjectMapper.
  2. Create shared ObjectMapper.
void write Implementation of oatpp::data::mapping::ObjectMapper::write().
oatpp::Void read Implementation of oatpp::data::mapping::ObjectMapper::read().
std::shared_ptr<Serializer> getSerializer Get serializer.
std::shared_ptr<Deserializer> getDeserializer Get deserializer.

# ObjectMapper::ObjectMapper

  1. Constructor.
    ObjectMapper(const std::shared_ptr<Serializer::Config>& serializerConfig,
    -             const std::shared_ptr<Deserializer::Config>& deserializerConfig)
    -
  2. Constructor.
    • @param serializer
    • @param deserializer
    ObjectMapper(const std::shared_ptr<Serializer>& serializer = std::make_shared<Serializer>(),
    -             const std::shared_ptr<Deserializer>& deserializer = std::make_shared<Deserializer>())
    -

# ObjectMapper::createShared

  1. Create shared ObjectMapper.
    static std::shared_ptr<ObjectMapper>
    -createShared(const std::shared_ptr<Serializer::Config>& serializerConfig,
    -             const std::shared_ptr<Deserializer::Config>& deserializerConfig)
    -
  2. Create shared ObjectMapper.
    • @param serializer
    • @param deserializer
    • @return
    static std::shared_ptr<ObjectMapper>
    -createShared(const std::shared_ptr<Serializer>& serializer = std::make_shared<Serializer>(),
    -             const std::shared_ptr<Deserializer>& deserializer = std::make_shared<Deserializer>())
    -

# ObjectMapper::write

Implementation of oatpp::data::mapping::ObjectMapper::write().

void write(data::stream::ConsistentOutputStream* stream, const oatpp::Void& variant) const override
-

# ObjectMapper::read

Implementation of oatpp::data::mapping::ObjectMapper::read().

oatpp::Void read(oatpp::parser::Caret& caret, const oatpp::data::mapping::type::Type* const type) const override
-

# ObjectMapper::getSerializer

Get serializer.

  • @return

std::shared_ptr<Serializer> getSerializer()
-

# ObjectMapper::getDeserializer

Get deserializer.

  • @return

std::shared_ptr<Deserializer> getDeserializer()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Serializer/index.html b/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Serializer/index.html deleted file mode 100644 index 47155dc38..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/parser/json/mapping/Serializer/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Serializer.hpp | Oat++ - - - - - - - -

# Serializer.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/parser/json/mapping/Serializer.hpp"

# Serializer

Json Serializer. Serializes oatpp DTO object to json. See Data Transfer Object(DTO) component.

namespace oatpp { namespace parser { namespace json { namespace mapping { 
-  class Serializer {}
-}}}}
-

# Serializer::Config

Serializer config.

namespace oatpp { namespace parser { namespace json { namespace mapping { 
-  class Serializer {
-    class Config : public oatpp::base::Countable {}
-  };
-}}}}
-

# Fields

Type Name Summary
bool includeNullFields Include fields with value == nullptr into serialized json. Field will still be included when field-info required is set to true and alwaysIncludeRequired is set to true.
bool alwaysIncludeRequired Always include required fields (set in in DTO_FIELD_INFO) even if they are value == nullptr
bool alwaysIncludeNullCollectionElements Always include array or map elements, even if their value is nullptr.
bool throwOnUnknownTypes If true - insert string "<unknown-type>" in json field value in case unknown field found. Fail if false. Known types for this serializer are:
(String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).
bool useBeautifier Use JSON Beautifier.
oatpp::String beautifierIndent Beautifier Indent.
oatpp::String beautifierNewLine Beautifier new line.

# Methods

Return Type Name Summary
[none] Config Constructor.
std::shared_ptr<Config> createShared Create shared config.

# Serializer::Config::includeNullFields

Include fields with value == nullptr into serialized json. Field will still be included when field-info required is set to true and alwaysIncludeRequired is set to true.

bool includeNullFields = true
-

# Serializer::Config::alwaysIncludeRequired

Always include required fields (set in in DTO_FIELD_INFO) even if they are value == nullptr

bool alwaysIncludeRequired = false
-

# Serializer::Config::alwaysIncludeNullCollectionElements

Always include array or map elements, even if their value is nullptr.

bool alwaysIncludeNullCollectionElements = false
-

# Serializer::Config::throwOnUnknownTypes

If true - insert string "<unknown-type>" in json field value in case unknown field found. Fail if false. Known types for this serializer are:
(String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).

bool throwOnUnknownTypes = true
-

# Serializer::Config::useBeautifier

Use JSON Beautifier.

bool useBeautifier = false
-

# Serializer::Config::beautifierIndent

Beautifier Indent.

oatpp::String beautifierIndent = "  "
-

# Serializer::Config::beautifierNewLine

Beautifier new line.

oatpp::String beautifierNewLine = "
-

# Serializer::Config::Config

Constructor.

Config()
-

# Serializer::Config::createShared

Create shared config.

  • @return - std::shared_ptr to Config.

static std::shared_ptr<Config> createShared()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/client/ApiClient/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/client/ApiClient/index.html deleted file mode 100644 index e98804aaf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/client/ApiClient/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - ApiClient.hpp | Oat++ - - - - - - - -

# ApiClient.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/client/ApiClient.hpp"

# ApiClient

ApiClient class provides convenient Retrofit-like interface over the oatpp::web::client::RequestExecutor.

namespace oatpp { namespace web { namespace client { 
-  class ApiClient : public oatpp::base::Countable {}
-}}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::Status Status Convenience typedef for oatpp::web::protocol::http::Status.
oatpp::web::protocol::http::Header Header Convenience typedef for oatpp::web::protocol::http::Header.
oatpp::String String Convenience typedef for oatpp::data::mapping::type::String.
oatpp::Int8 Int8 Convenience typedef for oatpp::data::mapping::type::Int8.
oatpp::UInt8 UInt8 Convenience typedef for oatpp::data::mapping::type::UInt8.
oatpp::Int16 Int16 Convenience typedef for oatpp::data::mapping::type::Int16.
oatpp::UInt16 UInt16 Convenience typedef for oatpp::data::mapping::type::UInt16.
oatpp::Int32 Int32 Convenience typedef for oatpp::data::mapping::type::Int32.
oatpp::UInt32 UInt32 Convenience typedef for oatpp::data::mapping::type::UInt32.
oatpp::Int64 Int64 Convenience typedef for oatpp::data::mapping::type::Int64.
oatpp::UInt64 UInt64 Convenience typedef for oatpp::data::mapping::type::UInt64.
oatpp::Float32 Float32 Convenience typedef for oatpp::data::mapping::type::Float32.
oatpp::Float64 Float64 Convenience typedef for atpp::data::mapping::type::Float64.
oatpp::Boolean Boolean Convenience typedef for oatpp::data::mapping::type::Boolean.
oatpp::web::protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.
oatpp::web::protocol::http::incoming::Response Response Convenience typedef for oatpp::web::protocol::http::incoming::Response.
RequestExecutor::AsyncCallback AsyncCallback Convenience typedef for oatpp::web::client::RequestExecutor::AsyncCallback.

# Methods

Return Type Name Summary
std::shared_ptr<RequestExecutor::ConnectionHandle> getConnection Call oatpp::web::client::RequestExecutor::getConnection().
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<RequestExecutor::ConnectionHandle>&> getConnectionAsync Call oatpp::web::client::RequestExecutor::getConnectionAsync().
void invalidateConnection Invalidate connection.

# ApiClient::Status

Convenience typedef for oatpp::web::protocol::http::Status.

typedef oatpp::web::protocol::http::Status Status
-

# ApiClient::Header

Convenience typedef for oatpp::web::protocol::http::Header.

typedef oatpp::web::protocol::http::Header Header
-

# ApiClient::String

Convenience typedef for oatpp::data::mapping::type::String.

typedef oatpp::String String
-

# ApiClient::Int8

Convenience typedef for oatpp::data::mapping::type::Int8.

typedef oatpp::Int8 Int8
-

# ApiClient::UInt8

Convenience typedef for oatpp::data::mapping::type::UInt8.

typedef oatpp::UInt8 UInt8
-

# ApiClient::Int16

Convenience typedef for oatpp::data::mapping::type::Int16.

typedef oatpp::Int16 Int16
-

# ApiClient::UInt16

Convenience typedef for oatpp::data::mapping::type::UInt16.

typedef oatpp::UInt16 UInt16
-

# ApiClient::Int32

Convenience typedef for oatpp::data::mapping::type::Int32.

typedef oatpp::Int32 Int32
-

# ApiClient::UInt32

Convenience typedef for oatpp::data::mapping::type::UInt32.

typedef oatpp::UInt32 UInt32
-

# ApiClient::Int64

Convenience typedef for oatpp::data::mapping::type::Int64.

typedef oatpp::Int64 Int64
-

# ApiClient::UInt64

Convenience typedef for oatpp::data::mapping::type::UInt64.

typedef oatpp::UInt64 UInt64
-

# ApiClient::Float32

Convenience typedef for oatpp::data::mapping::type::Float32.

typedef oatpp::Float32 Float32
-

# ApiClient::Float64

Convenience typedef for atpp::data::mapping::type::Float64.

typedef oatpp::Float64 Float64
-

# ApiClient::Boolean

Convenience typedef for oatpp::data::mapping::type::Boolean.

typedef oatpp::Boolean Boolean
-

# ApiClient::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef oatpp::web::protocol::http::Headers Headers
-

# ApiClient::Response

Convenience typedef for oatpp::web::protocol::http::incoming::Response.

typedef oatpp::web::protocol::http::incoming::Response Response
-

# ApiClient::AsyncCallback

Convenience typedef for oatpp::web::client::RequestExecutor::AsyncCallback.

typedef RequestExecutor::AsyncCallback AsyncCallback
-

# ApiClient::getConnection

Call oatpp::web::client::RequestExecutor::getConnection().

virtual std::shared_ptr<RequestExecutor::ConnectionHandle> getConnection()
-

# ApiClient::getConnectionAsync

Call oatpp::web::client::RequestExecutor::getConnectionAsync().

  • @return - oatpp::async::CoroutineStarterForResult.

virtual oatpp::async::CoroutineStarterForResult<const std::shared_ptr<RequestExecutor::ConnectionHandle>&> getConnectionAsync()
-

# ApiClient::invalidateConnection

Invalidate connection.

  • @param connectionHandle

void invalidateConnection(const std::shared_ptr<RequestExecutor::ConnectionHandle>& connectionHandle)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/client/HttpRequestExecutor/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/client/HttpRequestExecutor/index.html deleted file mode 100644 index 574469407..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/client/HttpRequestExecutor/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - HttpRequestExecutor.hpp | Oat++ - - - - - - - -

# HttpRequestExecutor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/client/HttpRequestExecutor.hpp"

# HttpRequestExecutor

Default implementation of oatpp::web::client::RequestExecutor for making http request.

namespace oatpp { namespace web { namespace client { 
-  class HttpRequestExecutor : public oatpp::base::Countable, public RequestExecutor {}
-}}}
-

# Methods

Return Type Name Summary
[none] HttpRequestExecutor Constructor.
std::shared_ptr<HttpRequestExecutor> createShared Create shared HttpRequestExecutor.
std::shared_ptr<ConnectionHandle> getConnection Get oatpp::web::client::RequestExecutor::ConnectionHandle
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<HttpRequestExecutor::ConnectionHandle>&> getConnectionAsync Same as HttpRequestExecutor::getConnection() but async.
void invalidateConnection Invalidate connection.
std::shared_ptr<Response> executeOnce Execute http request.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&> executeOnceAsync Same as HttpRequestExecutor::execute() but Async.

# HttpRequestExecutor::HttpRequestExecutor

Constructor.

HttpRequestExecutor(const std::shared_ptr<ClientConnectionProvider>& connectionProvider,
-                    const std::shared_ptr<RetryPolicy>& retryPolicy = nullptr,
-                    const std::shared_ptr<const BodyDecoder>& bodyDecoder =
-                    std::make_shared<oatpp::web::protocol::http::incoming::SimpleBodyDecoder>())
-

# HttpRequestExecutor::createShared

Create shared HttpRequestExecutor.

static std::shared_ptr<HttpRequestExecutor>
-createShared(const std::shared_ptr<ClientConnectionProvider>& connectionProvider,
-             const std::shared_ptr<RetryPolicy>& retryPolicy = nullptr,
-             const std::shared_ptr<const BodyDecoder>& bodyDecoder =
-             std::make_shared<oatpp::web::protocol::http::incoming::SimpleBodyDecoder>())
-

# HttpRequestExecutor::getConnection

Get oatpp::web::client::RequestExecutor::ConnectionHandle

std::shared_ptr<ConnectionHandle> getConnection() override
-

# HttpRequestExecutor::getConnectionAsync

Same as HttpRequestExecutor::getConnection() but async.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const std::shared_ptr<HttpRequestExecutor::ConnectionHandle>&> getConnectionAsync() override
-

# HttpRequestExecutor::invalidateConnection

Invalidate connection.

  • @param connectionHandle

void invalidateConnection(const std::shared_ptr<ConnectionHandle>& connectionHandle) override
-

# HttpRequestExecutor::executeOnce

Execute http request.

std::shared_ptr<Response> executeOnce(const String& method,
-                                      const String& path,
-                                      const Headers& headers,
-                                      const std::shared_ptr<Body>& body,
-                                      const std::shared_ptr<ConnectionHandle>& connectionHandle = nullptr) override
-

# HttpRequestExecutor::executeOnceAsync

Same as HttpRequestExecutor::execute() but Async.

oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&>
-executeOnceAsync(const String& method,
-                 const String& path,
-                 const Headers& headers,
-                 const std::shared_ptr<Body>& body,
-                 const std::shared_ptr<ConnectionHandle>& connectionHandle = nullptr) override
-

# HttpRequestExecutor::HttpConnectionHandle

Connection handle for HttpRequestExecutor
For more details see oatpp::web::client::RequestExecutor::ConnectionHandle.

namespace oatpp { namespace web { namespace client { 
-  class HttpRequestExecutor : public oatpp::base::Countable, public RequestExecutor {
-    class HttpConnectionHandle : public ConnectionHandle {}
-  };
-}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/client/RequestExecutor/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/client/RequestExecutor/index.html deleted file mode 100644 index a9ce8857b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/client/RequestExecutor/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - RequestExecutor.hpp | Oat++ - - - - - - - -

# RequestExecutor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/client/RequestExecutor.hpp"

# RequestExecutor

Abstract RequestExecutor. RequestExecutor is class responsible for making remote requests.

namespace oatpp { namespace web { namespace client { 
-  class RequestExecutor {}
-}}}
-

# Typedefs

Type Name Summary
oatpp::String String Convenience typedef for oatpp::String.
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.
oatpp::web::protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.
oatpp::web::protocol::http::incoming::Response Response Convenience typedef for oatpp::web::protocol::http::incoming::Response.
oatpp::web::protocol::http::outgoing::Body Body Convenience typedef for oatpp::web::protocol::http::outgoing::Body.

# Methods

Return Type Name Summary
[none] RequestExecutor Constructor.
[none] ~RequestExecutor Virtual destructor.
std::shared_ptr<ConnectionHandle> getConnection Obtain RequestExecutor::ConnectionHandle which then can be passed to RequestExecutor::execute().
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<ConnectionHandle>&> getConnectionAsync Same as RequestExecutor::getConnection() but Async.
void invalidateConnection Invalidate connection.
std::shared_ptr<Response> executeOnce Execute request once without any retries.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&> executeOnceAsync Same as RequestExecutor::executeOnce() but Async.
std::shared_ptr<Response> execute Execute request taking into account retry policy.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&> executeAsync Same as RequestExecutor::execute() but Async.

# RequestExecutor::String

Convenience typedef for oatpp::String.

typedef oatpp::String String
-

# RequestExecutor::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# RequestExecutor::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef oatpp::web::protocol::http::Headers Headers
-

# RequestExecutor::Response

Convenience typedef for oatpp::web::protocol::http::incoming::Response.

typedef oatpp::web::protocol::http::incoming::Response Response
-

# RequestExecutor::Body

Convenience typedef for oatpp::web::protocol::http::outgoing::Body.

typedef oatpp::web::protocol::http::outgoing::Body Body
-

# RequestExecutor::RequestExecutor

Constructor.

RequestExecutor(const std::shared_ptr<RetryPolicy>& retryPolicy)
-

# RequestExecutor::~RequestExecutor

Virtual destructor.

virtual ~RequestExecutor() = default
-

# RequestExecutor::getConnection

Obtain RequestExecutor::ConnectionHandle which then can be passed to RequestExecutor::execute().

virtual std::shared_ptr<ConnectionHandle> getConnection() = 0
-

# RequestExecutor::getConnectionAsync

Same as RequestExecutor::getConnection() but Async.

  • @return - oatpp::async::CoroutineStarterForResult.

virtual oatpp::async::CoroutineStarterForResult<const std::shared_ptr<ConnectionHandle>&> getConnectionAsync() = 0
-

# RequestExecutor::invalidateConnection

Invalidate connection.

  • @param connectionHandle

virtual void invalidateConnection(const std::shared_ptr<ConnectionHandle>& connectionHandle) = 0
-

# RequestExecutor::executeOnce

Execute request once without any retries.

virtual std::shared_ptr<Response> executeOnce(const String& method,
-                                              const String& path,
-                                              const Headers& headers,
-                                              const std::shared_ptr<Body>& body,
-                                              const std::shared_ptr<ConnectionHandle>& connectionHandle) = 0
-

# RequestExecutor::executeOnceAsync

Same as RequestExecutor::executeOnce() but Async.

virtual oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&>
-executeOnceAsync(const String& method,
-                 const String& path,
-                 const Headers& headers,
-                 const std::shared_ptr<Body>& body,
-                 const std::shared_ptr<ConnectionHandle>& connectionHandle) = 0
-

# RequestExecutor::execute

Execute request taking into account retry policy.

virtual std::shared_ptr<Response> execute(const String& method,
-                                          const String& path,
-                                          const Headers& headers,
-                                          const std::shared_ptr<Body>& body,
-                                          const std::shared_ptr<ConnectionHandle>& connectionHandle)
-

# RequestExecutor::executeAsync

Same as RequestExecutor::execute() but Async.

oatpp::async::CoroutineStarterForResult<const std::shared_ptr<Response>&>
-virtual executeAsync(const String& method,
-                     const String& path,
-                     const Headers& headers,
-                     const std::shared_ptr<Body>& body,
-                     const std::shared_ptr<ConnectionHandle>& connectionHandle)
-

# RequestExecutor::ConnectionHandle

ConnectionHandle is always specific to a RequestExecutor. You can't pass ConnectionHandle retrieved by one RequestExecutor implementation to another

namespace oatpp { namespace web { namespace client { 
-  class RequestExecutor {
-    class ConnectionHandle {}
-  };
-}}}
-

# RequestExecutor::RequestExecutionError

Class representing Request Execution Error.

namespace oatpp { namespace web { namespace client { 
-  class RequestExecutor {
-    class RequestExecutionError : public std::runtime_error {}
-  };
-}}}
-

# Fields

Type Name Summary
const v_int32 ERROR_CODE_CANT_CONNECT Error code for "can't connect" error.
const v_int32 ERROR_CODE_CANT_PARSE_STARTING_LINE Error code for "can't parse starting line" error.
const v_int32 ERROR_CODE_CANT_PARSE_HEADERS Error code for "can't parse headers" error.
const v_int32 ERROR_CODE_CANT_READ_RESPONSE Error code for "can't read response" error.
const v_int32 ERROR_CODE_NO_RESPONSE Error code for "no response" error.

# Methods

Return Type Name Summary
[none] RequestExecutionError Constructor.
v_int32 getErrorCode Get error code.
const char* getMessage Get error message.
v_int32 getReadErrorCode This value is valid if errorCode == RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE

# RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_CONNECT

Error code for "can't connect" error.

constexpr static const v_int32 ERROR_CODE_CANT_CONNECT = 1
-

# RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_PARSE_STARTING_LINE

Error code for "can't parse starting line" error.

constexpr static const v_int32 ERROR_CODE_CANT_PARSE_STARTING_LINE = 2
-

# RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_PARSE_HEADERS

Error code for "can't parse headers" error.

constexpr static const v_int32 ERROR_CODE_CANT_PARSE_HEADERS = 3
-

# RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE

Error code for "can't read response" error.

constexpr static const v_int32 ERROR_CODE_CANT_READ_RESPONSE = 4
-

# RequestExecutor::RequestExecutionError::ERROR_CODE_NO_RESPONSE

Error code for "no response" error.

constexpr static const v_int32 ERROR_CODE_NO_RESPONSE = 5
-

# RequestExecutor::RequestExecutionError::RequestExecutionError

Constructor.

  • @param errorCode - error code.
  • @param message - error message.
  • @param readErrorCode - io error code.

RequestExecutionError(v_int32 errorCode, const char* message, v_int32 readErrorCode = 0)
-

# RequestExecutor::RequestExecutionError::getErrorCode

Get error code.

  • @return - error code.

v_int32 getErrorCode() const
-

# RequestExecutor::RequestExecutionError::getMessage

Get error message.

  • @return - error message.

const char* getMessage() const
-

# RequestExecutor::RequestExecutionError::getReadErrorCode

This value is valid if errorCode == RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE
For more information about the read error you get check out:

v_int32 getReadErrorCode() const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/client/RetryPolicy/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/client/RetryPolicy/index.html deleted file mode 100644 index 155b666ae..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/client/RetryPolicy/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - RetryPolicy.hpp | Oat++ - - - - - - - -

# RetryPolicy.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/client/RetryPolicy.hpp"

# RetryPolicy

Class to control retries in RequestExecutor.

namespace oatpp { namespace web { namespace client { 
-  class RetryPolicy {}
-}}}
-

# Methods

Return Type Name Summary
[none] ~RetryPolicy Virtual destructor.
bool canRetry Check if the context is eligible to retry.
bool retryOnResponse Check whether the client should retry for a given response from the server.
v_int64 waitForMicroseconds How much client should wait before the next attempt?

# RetryPolicy::~RetryPolicy

Virtual destructor.

virtual ~RetryPolicy() = default
-

# RetryPolicy::canRetry

Check if the context is eligible to retry.

virtual bool canRetry(const Context& context) = 0
-

# RetryPolicy::retryOnResponse

Check whether the client should retry for a given response from the server.

  • @param responseStatusCode - HTTP status code of the response.
  • @param context - RetryPolicy::Context.
  • @return - true - to retry. false - do NOT retry.

virtual bool retryOnResponse(v_int32 responseStatusCode, const Context& context) = 0
-

# RetryPolicy::waitForMicroseconds

How much client should wait before the next attempt?

virtual v_int64 waitForMicroseconds(const Context& context) = 0
-

# RetryPolicy::Context

This structure holds information about request attempts.

namespace oatpp { namespace web { namespace client { 
-  class RetryPolicy {
-    struct Context {}
-  };
-}}}
-

# Fields

Type Name Summary
v_int64 attempt Attempt number.

# RetryPolicy::Context::attempt

Attempt number.

v_int64 attempt = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/FileProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/FileProvider/index.html deleted file mode 100644 index f67427021..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/FileProvider/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - FileProvider.hpp | Oat++ - - - - - - - -

# FileProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/FileProvider.hpp"

# createFilePartReader

Namespace: oatpp::web::mime::multipart

Create file part reader.
Reader will save part to a specified file.

std::shared_ptr<PartReader> createFilePartReader(const oatpp::String& filename, v_io_size maxDataSize = -1)
-

# createAsyncFilePartReader

Namespace: oatpp::web::mime::multipart

Create async file part reader.
Reader will save part to a specified file.

std::shared_ptr<AsyncPartReader> createAsyncFilePartReader(const oatpp::String& filename, v_io_size maxDataSize = -1)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/InMemoryDataProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/InMemoryDataProvider/index.html deleted file mode 100644 index c7e3fdccd..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/InMemoryDataProvider/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - InMemoryDataProvider.hpp | Oat++ - - - - - - - -

# InMemoryDataProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/InMemoryDataProvider.hpp"

# createInMemoryPartReader

Namespace: oatpp::web::mime::multipart

Create in-memory part reader.

  • @param maxDataSize - max-allowed size of the data. Use -1 for infinity.
  • @return

std::shared_ptr<PartReader> createInMemoryPartReader(v_io_size maxDataSize)
-

# createAsyncInMemoryPartReader

Namespace: oatpp::web::mime::multipart

Create Async in-memory part reader.

  • @param maxDataSize - max-allowed size of the data. Use -1 for infinity.
  • @return

std::shared_ptr<AsyncPartReader> createAsyncInMemoryPartReader(v_io_size maxDataSize)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Multipart/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Multipart/index.html deleted file mode 100644 index a35f7fccf..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Multipart/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Multipart.hpp | Oat++ - - - - - - - -

# Multipart.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/Multipart.hpp"

# Headers

Namespace: oatpp::web::mime::multipart

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# Multipart

Abstract Multipart.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class Multipart {}
-}}}}
-

# Methods

Return Type Name Summary
[none] Multipart Constructor.
[none] ~Multipart Default virtual Destructor.
oatpp::String getBoundary Get multipart boundary value.
std::shared_ptr<Part> readNextPart Read part-by-part from Multipart.
void writeNextPart Write part-by-part to Multipart.
std::shared_ptr<Part> readNextPartSimple Read part-by-part from Multipart.
void writeNextPartSimple Write part-by-part to Multipart.
oatpp::String generateRandomBoundary Generate random boundary for Multipart object. Base64 encoded.
oatpp::String parseBoundaryFromHeaders Parse boundary value from headers

# Multipart::Multipart

Constructor.

  • @param boundary - multipart boundary value.

Multipart(const oatpp::String& boundary)
-

# Multipart::~Multipart

Default virtual Destructor.

virtual ~Multipart() = default
-

# Multipart::getBoundary

Get multipart boundary value.

  • @return - multipart boundary value.

oatpp::String getBoundary()
-

# Multipart::readNextPart

Read part-by-part from Multipart.

  • @return

virtual std::shared_ptr<Part> readNextPart(async::Action& action) = 0
-

# Multipart::writeNextPart

Write part-by-part to Multipart.

  • @param part

virtual void writeNextPart(const std::shared_ptr<Part>& part, async::Action& action) = 0
-

# Multipart::readNextPartSimple

Read part-by-part from Multipart.
Call writeNextPart(...) and throw if action.isNone() == false.

  • @return

std::shared_ptr<Part> readNextPartSimple()
-

# Multipart::writeNextPartSimple

Write part-by-part to Multipart. Call writeNextPartSimple(...) and throw if action.isNone() == false.

  • @param part

void writeNextPartSimple(const std::shared_ptr<Part>& part)
-

# Multipart::generateRandomBoundary

Generate random boundary for Multipart object. Base64 encoded.

  • @param boundarySize - size in bytes of random vector.
  • @return - oatpp::String.

static oatpp::String generateRandomBoundary(v_int32 boundarySize = 15)
-

# Multipart::parseBoundaryFromHeaders

Parse boundary value from headers

  • @param headers
  • @return

static oatpp::String parseBoundaryFromHeaders(const Headers& requestHeaders)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Part/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Part/index.html deleted file mode 100644 index f0bdfc1fc..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Part/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Part.hpp | Oat++ - - - - - - - -

# Part.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/Part.hpp"

# Part

One part of the multipart.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class Part {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

# Methods

Return Type Name Summary
[none] Part Multiple implementations:
  1. Default constructor.
  2. Constructor.
void setPayload Set payload.
std::shared_ptr<data::resource::Resource> getPayload Get payload.
oatpp::String getName Get name of the part.
oatpp::String getFilename Get filename of the part (if applicable).
const Headers& getHeaders Get request's headers map.
oatpp::String getHeader Get header value
void putHeader Add http header.
bool putHeaderIfNotExists Add http header if not already exists.
void setTag Tag-object - object used to associate some data with the Part.
const char* getTagName Get tag name.
std::shared_ptr<oatpp::base::Countable> getTagObject Get tag object.
void clearTag Clear the tag.

# Part::Headers

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# Part::Part

  1. Default constructor.
    Part() = default
    -
  2. Constructor.
    • @param headers - headers of the part.
    • @param payload - part payload.
    Part(const Headers& headers, const std::shared_ptr<data::resource::Resource>& payload = nullptr)
    -

# Part::setPayload

Set payload.

  • @param payload

void setPayload(const std::shared_ptr<data::resource::Resource>& payload)
-

# Part::getPayload

Get payload.

  • @return

std::shared_ptr<data::resource::Resource> getPayload()
-

# Part::getName

Get name of the part.

  • @return - name of the part.

oatpp::String getName() const
-

# Part::getFilename

Get filename of the part (if applicable).

  • @return - filename.

oatpp::String getFilename() const
-

# Part::getHeaders

Get request's headers map.

  • @return Headers map

const Headers& getHeaders() const
-

# Part::getHeader

Get header value

  • @param headerName
  • @return header value

oatpp::String getHeader(const oatpp::data::share::StringKeyLabelCI& headerName) const
-

# Part::putHeader

Add http header.

void putHeader(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Part::putHeaderIfNotExists

Add http header if not already exists.

bool putHeaderIfNotExists(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Part::setTag

Tag-object - object used to associate some data with the Part.
Ex.: used by oatpp::web::mime::multipart::InMemoryPartReader. to associate intermediate buffer with the part.

  • @param tagName
  • @param tagObject

void setTag(const char* tagName, const std::shared_ptr<oatpp::base::Countable>& tagObject)
-

# Part::getTagName

Get tag name.

  • @return

const char* getTagName()
-

# Part::getTagObject

Get tag object.

  • @return

std::shared_ptr<oatpp::base::Countable> getTagObject()
-

# Part::clearTag

Clear the tag.

void clearTag()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartList/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartList/index.html deleted file mode 100644 index 4d173df39..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartList/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - PartList.hpp | Oat++ - - - - - - - -

# PartList.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/PartList.hpp"

# PartList

Structure that holds Multipart parts in the std::list.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class PartList : public Multipart {}
-}}}}
-

# Methods

Return Type Name Summary
[none] PartList Multiple implementations:
  1. Constructor.
  2. Constructor.
std::shared_ptr<PartList> createSharedWithRandomBoundary Create Multipart object with random boundary.
std::shared_ptr<Part> readNextPart Read part-by-part from Multipart.
void writeNextPart Write part-by-part to Multipart.
std::shared_ptr<Part> getNamedPart Get part by name
const std::list<std::shared_ptr<Part>>& getAllParts Get list of all parts.
v_int64 count Get parts count.

# PartList::PartList

  1. Constructor.
    • @param boundary - multipart boundary value.
    PartList(const oatpp::String& boundary)
    -
  2. Constructor.
    • @param requestHeaders - request headers. Headers must contain "Content-Type" header.
    PartList(const Headers& requestHeaders)
    -

# PartList::createSharedWithRandomBoundary

Create Multipart object with random boundary.
It will generate random vector of size boundarySize in bytes encoded in base64.

  • @param boundarySize - size of the random vecrot in bytes.
  • @return - std::shared_ptr to Multipart.

static std::shared_ptr<PartList> createSharedWithRandomBoundary(v_int32 boundarySize = 15)
-

# PartList::readNextPart

Read part-by-part from Multipart.

  • @return

std::shared_ptr<Part> readNextPart(async::Action& action) override
-

# PartList::writeNextPart

Write part-by-part to Multipart.

  • @param part

void writeNextPart(const std::shared_ptr<Part>& part, async::Action& action) override
-

# PartList::getNamedPart

Get part by name
Applicable to named parts only.

std::shared_ptr<Part> getNamedPart(const oatpp::String& name)
-

# PartList::getAllParts

Get list of all parts.

const std::list<std::shared_ptr<Part>>& getAllParts()
-

# PartList::count

Get parts count.

  • @return - parts count.

v_int64 count()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartReader/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartReader/index.html deleted file mode 100644 index 45f85f3c6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/PartReader/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - PartReader.hpp | Oat++ - - - - - - - -

# PartReader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/PartReader.hpp"

# PartReader

Abstract read handler of multipart parts.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class PartReader {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ~PartReader Default virtual destructor.
void onNewPart Called when new part headers are parsed and part object is created.
void onPartData Called on each new chunk of data is parsed for the multipart-part.

# PartReader::~PartReader

Default virtual destructor.

virtual ~PartReader() = default
-

# PartReader::onNewPart

Called when new part headers are parsed and part object is created.

  • @param part

virtual void onNewPart(const std::shared_ptr<Part>& part) = 0
-

# PartReader::onPartData

Called on each new chunk of data is parsed for the multipart-part.
When all data is read, called again with data == nullptr size == 0 to indicate end of the part.

  • @param part
  • @param data - pointer to buffer containing chunk data.
  • @param size - size of the buffer.

virtual void onPartData(const std::shared_ptr<Part>& part, const char* data, oatpp::v_io_size size) = 0
-

# AsyncPartReader

Abstract Async read handler of multipart parts.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class AsyncPartReader {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ~AsyncPartReader Default virtual destructor.
async::CoroutineStarter onNewPartAsync Called when new part headers are parsed and part object is created.
async::CoroutineStarter onPartDataAsync Called on each new chunk of data is parsed for the multipart-part.

# AsyncPartReader::~AsyncPartReader

Default virtual destructor.

virtual ~AsyncPartReader() = default
-

# AsyncPartReader::onNewPartAsync

Called when new part headers are parsed and part object is created.

virtual async::CoroutineStarter onNewPartAsync(const std::shared_ptr<Part>& part) = 0
-

# AsyncPartReader::onPartDataAsync

Called on each new chunk of data is parsed for the multipart-part.
When all data is read, called again with data == nullptr size == 0 to indicate end of the part.

virtual async::CoroutineStarter onPartDataAsync(const std::shared_ptr<Part>& part, const char* data, oatpp::v_io_size size) = 0
-

# PartReaderResourceProvider

Resource provider for StreamPartReader.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class PartReaderResourceProvider {}
-}}}}
-

# Methods

Return Type Name Summary
[none] ~PartReaderResourceProvider Default virtual destructor.
std::shared_ptr<data::resource::Resource> getResource Get data resource to write (save) part data in.
async::CoroutineStarter getResourceAsync Get data resource to write (save) part data in.

# PartReaderResourceProvider::~PartReaderResourceProvider

Default virtual destructor.

virtual ~PartReaderResourceProvider() = default
-

# PartReaderResourceProvider::getResource

Get data resource to write (save) part data in.

  • @param part
  • @return

virtual std::shared_ptr<data::resource::Resource> getResource(const std::shared_ptr<Part>& part) = 0
-

# PartReaderResourceProvider::getResourceAsync

Get data resource to write (save) part data in.

  • @param part
  • @param resource - put here pointer to obtained resource.
  • @return

virtual async::CoroutineStarter getResourceAsync(const std::shared_ptr<Part>& part,
-                                                 std::shared_ptr<data::resource::Resource>& resource) = 0
-

# StreamPartReader

Part reader used in order to stream part data.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class StreamPartReader : public PartReader {}
-}}}}
-

# Methods

Return Type Name Summary
[none] StreamPartReader Constructor.
void onNewPart Called when new part headers are parsed and part object is created.
void onPartData Called on each new chunk of data is parsed for the multipart-part.

# StreamPartReader::StreamPartReader

Constructor.

  • @param resourceProvider
  • @param maxDataSize - use -1 for no limit.

StreamPartReader(const std::shared_ptr<PartReaderResourceProvider>& resourceProvider, v_io_size maxDataSize = -1)
-

# StreamPartReader::onNewPart

Called when new part headers are parsed and part object is created.

  • @param part

void onNewPart(const std::shared_ptr<Part>& part) override
-

# StreamPartReader::onPartData

Called on each new chunk of data is parsed for the multipart-part.
When all data is read, called again with data == nullptr size == 0 to indicate end of the part.

  • @param part
  • @param data - pointer to buffer containing chunk data.
  • @param size - size of the buffer.

void onPartData(const std::shared_ptr<Part>& part, const char* data, oatpp::v_io_size size) override
-

# AsyncStreamPartReader

Async part reader used in order to stream part data in Asynchronous manner.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class AsyncStreamPartReader : public AsyncPartReader {}
-}}}}
-

# Methods

Return Type Name Summary
[none] AsyncStreamPartReader Constructor.
async::CoroutineStarter onNewPartAsync Called when new part headers are parsed and part object is created.
async::CoroutineStarter onPartDataAsync Called on each new chunk of data is parsed for the multipart-part.

# AsyncStreamPartReader::AsyncStreamPartReader

Constructor.

  • @param resourceProvider
  • @param maxDataSize - use -1 for no limit.

AsyncStreamPartReader(const std::shared_ptr<PartReaderResourceProvider>& resourceProvider, v_io_size maxDataSize = -1)
-

# AsyncStreamPartReader::onNewPartAsync

Called when new part headers are parsed and part object is created.

async::CoroutineStarter onNewPartAsync(const std::shared_ptr<Part>& part) override
-

# AsyncStreamPartReader::onPartDataAsync

Called on each new chunk of data is parsed for the multipart-part.
When all data is read, called again with data == nullptr size == 0 to indicate end of the part.

async::CoroutineStarter onPartDataAsync(const std::shared_ptr<Part>& part, const char* data, oatpp::v_io_size size) override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Reader/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Reader/index.html deleted file mode 100644 index 6ee627c61..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/Reader/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - Reader.hpp | Oat++ - - - - - - - -

# Reader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/Reader.hpp"

# PartReadersMap

Namespace: oatpp::web::mime::multipart

Map of part readers. <part-name> --> <part-reader>.

typedef std::unordered_map<oatpp::String, std::shared_ptr<PartReader>> PartReadersMap
-

# PartsParser

In memory multipart parser.
Extends - oatpp::web::mime::multipart::StatefulParser::Listener.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class PartsParser : public StatefulParser::Listener {}
-}}}}
-

# Methods

Return Type Name Summary
[none] PartsParser Constructor.

# PartsParser::PartsParser

Constructor.

PartsParser(Multipart* multipart)
-

# AsyncPartReadersMap

Namespace: oatpp::web::mime::multipart

Map of async part readers. <part-name> --> <part-reader>.

typedef std::unordered_map<oatpp::String, std::shared_ptr<AsyncPartReader>> AsyncPartReadersMap
-

# AsyncPartsParser

Async In memory multipart parser.
Extends - oatpp::web::mime::multipart::StatefulParser::AsyncListener.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class AsyncPartsParser : public StatefulParser::AsyncListener {}
-}}}}
-

# Methods

Return Type Name Summary
[none] AsyncPartsParser Constructor.

# AsyncPartsParser::AsyncPartsParser

Constructor.

AsyncPartsParser(Multipart* multipart)
-

# Reader

In memory Multipart reader. Extends - oatpp::data::stream::WriteCallback.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class Reader : public oatpp::data::stream::WriteCallback {}
-}}}}
-

# Methods

Return Type Name Summary
[none] Reader Constructor.
void setPartReader Set named part reader.
void setDefaultPartReader Set default reader for parts.

# Reader::Reader

Constructor.

  • @param multipart - Multipart object to save read data to.

Reader(Multipart* multipart)
-

# Reader::setPartReader

Set named part reader.
Part with the name == partName will be read using the specified reader.

  • @param partName - name of the part to read.
  • @param reader - reader to read part with.

void setPartReader(const oatpp::String& partName, const std::shared_ptr<PartReader>& reader)
-

# Reader::setDefaultPartReader

Set default reader for parts.
setPartReader has precedence.

  • @param reader

void setDefaultPartReader(const std::shared_ptr<PartReader>& reader)
-

# AsyncReader

In memory Multipart reader. Extends - oatpp::data::stream::WriteCallback.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class AsyncReader : public oatpp::data::stream::WriteCallback {}
-}}}}
-

# Methods

Return Type Name Summary
[none] AsyncReader Constructor.
void setPartReader Set named part reader.
void setDefaultPartReader Set default reader for parts.

# AsyncReader::AsyncReader

Constructor.

  • @param multipart - Multipart object to save read data to.

AsyncReader(const std::shared_ptr<Multipart>& multipart)
-

# AsyncReader::setPartReader

Set named part reader.
Part with the name == partName will be read using the specified reader.

  • @param partName - name of the part to read.
  • @param reader - reader to read part with.

void setPartReader(const oatpp::String& partName, const std::shared_ptr<AsyncPartReader>& reader)
-

# AsyncReader::setDefaultPartReader

Set default reader for parts.
setPartReader has precedence.

  • @param reader

void setDefaultPartReader(const std::shared_ptr<AsyncPartReader>& reader)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/StatefulParser/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/StatefulParser/index.html deleted file mode 100644 index 410e262e0..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/StatefulParser/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - StatefulParser.hpp | Oat++ - - - - - - - -

# StatefulParser.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/StatefulParser.hpp"

# StatefulParser

Stateful parser of multipart-data stream. Parser designed to work with stream-like data in order to store minimum data in the memory.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class StatefulParser {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

# Methods

Return Type Name Summary
[none] StatefulParser Constructor.
void parseNext Parse next chunk of bytes.
bool finished Check if parser done parsing data.

# StatefulParser::Headers

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# StatefulParser::StatefulParser

Constructor.

StatefulParser(const oatpp::String& boundary,
-               const std::shared_ptr<Listener>& listener,
-               const std::shared_ptr<AsyncListener>& asyncListener)
-

# StatefulParser::parseNext

Parse next chunk of bytes.

  • @param inlineData - inline data.
  • @param action - Async Action in case Async Listener was provided in constructor.

void parseNext(data::buffer::InlineWriteData& inlineData, async::Action& action)
-

# StatefulParser::finished

Check if parser done parsing data.

  • @return - true or false.

bool finished()
-

# StatefulParser::Listener

Listener for parsed items.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class StatefulParser {
-    class Listener {}
-  };
-}}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

# Methods

Return Type Name Summary
[none] ~Listener Default virtual Destructor.
void onPartHeaders Called on new part found in the stream.
void onPartData Called on each new chunk of bytes parsed from the part body.

# StatefulParser::Listener::Headers

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# StatefulParser::Listener::~Listener

Default virtual Destructor.

virtual ~Listener() = default
-

# StatefulParser::Listener::onPartHeaders

Called on new part found in the stream. Always called before onPartData events.

  • @param partHeaders - complete set of part headers.

virtual void onPartHeaders(const Headers& partHeaders) = 0
-

# StatefulParser::Listener::onPartData

Called on each new chunk of bytes parsed from the part body. When all data of message is read, readMessage is called again with size == 0 to indicate end of the part.

  • @param data - pointer to data.
  • @param size - size of the data in bytes.

virtual void onPartData(const char* data, v_buff_size size) = 0
-

# StatefulParser::AsyncListener

Async Listener for parsed items.

namespace oatpp { namespace web { namespace mime { namespace multipart { 
-  class StatefulParser {
-    class AsyncListener {}
-  };
-}}}}
-

# Typedefs

Type Name Summary
oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

# Methods

Return Type Name Summary
[none] ~AsyncListener Default virtual Destructor.
async::CoroutineStarter onPartHeadersAsync Called on new part found in the stream.
async::CoroutineStarter onPartDataAsync Called on each new chunk of bytes parsed from the part body.

# StatefulParser::AsyncListener::Headers

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# StatefulParser::AsyncListener::~AsyncListener

Default virtual Destructor.

virtual ~AsyncListener() = default
-

# StatefulParser::AsyncListener::onPartHeadersAsync

Called on new part found in the stream. Always called before onPartData events.

  • @param partHeaders - complete set of part headers.

virtual async::CoroutineStarter onPartHeadersAsync(const Headers& partHeaders) = 0
-

# StatefulParser::AsyncListener::onPartDataAsync

Called on each new chunk of bytes parsed from the part body. When all data of message is read, readMessage is called again with size == 0 to indicate end of the part.

  • @param data - pointer to data.
  • @param size - size of the data in bytes.

virtual async::CoroutineStarter onPartDataAsync(const char* data, v_buff_size size) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/TemporaryFileProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/TemporaryFileProvider/index.html deleted file mode 100644 index ae35d7b7e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/mime/multipart/TemporaryFileProvider/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - TemporaryFileProvider.hpp | Oat++ - - - - - - - -

# TemporaryFileProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/mime/multipart/TemporaryFileProvider.hpp"

# createTemporaryFilePartReader

Namespace: oatpp::web::mime::multipart

Create part reader to a temporary file.

  • @param tmpDirectory - directory for temporary files.
  • @param randomWordSizeBytes - number of random bytes to generate file name.
  • @param maxDataSize - max size of the received data. put -1 for no-limit.
  • @return - std::shared_ptr to oatpp::web::mime::multipart::PartReader.

std::shared_ptr<PartReader> createTemporaryFilePartReader(const oatpp::String& tmpDirectory,
-                                                          v_int32 randomWordSizeBytes = 8,
-                                                          v_io_size maxDataSize = -1)
-

# createAsyncTemporaryFilePartReader

Namespace: oatpp::web::mime::multipart

Create async part reader to a temporary file.

  • @param tmpDirectory - directory for temporary files.
  • @param randomWordSizeBytes - number of random bytes to generate file name.
  • @param maxDataSize - max size of the received data. put -1 for no-limit.
  • @return - std::shared_ptr to oatpp::web::mime::multipart::AsyncPartReader.

std::shared_ptr<AsyncPartReader> createAsyncTemporaryFilePartReader(const oatpp::String& tmpDirectory,
-                                                                    v_int32 randomWordSizeBytes = 8,
-                                                                    v_io_size maxDataSize = -1)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/CommunicationError/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/CommunicationError/index.html deleted file mode 100644 index 69ec3c9c3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/CommunicationError/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - CommunicationError.hpp | Oat++ - - - - - - - -

# CommunicationError.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/CommunicationError.hpp"

# CommunicationError

Communication Error

namespace oatpp { namespace web { namespace protocol { 
-  class CommunicationError : public std::runtime_error {}
-}}}
-

# Methods

Return Type Name Summary
[none] CommunicationError Constructor.
oatpp::v_io_size getIOStatus Get I/O error. See oatpp::v_io_size.
oatpp::String& getMessage Get error message.

# CommunicationError::CommunicationError

Constructor.

  • @param ioStatus - I/O error. See oatpp::v_io_size.
  • @param message - error message.

CommunicationError(oatpp::v_io_size ioStatus, const oatpp::String& message)
-

# CommunicationError::getIOStatus

Get I/O error. See oatpp::v_io_size.

oatpp::v_io_size getIOStatus()
-

# CommunicationError::getMessage

Get error message.

  • @return - error message.

oatpp::String& getMessage()
-

# ProtocolErrorInfo

Protocol Error Info.

namespace oatpp { namespace web { namespace protocol { 
-  template<class Status>
-  struct ProtocolErrorInfo {}
-}}}
-

# Fields

Type Name Summary
oatpp::v_io_size ioStatus Get I/O level error.
Status status Configurable arbitrary data type.

# Methods

Return Type Name Summary
[none] ProtocolErrorInfo Multiple implementations:
  1. Default Constructor.
  2. Constructor.

# ProtocolErrorInfo::ioStatus

Get I/O level error.

oatpp::v_io_size ioStatus
-

# ProtocolErrorInfo::status

Configurable arbitrary data type.

Status status
-

# ProtocolErrorInfo::ProtocolErrorInfo

  1. Default Constructor.
    ProtocolErrorInfo()
    -  : ioStatus(0)
    -
  2. Constructor.
    • @param pIOStatus - I/O level error. See oatpp::v_io_size.
    • @param pStatus - configurable arbitrary data type.
    ProtocolErrorInfo(oatpp::v_io_size pIOStatus, const Status& pStatus)
    -  : ioStatus(pIOStatus)
    -  , status(pStatus)
    -

# ProtocolError

Protocol Error template.

  • @tparam Status - arbitrary data type.

namespace oatpp { namespace web { namespace protocol { 
-  template<class Status>
-  class ProtocolError : public CommunicationError {}
-}}}
-

# Typedefs

Type Name Summary
ProtocolErrorInfo<Status> Info Cenvenience typedef for ProtocolErrorInfo

# Methods

Return Type Name Summary
[none] ProtocolError Constructor.
Info getInfo Get error info.

# ProtocolError::Info

Cenvenience typedef for ProtocolErrorInfo

typedef ProtocolErrorInfo<Status> Info
-

# ProtocolError::ProtocolError

Constructor.

ProtocolError(const Info& info, const oatpp::String& message)
-  : CommunicationError(info.ioStatus, message)
-  , m_info(info)
-

# ProtocolError::getInfo

Get error info.

  • @return - error info.

Info getInfo()
-

# AsyncProtocolError

Protocol Error template.

  • @tparam Status - arbitrary data type.

namespace oatpp { namespace web { namespace protocol { 
-  template<class Status>
-  class AsyncProtocolError : public oatpp::AsyncIOError {}
-}}}
-

# Typedefs

Type Name Summary
ProtocolErrorInfo<Status> Info Cenvenience typedef for ProtocolErrorInfo

# Methods

Return Type Name Summary
[none] AsyncProtocolError Constructor.
oatpp::String getMessage Error message.
Info getInfo Get error info.

# AsyncProtocolError::Info

Cenvenience typedef for ProtocolErrorInfo

typedef ProtocolErrorInfo<Status> Info
-

# AsyncProtocolError::AsyncProtocolError

Constructor.

AsyncProtocolError(const Info& info, const oatpp::String& message)
-  : oatpp::AsyncIOError("AsyncProtocolError", info.ioStatus)
-  , m_info(info)
-  , m_message(message)
-

# AsyncProtocolError::getMessage

Error message.

  • @return - error message.

oatpp::String getMessage()
-

# AsyncProtocolError::getInfo

Get error info.

  • @return - error info.

Info getInfo()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/Http/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/Http/index.html deleted file mode 100644 index d690cc855..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/Http/index.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Http.hpp | Oat++ - - - - - - - -

# Http.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/Http.hpp"

# Headers

Namespace: oatpp::web::protocol::http

Typedef for headers map. Headers map key is case-insensitive. For more info see oatpp::data::share::LazyStringMultimap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabelCI> Headers
-

# QueryParams

Namespace: oatpp::web::protocol::http

Typedef for query parameters map. For more info see oatpp::data::share::LazyStringMultimap.

typedef oatpp::data::share::LazyStringMultimap<oatpp::data::share::StringKeyLabel> QueryParams
-

# Status

Http status.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class Status {}
-}}}}
-

# Fields

Type Name Summary
const Status CODE_100 Continue.
const Status CODE_101 Switching Protocols.
const Status CODE_102 Processing.
const Status CODE_200 OK.
const Status CODE_201 Created.
const Status CODE_202 Accepted.
const Status CODE_203 Non-Authoritative Information.
const Status CODE_204 No Content.
const Status CODE_205 Reset Content.
const Status CODE_206 Partial Content.
const Status CODE_207 Multi-Status.
const Status CODE_226 IM Used.
const Status CODE_300 Multiple Choices.
const Status CODE_301 Moved Permanently.
const Status CODE_302 Moved Temporarily.
const Status CODE_303 See Other.
const Status CODE_304 Not Modified.
const Status CODE_305 Use Proxy.
const Status CODE_306 Reserved.
const Status CODE_307 Temporary Redirect.
const Status CODE_400 Bad Request.
const Status CODE_401 Unauthorized.
const Status CODE_402 Payment Required.
const Status CODE_403 Forbidden.
const Status CODE_404 Not Found.
const Status CODE_405 Method Not Allowed.
const Status CODE_406 Not Acceptable.
const Status CODE_407 Proxy Authentication Required.
const Status CODE_408 Request Timeout.
const Status CODE_409 Conflict.
const Status CODE_410 Gone
const Status CODE_411 Length Required.
const Status CODE_412 Precondition Failed.
const Status CODE_413 Request Entity Too Large.
const Status CODE_414 Request-URI Too Large.
const Status CODE_415 Unsupported Media Type.
const Status CODE_416 Requested Range Not Satisfiable.
const Status CODE_417 Expectation Failed.
const Status CODE_422 Unprocessable Entity.
const Status CODE_423 Locked.
const Status CODE_424 Failed Dependency.
const Status CODE_425 Unordered Collection.
const Status CODE_426 Upgrade Required.
const Status CODE_428 Precondition Required.
const Status CODE_429 Too Many Requests.
const Status CODE_431 Request Header Fields Too Large.
const Status CODE_434 Requested host unavailable.
const Status CODE_444 Close connection withot sending headers.
const Status CODE_449 Retry With.
const Status CODE_451 Unavailable For Legal Reasons.
const Status CODE_500 Internal Server Error.
const Status CODE_501 Not Implemented.
const Status CODE_502 Bad Gateway.
const Status CODE_503 Service Unavailable.
const Status CODE_504 Gateway Timeout.
const Status CODE_505 HTTP Version Not Supported.
const Status CODE_506 Variant Also Negotiates.
const Status CODE_507 Insufficient Storage.
const Status CODE_508 Loop Detected.
const Status CODE_509 Bandwidth Limit Exceeded.
const Status CODE_510 Not Extended.
const Status CODE_511 Network Authentication Required.
v_int32 code Status code.
const char* description Description.

# Methods

Return Type Name Summary
[none] Status Multiple implementations:
  1. Constructor.
  2. Constructor.

# Status::CODE_100

Continue.

static const Status CODE_100
-

# Status::CODE_101

Switching Protocols.

static const Status CODE_101
-

# Status::CODE_102

Processing.

static const Status CODE_102
-

# Status::CODE_200

OK.

static const Status CODE_200
-

# Status::CODE_201

Created.

static const Status CODE_201
-

# Status::CODE_202

Accepted.

static const Status CODE_202
-

# Status::CODE_203

Non-Authoritative Information.

static const Status CODE_203
-

# Status::CODE_204

No Content.

static const Status CODE_204
-

# Status::CODE_205

Reset Content.

static const Status CODE_205
-

# Status::CODE_206

Partial Content.

static const Status CODE_206
-

# Status::CODE_207

Multi-Status.

static const Status CODE_207
-

# Status::CODE_226

IM Used.

static const Status CODE_226
-

# Status::CODE_300

Multiple Choices.

static const Status CODE_300
-

# Status::CODE_301

Moved Permanently.

static const Status CODE_301
-

# Status::CODE_302

Moved Temporarily.

static const Status CODE_302
-

# Status::CODE_303

See Other.

static const Status CODE_303
-

# Status::CODE_304

Not Modified.

static const Status CODE_304
-

# Status::CODE_305

Use Proxy.

static const Status CODE_305
-

# Status::CODE_306

Reserved.

static const Status CODE_306
-

# Status::CODE_307

Temporary Redirect.

static const Status CODE_307
-

# Status::CODE_400

Bad Request.

static const Status CODE_400
-

# Status::CODE_401

Unauthorized.

static const Status CODE_401
-

# Status::CODE_402

Payment Required.

static const Status CODE_402
-

# Status::CODE_403

Forbidden.

static const Status CODE_403
-

# Status::CODE_404

Not Found.

static const Status CODE_404
-

# Status::CODE_405

Method Not Allowed.

static const Status CODE_405
-

# Status::CODE_406

Not Acceptable.

static const Status CODE_406
-

# Status::CODE_407

Proxy Authentication Required.

static const Status CODE_407
-

# Status::CODE_408

Request Timeout.

static const Status CODE_408
-

# Status::CODE_409

Conflict.

static const Status CODE_409
-

# Status::CODE_410

Gone

static const Status CODE_410
-

# Status::CODE_411

Length Required.

static const Status CODE_411
-

# Status::CODE_412

Precondition Failed.

static const Status CODE_412
-

# Status::CODE_413

Request Entity Too Large.

static const Status CODE_413
-

# Status::CODE_414

Request-URI Too Large.

static const Status CODE_414
-

# Status::CODE_415

Unsupported Media Type.

static const Status CODE_415
-

# Status::CODE_416

Requested Range Not Satisfiable.

static const Status CODE_416
-

# Status::CODE_417

Expectation Failed.

static const Status CODE_417
-

# Status::CODE_422

Unprocessable Entity.

static const Status CODE_422
-

# Status::CODE_423

Locked.

static const Status CODE_423
-

# Status::CODE_424

Failed Dependency.

static const Status CODE_424
-

# Status::CODE_425

Unordered Collection.

static const Status CODE_425
-

# Status::CODE_426

Upgrade Required.

static const Status CODE_426
-

# Status::CODE_428

Precondition Required.

static const Status CODE_428
-

# Status::CODE_429

Too Many Requests.

static const Status CODE_429
-

# Status::CODE_431

Request Header Fields Too Large.

static const Status CODE_431
-

# Status::CODE_434

Requested host unavailable.

static const Status CODE_434
-

# Status::CODE_444

Close connection withot sending headers.

static const Status CODE_444
-

# Status::CODE_449

Retry With.

static const Status CODE_449
-

# Status::CODE_451

Unavailable For Legal Reasons.

static const Status CODE_451
-

# Status::CODE_500

Internal Server Error.

static const Status CODE_500
-

# Status::CODE_501

Not Implemented.

static const Status CODE_501
-

# Status::CODE_502

Bad Gateway.

static const Status CODE_502
-

# Status::CODE_503

Service Unavailable.

static const Status CODE_503
-

# Status::CODE_504

Gateway Timeout.

static const Status CODE_504
-

# Status::CODE_505

HTTP Version Not Supported.

static const Status CODE_505
-

# Status::CODE_506

Variant Also Negotiates.

static const Status CODE_506
-

# Status::CODE_507

Insufficient Storage.

static const Status CODE_507
-

# Status::CODE_508

Loop Detected.

static const Status CODE_508
-

# Status::CODE_509

Bandwidth Limit Exceeded.

static const Status CODE_509
-

# Status::CODE_510

Not Extended.

static const Status CODE_510
-

# Status::CODE_511

Network Authentication Required.

static const Status CODE_511
-

# Status::code

Status code.

v_int32 code
-

# Status::description

Description.

const char* description
-

# Status::Status

  1. Constructor.
    Status()
    -  : code(0)
    -  , description(nullptr)
    -
  2. Constructor.
    • @param pCode - status code.
    • @param pDesc - description.
    Status(v_int32 pCode, const char* pDesc)
    -  : code(pCode)
    -  , description(pDesc)
    -

# HttpError

HttpError extends oatpp::web::protocol::ProtocolError<Status>.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class HttpError : public protocol::ProtocolError<Status> {}
-}}}}
-

# Methods

Return Type Name Summary
[none] HttpError Multiple implementations:
  1. Constructor.
  2. Constructor.
  3. Constructor.
const Headers& getHeaders Get headers

# HttpError::HttpError

  1. Constructor.
    • @param info
    • @param message
    HttpError(const Info& info, const oatpp::String& message)
    -  : protocol::ProtocolError<Status>(info, message)
    -
  2. Constructor.
    • @param status
    • @param message
    HttpError(const Status& status, const oatpp::String& message)
    -  : protocol::ProtocolError<Status>(Info(0, status), message)
    -
  3. Constructor.
    • @param status
    • @param message
    • @param headers
    HttpError(const Status& status, const oatpp::String& message, const Headers& headers)
    -  : protocol::ProtocolError<Status>(Info(0, status), message)
    -  , m_headers(headers)
    -

# HttpError::getHeaders

Get headers

  • @return

const Headers& getHeaders() const
-

# OATPP_ASSERT_HTTP

Throw HttpError if assertion failed.

  • @param COND - boolean statement. If evaluates to false - throw error.
  • @param STATUS - Status.
  • @param MESSAGE - String message.

#define OATPP_ASSERT_HTTP(COND, STATUS, MESSAGE)
-

Collection of HTTP Header constants.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class Header {}
-}}}}
-

# Header::Value

Possible values for headers.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class Header {
-    class Value {}
-  };
-}}}}
-

# RequestStartingLine

Struct representing HTTP request starting line. Example request starting line: GET /path/to/resource/ HTTP/1.1.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  struct RequestStartingLine {}
-}}}}
-

# Fields

Type Name Summary
oatpp::data::share::StringKeyLabel method Method as oatpp::data::share::StringKeyLabel.
oatpp::data::share::StringKeyLabel path Path as oatpp::data::share::StringKeyLabel.
oatpp::data::share::StringKeyLabel protocol Protocol as oatpp::data::share::StringKeyLabel.

# RequestStartingLine::method

Method as oatpp::data::share::StringKeyLabel.

oatpp::data::share::StringKeyLabel method
-

# RequestStartingLine::path

Path as oatpp::data::share::StringKeyLabel.

oatpp::data::share::StringKeyLabel path
-

# RequestStartingLine::protocol

Protocol as oatpp::data::share::StringKeyLabel.

oatpp::data::share::StringKeyLabel protocol
-

# ResponseStartingLine

Struct representing HTTP response starting line. Example response starting line: HTTP/1.1 200 OK.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  struct ResponseStartingLine {}
-}}}}
-

# Fields

Type Name Summary
oatpp::data::share::StringKeyLabel protocol Protocol as oatpp::data::share::StringKeyLabel.
v_int32 statusCode Status code as v_int32.
oatpp::data::share::StringKeyLabel description Description as oatpp::data::share::StringKeyLabel.

# ResponseStartingLine::protocol

Protocol as oatpp::data::share::StringKeyLabel.

oatpp::data::share::StringKeyLabel protocol
-

# ResponseStartingLine::statusCode

Status code as v_int32.

v_int32 statusCode
-

# ResponseStartingLine::description

Description as oatpp::data::share::StringKeyLabel.

oatpp::data::share::StringKeyLabel description
-

# HeaderValueData

Data contained in the value of one header.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  struct HeaderValueData {}
-}}}}
-

# Fields

Type Name Summary
std::unordered_set<data::share::StringKeyLabelCI> tokens value tokens.
std::unordered_map<data::share::StringKeyLabelCI, data::share::StringKeyLabel> titleParams Title params.

# Methods

Return Type Name Summary
oatpp::String getTitleParamValue Get title parm value by key.

# HeaderValueData::tokens

value tokens.

std::unordered_set<data::share::StringKeyLabelCI> tokens
-

# HeaderValueData::titleParams

Title params.

std::unordered_map<data::share::StringKeyLabelCI, data::share::StringKeyLabel> titleParams
-

# HeaderValueData::getTitleParamValue

Get title parm value by key.

  • @param key
  • @return

oatpp::String getTitleParamValue(const data::share::StringKeyLabelCI& key) const
-

# Parser

Oatpp Http parser.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class Parser {}
-}}}}
-

# Methods

Return Type Name Summary
void parseRequestStartingLine Parse RequestStartingLine.
void parseResponseStartingLine Parse ResponseStartingLine.
void parseOneHeader Parse one header line. Example of the header line:
void parseHeaders Parse HTTP headers to Headers map.
void parseHeaderValueData Parse data that is contained in a one header.

# Parser::parseRequestStartingLine

Parse RequestStartingLine.

static void parseRequestStartingLine(RequestStartingLine& line,
-                                     const std::shared_ptr<std::string>& headersText,
-                                     oatpp::parser::Caret& caret,
-                                     Status& error)
-

# Parser::parseResponseStartingLine

Parse ResponseStartingLine.

static void parseResponseStartingLine(ResponseStartingLine& line,
-                                      const std::shared_ptr<std::string>& headersText,
-                                      oatpp::parser::Caret& caret,
-                                      Status& error)
-

# Parser::parseOneHeader

Parse one header line. Example of the header line: "Content-Type: application/json\r\n".

static void parseOneHeader(Headers& headers,
-                           const std::shared_ptr<std::string>& headersText,
-                           oatpp::parser::Caret& caret,
-                           Status& error)
-

# Parser::parseHeaders

Parse HTTP headers to Headers map.

static void parseHeaders(Headers& headers,
-                         const std::shared_ptr<std::string>& headersText,
-                         oatpp::parser::Caret& caret,
-                         Status& error)
-

# Parser::parseHeaderValueData

Parse data that is contained in a one header.

  • @param data - out. parsed data.
  • @param headerValue - header value string.
  • @param separator - subvalues separator.

static void parseHeaderValueData(HeaderValueData& data, const oatpp::data::share::StringKeyLabel& headerValue, char separator)
-

# Utils

Http utils.

namespace oatpp { namespace web { namespace protocol { namespace http { 
-  class Utils {}
-}}}}
-

# Methods

Return Type Name Summary
void writeHeaders Write headers map to stream.

# Utils::writeHeaders

Write headers map to stream.

  • @param headers
  • @param stream

static void writeHeaders(const Headers& headers, data::stream::ConsistentOutputStream* stream)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/Chunked/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/Chunked/index.html deleted file mode 100644 index ad51a9800..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/Chunked/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - Chunked.hpp | Oat++ - - - - - - - -

# Chunked.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/encoding/Chunked.hpp"

# EncoderChunked

Chunked-encoding buffer processor. oatpp::data::buffer::Processor.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class EncoderChunked : public data::buffer::Processor {}
-}}}}}
-

# Methods

Return Type Name Summary
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# EncoderChunked::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

v_io_size suggestInputStreamReadSize() override
-

# EncoderChunked::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

v_int32 iterate(data::buffer::InlineReadData& dataIn, data::buffer::InlineReadData& dataOut) override
-

# DecoderChunked

Chunked-decoding buffer processor. oatpp::data::buffer::Processor.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class DecoderChunked : public data::buffer::Processor {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] DecoderChunked Constructor.
v_io_size suggestInputStreamReadSize If the client is using the input stream to read data and push it to the processor,
v_int32 iterate Process data.

# DecoderChunked::DecoderChunked

Constructor.

DecoderChunked()
-

# DecoderChunked::suggestInputStreamReadSize

If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size.

  • @return - suggested read size.

v_io_size suggestInputStreamReadSize() override
-

# DecoderChunked::iterate

Process data.

  • @param dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set dataIn buffer pointer to nullptr to designate the end of input.
  • @param dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData.
  • @return - Processor::Error.

v_int32 iterate(data::buffer::InlineReadData& dataIn, data::buffer::InlineReadData& dataOut) override
-

# ChunkedEncoderProvider

EncoderProvider for "chunked" encoding.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class ChunkedEncoderProvider : public EncoderProvider {}
-}}}}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked encoding.

# ChunkedEncoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# ChunkedEncoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked encoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-

# ChunkedDecoderProvider

EncoderProvider for "chunked" decoding.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class ChunkedDecoderProvider : public EncoderProvider {}
-}}}}}
-

# Methods

Return Type Name Summary
oatpp::String getEncodingName Get encoding name.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for chunked decoding.

# ChunkedDecoderProvider::getEncodingName

Get encoding name.

  • @return

oatpp::String getEncodingName() override
-

# ChunkedDecoderProvider::getProcessor

Get oatpp::data::buffer::Processor for chunked decoding.

std::shared_ptr<data::buffer::Processor> getProcessor() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/index.html deleted file mode 100644 index 784f709ef..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - EncoderProvider.hpp | Oat++ - - - - - - - -

# EncoderProvider.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/encoding/EncoderProvider.hpp"

# EncoderProvider

Provider of encoding or decoding oatpp::data::buffer::Processor.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class EncoderProvider {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~EncoderProvider Default virtual destructor.
oatpp::String getEncodingName Get name of the encoding. This name is used in HTTP headers.
std::shared_ptr<data::buffer::Processor> getProcessor Get oatpp::data::buffer::Processor for decoding/encoding.

# EncoderProvider::~EncoderProvider

Default virtual destructor.

virtual ~EncoderProvider() = default
-

# EncoderProvider::getEncodingName

Get name of the encoding. This name is used in HTTP headers.

  • @return - name of the encoding. Ex.: "gzip" or "deflate" or "chunked".

virtual oatpp::String getEncodingName() = 0
-

# EncoderProvider::getProcessor

Get oatpp::data::buffer::Processor for decoding/encoding.

virtual std::shared_ptr<data::buffer::Processor> getProcessor() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/ProviderCollection/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/ProviderCollection/index.html deleted file mode 100644 index f69b930ee..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/encoding/ProviderCollection/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - ProviderCollection.hpp | Oat++ - - - - - - - -

# ProviderCollection.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/encoding/ProviderCollection.hpp"

# ProviderCollection

Collection of oatpp::web::protocol::http::encoding::EncoderProvider.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace encoding { 
-  class ProviderCollection {}
-}}}}}
-

# Methods

Return Type Name Summary
void add Add encoder to collection.
std::shared_ptr<EncoderProvider> get Multiple implementations:
  1. Get encoder by encoding name.
  2. Select available provider for set of encodings.

# ProviderCollection::add

Add encoder to collection.

  • @param provider

void add(const std::shared_ptr<EncoderProvider>& provider)
-

# ProviderCollection::get

  1. Get encoder by encoding name.
    • @param encoding - encoding name.
    • @return
    std::shared_ptr<EncoderProvider> get(const data::share::StringKeyLabelCI& encoding) const
    -
  2. Select available provider for set of encodings.
    • @param encodings - set of desired encodings
    • @return
    std::shared_ptr<EncoderProvider> get(const std::unordered_set<data::share::StringKeyLabelCI>& encodings) const
    -
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/index.html deleted file mode 100644 index b97aa92c4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - BodyDecoder.hpp | Oat++ - - - - - - - -

# BodyDecoder.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/BodyDecoder.hpp"

# BodyDecoder

Abstract BodyDecoder. Body Decoder is responsible to decode body of incoming request. For example if you receive chunked-encoded body, you have to decode it in order to get "plain" body. You may extend this class in order to customize body-decoding process.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class BodyDecoder {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~BodyDecoder Virtual destructor.
void decode Implement this method! Decode bodyStream and write decoded data to toStream.
oatpp::async::CoroutineStarter decodeAsync Implement this method! Same as BodyDecoder::decode() but Async.
oatpp::String decodeToString Read body stream and decode it to string.
Wrapper decodeToDto Read body stream, decode, and deserialize it as DTO Object (see Data Transfer Object (DTO)).
oatpp::async::CoroutineStarterForResult<const oatpp::String&> decodeToStringAsync Same as BodyDecoder::decodeToString() but Async.
oatpp::async::CoroutineStarterForResult<const Wrapper&> decodeToDtoAsync Same as BodyDecoder::decodeToDto() but Async.

# BodyDecoder::~BodyDecoder

Virtual destructor.

virtual ~BodyDecoder() = default
-

# BodyDecoder::decode

Implement this method! Decode bodyStream and write decoded data to toStream.

virtual void decode(const Headers& headers,
-                    data::stream::InputStream* bodyStream,
-                    data::stream::WriteCallback* writeCallback,
-                    data::stream::IOStream* connection) const = 0
-

# BodyDecoder::decodeAsync

Implement this method! Same as BodyDecoder::decode() but Async.

virtual oatpp::async::CoroutineStarter decodeAsync(const Headers& headers,
-                                                   const std::shared_ptr<data::stream::InputStream>& bodyStream,
-                                                   const std::shared_ptr<data::stream::WriteCallback>& writeCallback,
-                                                   const std::shared_ptr<data::stream::IOStream>& connection) const = 0
-

# BodyDecoder::decodeToString

Read body stream and decode it to string.

oatpp::String decodeToString(const Headers& headers,
-                             data::stream::InputStream* bodyStream,
-                             data::stream::IOStream* connection) const
-

# BodyDecoder::decodeToDto

Read body stream, decode, and deserialize it as DTO Object (see Data Transfer Object (DTO)).

template<class Wrapper>
-Wrapper decodeToDto(const Headers& headers,
-                    data::stream::InputStream* bodyStream,
-                    data::stream::IOStream* connection,
-                    data::mapping::ObjectMapper* objectMapper) const
-

# BodyDecoder::decodeToStringAsync

Same as BodyDecoder::decodeToString() but Async.

oatpp::async::CoroutineStarterForResult<const oatpp::String&>
-decodeToStringAsync(const Headers& headers,
-                    const std::shared_ptr<data::stream::InputStream>& bodyStream,
-                    const std::shared_ptr<data::stream::IOStream>& connection) const
-

# BodyDecoder::decodeToDtoAsync

Same as BodyDecoder::decodeToDto() but Async.

template<class Wrapper>
-oatpp::async::CoroutineStarterForResult<const Wrapper&>
-decodeToDtoAsync(const Headers& headers,
-                 const std::shared_ptr<data::stream::InputStream>& bodyStream,
-                 const std::shared_ptr<data::stream::IOStream>& connection,
-                 const std::shared_ptr<data::mapping::ObjectMapper>& objectMapper) const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Request/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Request/index.html deleted file mode 100644 index 89879f295..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Request/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - Request.hpp | Oat++ - - - - - - - -

# Request.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/Request.hpp"

# Request

Class http::incoming::Request AKA IncomingRequest represents client's incoming request.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class Request : public oatpp::base::Countable {}
-}}}}}
-

# Methods

Return Type Name Summary
std::shared_ptr<oatpp::data::stream::IOStream> getConnection Get raw connection stream.
const http::QueryParams& getQueryParameters Get map of url query parameters.
oatpp::String getQueryParameter Multiple implementations:
  1. Get query parameter value by name
  2. Get query parameter value by name with defaultValue
const http::RequestStartingLine& getStartingLine Get request starting line. (method, path, protocol)
void setPathVariables Set request path variables.
const url::mapping::Pattern::MatchMap& getPathVariables Get path variables according to path-pattern.
const http::Headers& getHeaders Get request's headers map
std::shared_ptr<oatpp::data::stream::InputStream> getBodyStream Get request's body stream
std::shared_ptr<const http::incoming::BodyDecoder> getBodyDecoder Get body decoder.
void putHeader Add http header.
bool putHeaderIfNotExists Add http header if not already exists.
bool putOrReplaceHeader Replaces or adds header.
bool putOrReplaceHeader_Unsafe Replaces or adds header.
void putHeader_Unsafe Add http header.
bool putHeaderIfNotExists_Unsafe Add http header if not already exists.
oatpp::String getHeader Get header value
oatpp::String getPathVariable Get path variable according to path-pattern
oatpp::String getPathTail Get path tail according to path-pattern
void putBundleData Put data to bundle.
WrapperType getBundleData Get data from bundle by key.
const data::Bundle& getBundle Get bundle object.
void transferBody Transfer body.
void transferBodyToStream Stream content of the body-stream to toStream
oatpp::String readBodyToString Transfer body stream to string
Wrapper readBodyToDto Transfer body to String and parse it as DTO
async::CoroutineStarter transferBodyAsync Transfer body in Asynchronous manner.
oatpp::async::CoroutineStarter transferBodyToStreamAsync Transfer body stream to toStream Async
async::CoroutineStarterForResult<const oatpp::String&> readBodyToStringAsync Transfer body stream to string Async.
oatpp::async::CoroutineStarterForResult<const Wrapper&> readBodyToDtoAsync Transfer body to String and parse it as DTO

# Request::getConnection

Get raw connection stream.

std::shared_ptr<oatpp::data::stream::IOStream> getConnection()
-

# Request::getQueryParameters

Get map of url query parameters. Query parameters will be lazy parsed from url "tail" Please note: lazy parsing of query parameters is not thread-safe!

  • @return map<key, value> for "key=value"

const http::QueryParams& getQueryParameters() const
-

# Request::getQueryParameter

  1. Get query parameter value by name
    • @param name
    • @return query parameter value
    oatpp::String getQueryParameter(const oatpp::data::share::StringKeyLabel& name) const
    -
  2. Get query parameter value by name with defaultValue
    • @param name
    • @param defaultValue
    • @return query parameter value or defaultValue if no such parameter found
    oatpp::String getQueryParameter(const oatpp::data::share::StringKeyLabel& name, const oatpp::String& defaultValue) const
    -

# Request::getStartingLine

Get request starting line. (method, path, protocol)

  • @return starting line structure

const http::RequestStartingLine& getStartingLine() const
-

# Request::setPathVariables

Set request path variables.

  • @param pathVariables - oatpp::web::url::mapping::Pattern::MatchMap.

void setPathVariables(const url::mapping::Pattern::MatchMap& pathVariables)
-

# Request::getPathVariables

Get path variables according to path-pattern.
Ex. given request path="/sum/19/1" for path-pattern="/sum/{a}/{b}"
getPathVariables().getVariable("a") == 19, getPathVariables().getVariable("b") == 1.

  • @return url MatchMap

const url::mapping::Pattern::MatchMap& getPathVariables() const
-

# Request::getHeaders

Get request's headers map

  • @return Headers map

const http::Headers& getHeaders() const
-

# Request::getBodyStream

Get request's body stream

  • @return body stream

std::shared_ptr<oatpp::data::stream::InputStream> getBodyStream() const
-

# Request::getBodyDecoder

Get body decoder.

  • @return Body decoder

std::shared_ptr<const http::incoming::BodyDecoder> getBodyDecoder() const
-

# Request::putHeader

Add http header.

void putHeader(const oatpp::String& key, const oatpp::String& value)
-

# Request::putHeaderIfNotExists

Add http header if not already exists.

bool putHeaderIfNotExists(const oatpp::String& key, const oatpp::String& value)
-

# Request::putOrReplaceHeader

Replaces or adds header.

bool putOrReplaceHeader(const oatpp::String& key, const oatpp::String& value)
-

# Request::putOrReplaceHeader_Unsafe

Replaces or adds header.

bool putOrReplaceHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::putHeader_Unsafe

Add http header.

void putHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::putHeaderIfNotExists_Unsafe

Add http header if not already exists.

bool putHeaderIfNotExists_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::getHeader

Get header value

oatpp::String getHeader(const oatpp::data::share::StringKeyLabelCI& headerName) const
-

# Request::getPathVariable

Get path variable according to path-pattern

  • @param name
  • @return matched value for path-pattern

oatpp::String getPathVariable(const oatpp::data::share::StringKeyLabel& name) const
-

# Request::getPathTail

Get path tail according to path-pattern Ex. given request path="/hello/path/tail" for path-pattern="/hello/*" tail == "path/tail" note '/' symbol is required before '*'

  • @return matched tail-value for path-pattern

oatpp::String getPathTail() const
-

# Request::putBundleData

Put data to bundle.

  • @param key
  • @param polymorph

void putBundleData(const oatpp::String& key, const oatpp::Void& polymorph)
-

# Request::getBundleData

Get data from bundle by key.

  • @tparam WrapperType
  • @param key
  • @return

template<typename WrapperType>
-WrapperType getBundleData(const oatpp::String& key) const
-

# Request::getBundle

Get bundle object.

  • @return

const data::Bundle& getBundle() const
-

# Request::transferBody

Transfer body.
Read body chunk by chunk and pass chunks to the writeCallback.

void transferBody(const base::ObjectHandle<data::stream::WriteCallback>& writeCallback) const
-

# Request::transferBodyToStream

Stream content of the body-stream to toStream

  • @param toStream

void transferBodyToStream(const base::ObjectHandle<data::stream::OutputStream>& toStream) const
-

# Request::readBodyToString

Transfer body stream to string

  • @return body as string

oatpp::String readBodyToString() const
-

# Request::readBodyToDto

Transfer body to String and parse it as DTO

  • @tparam Wrapper - ObjectWrapper type.
  • @param objectMapper
  • @return DTO

template<class Wrapper>
-Wrapper readBodyToDto(const base::ObjectHandle<data::mapping::ObjectMapper>& objectMapper) const
-

# Request::transferBodyAsync

Transfer body in Asynchronous manner.
Read body chunk by chunk and pass chunks to the writeCallback.

async::CoroutineStarter transferBodyAsync(const std::shared_ptr<data::stream::WriteCallback>& writeCallback) const
-

# Request::transferBodyToStreamAsync

Transfer body stream to toStream Async

oatpp::async::CoroutineStarter transferBodyToStreamAsync(const std::shared_ptr<oatpp::data::stream::OutputStream>& toStream) const
-

# Request::readBodyToStringAsync

Transfer body stream to string Async.

  • @return - oatpp::async::CoroutineStarterForResult.

async::CoroutineStarterForResult<const oatpp::String&> readBodyToStringAsync() const
-

# Request::readBodyToDtoAsync

Transfer body to String and parse it as DTO

  • @tparam Wrapper - DTO ObjectWrapper.
  • @param objectMapper
  • @return - oatpp::async::CoroutineStarterForResult.

template<class Wrapper>
-oatpp::async::CoroutineStarterForResult<const Wrapper&>
-readBodyToDtoAsync(const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& objectMapper) const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/RequestHeadersReader/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/RequestHeadersReader/index.html deleted file mode 100644 index 367af6d2b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/RequestHeadersReader/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - RequestHeadersReader.hpp | Oat++ - - - - - - - -

# RequestHeadersReader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp"

# RequestHeadersReader

Helper class to read http headers of incoming request from stream.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class RequestHeadersReader {}
-}}}}}
-

# Typedefs

Type Name Summary
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.

# Methods

Return Type Name Summary
[none] RequestHeadersReader Constructor.
Result readHeaders Read and parse http headers from stream.
oatpp::async::CoroutineStarterForResult<const RequestHeadersReader::Result&> readHeadersAsync Read and parse http headers from stream in asynchronous manner.

# RequestHeadersReader::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# RequestHeadersReader::RequestHeadersReader

Constructor.

  • @param readChunkSize
  • @param maxHeadersSize

RequestHeadersReader(oatpp::data::stream::BufferOutputStream* bufferStream,
-                     v_buff_size readChunkSize = 2048,
-                     v_buff_size maxHeadersSize = 4096)
-  : m_bufferStream(bufferStream)
-  , m_readChunkSize(readChunkSize)
-  , m_maxHeadersSize(maxHeadersSize)
-

# RequestHeadersReader::readHeaders

Read and parse http headers from stream.

Result readHeaders(data::stream::InputStreamBufferedProxy* stream, http::HttpError::Info& error)
-

# RequestHeadersReader::readHeadersAsync

Read and parse http headers from stream in asynchronous manner.

  • @param stream - std::shared_ptr to oatpp::data::stream::InputStreamBufferedProxy.
  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const RequestHeadersReader::Result&> readHeadersAsync(const std::shared_ptr<data::stream::InputStreamBufferedProxy>& stream)
-

# RequestHeadersReader::Result

Result of headers reading and parsing.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class RequestHeadersReader {
-    struct Result {}
-  };
-}}}}}
-

# Fields

Type Name Summary
http::RequestStartingLine startingLine oatpp::web::protocol::http::RequestStartingLine.
http::Headers headers oatpp::web::protocol::http::Headers.

# RequestHeadersReader::Result::startingLine

oatpp::web::protocol::http::RequestStartingLine.

http::RequestStartingLine startingLine
-

# RequestHeadersReader::Result::headers

oatpp::web::protocol::http::Headers.

http::Headers headers
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Response/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Response/index.html deleted file mode 100644 index 684fd13e8..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/Response/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - Response.hpp | Oat++ - - - - - - - -

# Response.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/Response.hpp"

# Response

Class http::incoming::Response AKA IncomingResponse represents server's incoming response

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class Response : public oatpp::base::Countable {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] Response Constructor.
std::shared_ptr<Response> createShared Create shared Response.
v_int32 getStatusCode Get http status code.
oatpp::String getStatusDescription Get http status description.
const http::Headers& getHeaders Get response http headers as oatpp::web::protocol::http::Headers.
void putHeader Add http header.
bool putHeaderIfNotExists Add http header if not already exists.
bool putOrReplaceHeader Replaces or adds header.
bool putOrReplaceHeader_Unsafe Replaces or adds header.
void putHeader_Unsafe Add http header.
bool putHeaderIfNotExists_Unsafe Add http header if not already exists.
oatpp::String getHeader Get header value
void putBundleData Put data to bundle.
WrapperType getBundleData Get data from bundle by key.
const data::Bundle& getBundle Get bundle object.
std::shared_ptr<data::stream::InputStream> getBodyStream Get raw body stream.
std::shared_ptr<const http::incoming::BodyDecoder> getBodyDecoder Get body decoder configured for this response.
void transferBody Transfer body.
void transferBodyToStream Decode and transfer body to toStream.
oatpp::String readBodyToString Decode and read body to oatpp::String.
Wrapper readBodyToDto Read body stream, decode, and deserialize it as DTO Object (see Data Transfer Object (DTO)).
async::CoroutineStarter transferBodyAsync Transfer body in Asynchronous manner.
oatpp::async::CoroutineStarter transferBodyToStreamAsync Same as Response::readBodyToDto() but Async.
oatpp::async::CoroutineStarterForResult<const oatpp::String&> readBodyToStringAsync Same as Response::readBodyToString() but Async.
oatpp::async::CoroutineStarterForResult<const Wrapper&> readBodyToDtoAsync Same as Response::readBodyToDto() but Async.

# Response::Response

Constructor.

Response(v_int32 statusCode,
-         const oatpp::String& statusDescription,
-         const http::Headers& headers,
-         const std::shared_ptr<oatpp::data::stream::InputStream>& bodyStream,
-         const std::shared_ptr<const http::incoming::BodyDecoder>& bodyDecoder)
-

# Response::createShared

Create shared Response.

static std::shared_ptr<Response> createShared(v_int32 statusCode,
-                                              const oatpp::String& statusDescription,
-                                              const http::Headers& headers,
-                                              const std::shared_ptr<oatpp::data::stream::InputStream>& bodyStream,
-                                              const std::shared_ptr<const http::incoming::BodyDecoder>& bodyDecoder)
-

# Response::getStatusCode

Get http status code.

  • @return - http status code.

v_int32 getStatusCode() const
-

# Response::getStatusDescription

Get http status description.

  • @return - http status description.

oatpp::String getStatusDescription() const
-

# Response::getHeaders

Get response http headers as oatpp::web::protocol::http::Headers.

const http::Headers& getHeaders() const
-

# Response::putHeader

Add http header.

void putHeader(const oatpp::String& key, const oatpp::String& value)
-

# Response::putHeaderIfNotExists

Add http header if not already exists.

bool putHeaderIfNotExists(const oatpp::String& key, const oatpp::String& value)
-

# Response::putOrReplaceHeader

Replaces or adds header.

bool putOrReplaceHeader(const oatpp::String& key, const oatpp::String& value)
-

# Response::putOrReplaceHeader_Unsafe

Replaces or adds header.

bool putOrReplaceHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::putHeader_Unsafe

Add http header.

void putHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::putHeaderIfNotExists_Unsafe

Add http header if not already exists.

bool putHeaderIfNotExists_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::getHeader

Get header value

oatpp::String getHeader(const oatpp::data::share::StringKeyLabelCI& headerName) const
-

# Response::putBundleData

Put data to bundle.

  • @param key
  • @param polymorph

void putBundleData(const oatpp::String& key, const oatpp::Void& polymorph)
-

# Response::getBundleData

Get data from bundle by key.

  • @tparam WrapperType
  • @param key
  • @return

template<typename WrapperType>
-WrapperType getBundleData(const oatpp::String& key) const
-

# Response::getBundle

Get bundle object.

  • @return

const data::Bundle& getBundle() const
-

# Response::getBodyStream

Get raw body stream.

std::shared_ptr<data::stream::InputStream> getBodyStream() const
-

# Response::getBodyDecoder

Get body decoder configured for this response.

std::shared_ptr<const http::incoming::BodyDecoder> getBodyDecoder() const
-

# Response::transferBody

Transfer body.
Read body chunk by chunk and pass chunks to the writeCallback.

void transferBody(const base::ObjectHandle<data::stream::WriteCallback>& writeCallback) const
-

# Response::transferBodyToStream

Decode and transfer body to toStream. Use case example - stream huge body directly to file using relatively small buffer.

void transferBodyToStream(const base::ObjectHandle<data::stream::OutputStream>& toStream) const
-

# Response::readBodyToString

Decode and read body to oatpp::String.

oatpp::String readBodyToString() const
-

# Response::readBodyToDto

Read body stream, decode, and deserialize it as DTO Object (see Data Transfer Object (DTO)).

template<class Wrapper>
-Wrapper readBodyToDto(const base::ObjectHandle<data::mapping::ObjectMapper>& objectMapper) const
-

# Response::transferBodyAsync

Transfer body in Asynchronous manner.
Read body chunk by chunk and pass chunks to the writeCallback.

async::CoroutineStarter transferBodyAsync(const std::shared_ptr<data::stream::WriteCallback>& writeCallback) const
-

# Response::transferBodyToStreamAsync

Same as Response::readBodyToDto() but Async.

oatpp::async::CoroutineStarter transferBodyToStreamAsync(const std::shared_ptr<data::stream::OutputStream>& toStream) const
-

# Response::readBodyToStringAsync

Same as Response::readBodyToString() but Async.

  • @return - oatpp::async::CoroutineStarterForResult.

oatpp::async::CoroutineStarterForResult<const oatpp::String&> readBodyToStringAsync() const
-

# Response::readBodyToDtoAsync

Same as Response::readBodyToDto() but Async.

template<class Wrapper>
-oatpp::async::CoroutineStarterForResult<const Wrapper&>
-readBodyToDtoAsync(const std::shared_ptr<data::mapping::ObjectMapper>& objectMapper) const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/ResponseHeadersReader/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/ResponseHeadersReader/index.html deleted file mode 100644 index a21518f62..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/ResponseHeadersReader/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - ResponseHeadersReader.hpp | Oat++ - - - - - - - -

# ResponseHeadersReader.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/ResponseHeadersReader.hpp"

# ResponseHeadersReader

Helper class to read http headers of incoming response from stream.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class ResponseHeadersReader {}
-}}}}}
-

# Typedefs

Type Name Summary
oatpp::async::Action Action Convenience typedef for oatpp::async::Action.

# Methods

Return Type Name Summary
[none] ResponseHeadersReader Constructor.
Result readHeaders Read and parse http headers from stream.
oatpp::async::CoroutineStarterForResult<const Result&> readHeadersAsync Read and parse http headers from stream in asynchronous manner.

# ResponseHeadersReader::Action

Convenience typedef for oatpp::async::Action.

typedef oatpp::async::Action Action
-

# ResponseHeadersReader::ResponseHeadersReader

Constructor.

ResponseHeadersReader(const oatpp::data::share::MemoryLabel& buffer, v_buff_size maxHeadersSize)
-  : m_buffer(buffer)
-  , m_maxHeadersSize(maxHeadersSize)
-

# ResponseHeadersReader::readHeaders

Read and parse http headers from stream.

Result readHeaders(const std::shared_ptr<oatpp::data::stream::IOStream>& connection, http::HttpError::Info& error)
-

# ResponseHeadersReader::readHeadersAsync

Read and parse http headers from stream in asynchronous manner.

oatpp::async::CoroutineStarterForResult<const Result&> readHeadersAsync(const std::shared_ptr<oatpp::data::stream::IOStream>& connection)
-

# ResponseHeadersReader::Result

Result of headers reading and parsing.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class ResponseHeadersReader {
-    struct Result {}
-  };
-}}}}}
-

# Fields

Type Name Summary
http::ResponseStartingLine startingLine oatpp::web::protocol::http::ResponseStartingLine.
http::Headers headers oatpp::web::protocol::http::Headers.
v_buff_size bufferPosStart This value represents starting position in buffer used to read data from stream for the last read operation.
v_buff_size bufferPosEnd This value represents end position in buffer used to read data from stream for the last read operation.

# ResponseHeadersReader::Result::startingLine

oatpp::web::protocol::http::ResponseStartingLine.

http::ResponseStartingLine startingLine
-

# ResponseHeadersReader::Result::headers

oatpp::web::protocol::http::Headers.

http::Headers headers
-

# ResponseHeadersReader::Result::bufferPosStart

This value represents starting position in buffer used to read data from stream for the last read operation.

v_buff_size bufferPosStart
-

# ResponseHeadersReader::Result::bufferPosEnd

This value represents end position in buffer used to read data from stream for the last read operation.

v_buff_size bufferPosEnd
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/SimpleBodyDecoder/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/SimpleBodyDecoder/index.html deleted file mode 100644 index 9f940f636..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/incoming/SimpleBodyDecoder/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - SimpleBodyDecoder.hpp | Oat++ - - - - - - - -

# SimpleBodyDecoder.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp"

# SimpleBodyDecoder

Default implementation of oatpp::web::protocol::http::incoming::BodyDecoder.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace incoming { 
-  class SimpleBodyDecoder : public BodyDecoder {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] SimpleBodyDecoder Constructor.
void decode Decode bodyStream and write decoded data to toStream.
oatpp::async::CoroutineStarter decodeAsync Same as SimpleBodyDecoder::decode() but Async.

# SimpleBodyDecoder::SimpleBodyDecoder

Constructor.

  • @param decoders - collection content decoders.

SimpleBodyDecoder(const std::shared_ptr<encoding::ProviderCollection>& contentDecoders = nullptr)
-

# SimpleBodyDecoder::decode

Decode bodyStream and write decoded data to toStream.

void decode(const Headers& headers,
-            data::stream::InputStream* bodyStream,
-            data::stream::WriteCallback* writeCallback,
-            data::stream::IOStream* connection) const override
-

# SimpleBodyDecoder::decodeAsync

Same as SimpleBodyDecoder::decode() but Async.

oatpp::async::CoroutineStarter decodeAsync(const Headers& headers,
-                                           const std::shared_ptr<data::stream::InputStream>& bodyStream,
-                                           const std::shared_ptr<data::stream::WriteCallback>& writeCallback,
-                                           const std::shared_ptr<data::stream::IOStream>& connection) const override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Body/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Body/index.html deleted file mode 100644 index f77971f47..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Body/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Body.hpp | Oat++ - - - - - - - -

# Body.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/Body.hpp"

# Body

Abstract http outgoing body. You may extend this class in order to implement custom body transferring functionality.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class Body : public data::stream::ReadCallback {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] ~Body Virtual destructor.
void declareHeaders Declare headers describing body.
p_char8 getKnownData Pointer to the body known data.
v_int64 getKnownSize Should return the known size of the body (if known).

# Body::~Body

Virtual destructor.

virtual ~Body() = default
-

# Body::declareHeaders

Declare headers describing body. Note: Do NOT declare the Content-Length header.

virtual void declareHeaders(Headers& headers) = 0
-

# Body::getKnownData

Pointer to the body known data.

  • @return - p_char8.

virtual p_char8 getKnownData() = 0
-

# Body::getKnownSize

Should return the known size of the body (if known). If body size is unknown then should return -1.

virtual v_int64 getKnownSize() = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/index.html deleted file mode 100644 index bb5750b04..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - BufferBody.hpp | Oat++ - - - - - - - -

# BufferBody.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/BufferBody.hpp"

# BufferBody

Implementation of oatpp::web::protocol::http::outgoing::Body class. Implements functionality to use :oatpp::String as data source for http body.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class BufferBody : public oatpp::base::Countable, public Body {}
-}}}}}
-

# Methods

Return Type Name Summary
std::shared_ptr<BufferBody> createShared Create shared BufferBody.
v_io_size read Read operation callback.
void declareHeaders Declare Content-Length header.
p_char8 getKnownData Pointer to the body known data.
v_int64 getKnownSize Return known size of the body.

# BufferBody::createShared

Create shared BufferBody.

  • @param buffer - oatpp::String.
  • @param contentType - type of the content.
  • @return - std::shared_ptr to BufferBody.

static std::shared_ptr<BufferBody> createShared(const oatpp::String& buffer,
-                                                const data::share::StringKeyLabel& contentType = data::share::StringKeyLabel())
-

# BufferBody::read

Read operation callback.

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

v_io_size read(void *buffer, v_buff_size count, async::Action& action) override
-

# BufferBody::declareHeaders

Declare Content-Length header.

void declareHeaders(Headers& headers) override
-

# BufferBody::getKnownData

Pointer to the body known data.

  • @return - p_char8.

p_char8 getKnownData() override
-

# BufferBody::getKnownSize

Return known size of the body.

  • @return - v_buff_size.

v_int64 getKnownSize() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/MultipartBody/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/MultipartBody/index.html deleted file mode 100644 index 2b6140aa2..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/MultipartBody/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - MultipartBody.hpp | Oat++ - - - - - - - -

# MultipartBody.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/MultipartBody.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Request/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Request/index.html deleted file mode 100644 index 7c431e923..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Request/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - Request.hpp | Oat++ - - - - - - - -

# Request.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/Request.hpp"

# Request

Class http::outgoing::Request AKA OutgoingRequest represents client's outgoing request to server.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class Request : public oatpp::base::Countable {}
-}}}}}
-

# Typedefs

Type Name Summary
protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.

# Methods

Return Type Name Summary
[none] Request Constructor.
std::shared_ptr<Request> createShared Create shared Request.
const oatpp::data::share::StringKeyLabel& getMethod Get http method.
const oatpp::data::share::StringKeyLabel& getPath Get path to resource.
Headers& getHeaders Get headers map.
void putHeader Add http header.
bool putHeaderIfNotExists Add http header if not already exists.
bool putOrReplaceHeader Replaces or adds header.
bool putOrReplaceHeader_Unsafe Replaces or adds header.
void putHeader_Unsafe Add http header.
bool putHeaderIfNotExists_Unsafe Add http header if not already exists.
oatpp::String getHeader Get header value
void putBundleData Put data to bundle.
WrapperType getBundleData Get data from bundle by key.
const data::Bundle& getBundle Get bundle object.
std::shared_ptr<Body> getBody Get http body.
void send Write request to stream.
oatpp::async::CoroutineStarter sendAsync Write request to stream in asynchronous manner.

# Request::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef protocol::http::Headers Headers
-

# Request::Request

Constructor.

Request(const oatpp::data::share::StringKeyLabel& method,
-        const oatpp::data::share::StringKeyLabel& path,
-        const Headers& headers,
-        const std::shared_ptr<Body>& body)
-

# Request::createShared

Create shared Request.

static std::shared_ptr<Request> createShared(const oatpp::data::share::StringKeyLabel& method,
-                                             const oatpp::data::share::StringKeyLabel& path,
-                                             const Headers& headers,
-                                             const std::shared_ptr<Body>& body)
-

# Request::getMethod

Get http method.

const oatpp::data::share::StringKeyLabel& getMethod() const
-

# Request::getPath

Get path to resource.

const oatpp::data::share::StringKeyLabel& getPath() const
-

# Request::getHeaders

Get headers map.

Headers& getHeaders()
-

# Request::putHeader

Add http header.

void putHeader(const oatpp::String& key, const oatpp::String& value)
-

# Request::putHeaderIfNotExists

Add http header if not already exists.

bool putHeaderIfNotExists(const oatpp::String& key, const oatpp::String& value)
-

# Request::putOrReplaceHeader

Replaces or adds header.

bool putOrReplaceHeader(const oatpp::String& key, const oatpp::String& value)
-

# Request::putOrReplaceHeader_Unsafe

Replaces or adds header.

bool putOrReplaceHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::putHeader_Unsafe

Add http header.

void putHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::putHeaderIfNotExists_Unsafe

Add http header if not already exists.

bool putHeaderIfNotExists_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Request::getHeader

Get header value

oatpp::String getHeader(const oatpp::data::share::StringKeyLabelCI& headerName) const
-

# Request::putBundleData

Put data to bundle.

  • @param key
  • @param polymorph

void putBundleData(const oatpp::String& key, const oatpp::Void& polymorph)
-

# Request::getBundleData

Get data from bundle by key.

  • @tparam WrapperType
  • @param key
  • @return

template<typename WrapperType>
-WrapperType getBundleData(const oatpp::String& key) const
-

# Request::getBundle

Get bundle object.

  • @return

const data::Bundle& getBundle() const
-

# Request::getBody

Get http body.

std::shared_ptr<Body> getBody()
-

# Request::send

Write request to stream.

void send(data::stream::OutputStream* stream)
-

# Request::sendAsync

Write request to stream in asynchronous manner.

static oatpp::async::CoroutineStarter sendAsync(std::shared_ptr<Request> _this,
-                                                const std::shared_ptr<data::stream::OutputStream>& stream)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Response/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Response/index.html deleted file mode 100644 index 8dbbaf285..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/Response/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Response.hpp | Oat++ - - - - - - - -

# Response.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/Response.hpp"

# Response

Class which stores information of outgoing http Response.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class Response : public oatpp::base::Countable {}
-}}}}}
-

# Typedefs

Type Name Summary
http::Headers Headers Convenience typedef for Headers.
See oatpp::web::protocol::http::Headers
oatpp::network::ConnectionHandler ConnectionHandler Convenience typedef for oatpp::network::ConnectionHandler.

# Methods

Return Type Name Summary
[none] Response Constructor.
std::shared_ptr<Response> createShared Create shared outgoing response with status and body.
const Status& getStatus Get status.
Headers& getHeaders Get headers.
std::shared_ptr<Body> getBody Get body
void putHeader Add http header.
bool putHeaderIfNotExists Add http header if not already exists.
bool putOrReplaceHeader Replaces or adds header.
bool putOrReplaceHeader_Unsafe Replaces or adds header.
void putHeader_Unsafe Add http header.
bool putHeaderIfNotExists_Unsafe Add http header if not already exists.
oatpp::String getHeader Get header value
void putBundleData Put data to bundle.
WrapperType getBundleData Get data from bundle by key.
const data::Bundle& getBundle Get bundle object.
void setConnectionUpgradeHandler Set connection upgreade header.
std::shared_ptr<ConnectionHandler> getConnectionUpgradeHandler Get currently set connection upgrade handler.
void setConnectionUpgradeParameters Set connection upgrade parameters.
std::shared_ptr<const ConnectionHandler::ParameterMap> getConnectionUpgradeParameters Get connection upgrade parameters.
void send Write this Response to stream.
oatpp::async::CoroutineStarter sendAsync Same as Response::send() but async.

# Response::Headers

Convenience typedef for Headers.
See oatpp::web::protocol::http::Headers

typedef http::Headers Headers
-

# Response::ConnectionHandler

Convenience typedef for oatpp::network::ConnectionHandler.

typedef oatpp::network::ConnectionHandler ConnectionHandler
-

# Response::Response

Constructor.

  • @param status - http status.
  • @param body - response body.

Response(const Status& status, const std::shared_ptr<Body>& body)
-

# Response::createShared

Create shared outgoing response with status and body.

  • @param status - http status.
  • @param body - response body.
  • @return

static std::shared_ptr<Response> createShared(const Status& status, const std::shared_ptr<Body>& body)
-

# Response::getStatus

Get status.

  • @return - http status.

const Status& getStatus() const
-

# Response::getHeaders

Get headers.

Headers& getHeaders()
-

# Response::getBody

Get body

std::shared_ptr<Body> getBody() const
-

# Response::putHeader

Add http header.

void putHeader(const oatpp::String& key, const oatpp::String& value)
-

# Response::putHeaderIfNotExists

Add http header if not already exists.

bool putHeaderIfNotExists(const oatpp::String& key, const oatpp::String& value)
-

# Response::putOrReplaceHeader

Replaces or adds header.

bool putOrReplaceHeader(const oatpp::String& key, const oatpp::String& value)
-

# Response::putOrReplaceHeader_Unsafe

Replaces or adds header.

bool putOrReplaceHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::putHeader_Unsafe

Add http header.

void putHeader_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::putHeaderIfNotExists_Unsafe

Add http header if not already exists.

bool putHeaderIfNotExists_Unsafe(const oatpp::data::share::StringKeyLabelCI& key, const oatpp::data::share::StringKeyLabel& value)
-

# Response::getHeader

Get header value

oatpp::String getHeader(const oatpp::data::share::StringKeyLabelCI& headerName) const
-

# Response::putBundleData

Put data to bundle.

  • @param key
  • @param polymorph

void putBundleData(const oatpp::String& key, const oatpp::Void& polymorph)
-

# Response::getBundleData

Get data from bundle by key.

  • @tparam WrapperType
  • @param key
  • @return

template<typename WrapperType>
-WrapperType getBundleData(const oatpp::String& key) const
-

# Response::getBundle

Get bundle object.

  • @return

const data::Bundle& getBundle() const
-

# Response::setConnectionUpgradeHandler

Set connection upgreade header.
Use it together with corresponding headers being set when Response is created as:
Response(oatpp::web::protocol::http::Status::CODE_101, nullptr);

void setConnectionUpgradeHandler(const std::shared_ptr<ConnectionHandler>& handler)
-

# Response::getConnectionUpgradeHandler

Get currently set connection upgrade handler.

std::shared_ptr<ConnectionHandler> getConnectionUpgradeHandler()
-

# Response::setConnectionUpgradeParameters

Set connection upgrade parameters.
Use it to set additional parameters for upgraded connection handling. See Response::setConnectionUpgradeHandler().

void setConnectionUpgradeParameters(const std::shared_ptr<const ConnectionHandler::ParameterMap>& parameters)
-

# Response::getConnectionUpgradeParameters

Get connection upgrade parameters.

  • @return - std::shared_ptr to const oatpp::network::ConnectionHandler::ParametersMap.

std::shared_ptr<const ConnectionHandler::ParameterMap> getConnectionUpgradeParameters()
-

# Response::send

Write this Response to stream.

void send(data::stream::OutputStream* stream,
-          data::stream::BufferOutputStream* headersWriteBuffer,
-          http::encoding::EncoderProvider* contentEncoderProvider)
-

# Response::sendAsync

Same as Response::send() but async.

static oatpp::async::CoroutineStarter sendAsync(const std::shared_ptr<Response>& _this,
-                                                const std::shared_ptr<data::stream::OutputStream>& stream,
-                                                const std::shared_ptr<data::stream::BufferOutputStream>& headersWriteBuffer,
-                                                const std::shared_ptr<http::encoding::EncoderProvider>& contentEncoderProvider)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/index.html deleted file mode 100644 index 8b07a11e6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - ResponseFactory.hpp | Oat++ - - - - - - - -

# ResponseFactory.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/ResponseFactory.hpp"

# ResponseFactory

Helper class to create http outgoing responses (oatpp::web::protocol::http::outgoing::Response).

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class ResponseFactory {}
-}}}}}
-

# Methods

Return Type Name Summary
std::shared_ptr<Response> createResponse Multiple implementations:
  1. Create oatpp::web::protocol::http::outgoing::Response with oatpp::web::protocol::http::outgoing::BufferBody.
  2. Create oatpp::web::protocol::http::outgoing::Response with oatpp::web::protocol::http::outgoing::DtoBody.

# ResponseFactory::createResponse

  1. Create oatpp::web::protocol::http::outgoing::Response with oatpp::web::protocol::http::outgoing::BufferBody.
    static std::shared_ptr<Response> createResponse(const Status& status, const oatpp::String& text)
    -
  2. Create oatpp::web::protocol::http::outgoing::Response with oatpp::web::protocol::http::outgoing::DtoBody.
    static std::shared_ptr<Response> createResponse(const Status& status,
    -                                                const oatpp::Void& dto,
    -                                                const std::shared_ptr<data::mapping::ObjectMapper>& objectMapper)
    -
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/StreamingBody/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/StreamingBody/index.html deleted file mode 100644 index 6736d8f38..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/outgoing/StreamingBody/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - StreamingBody.hpp | Oat++ - - - - - - - -

# StreamingBody.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/outgoing/StreamingBody.hpp"

# StreamingBody

Abstract body for streaming data.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { 
-  class StreamingBody : public Body {}
-}}}}}
-

# Methods

Return Type Name Summary
[none] StreamingBody Constructor.
v_io_size read Proxy method to readCallback::read().
void declareHeaders Override this method to declare additional headers.
p_char8 getKnownData Pointer to the body known data.
v_int64 getKnownSize Return known size of the body.

# StreamingBody::StreamingBody

Constructor.

  • @param readCallback

StreamingBody(const std::shared_ptr<data::stream::ReadCallback>& readCallback)
-

# StreamingBody::read

Proxy method to readCallback::read().

  • @param buffer - pointer to buffer.
  • @param count - size of the buffer in bytes.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written to buffer. 0 - to indicate end-of-file.

v_io_size read(void *buffer, v_buff_size count, async::Action& action) override
-

# StreamingBody::declareHeaders

Override this method to declare additional headers.

void declareHeaders(Headers& headers) override
-

# StreamingBody::getKnownData

Pointer to the body known data.

  • @return - nullptr.

p_char8 getKnownData() override
-

# StreamingBody::getKnownSize

Return known size of the body.

  • @return - -1.

v_int64 getKnownSize() override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/utils/CommunicationUtils/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/utils/CommunicationUtils/index.html deleted file mode 100644 index 9b1ef4e5c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/protocol/http/utils/CommunicationUtils/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - CommunicationUtils.hpp | Oat++ - - - - - - - -

# CommunicationUtils.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/protocol/http/utils/CommunicationUtils.hpp"

# CommunicationUtils

Helper class for communication utils.

namespace oatpp { namespace web { namespace protocol { namespace http { namespace utils { 
-  class CommunicationUtils {}
-}}}}}
-

# Methods

Return Type Name Summary
void considerConnectionState Consider keep connection alive taking into account request headers, response headers and protocol version.

# CommunicationUtils::considerConnectionState

Consider keep connection alive taking into account request headers, response headers and protocol version.
Corresponding header will be set to response if not existed before.

static void considerConnectionState(const std::shared_ptr<protocol::http::incoming::Request>& request,
-                                    const std::shared_ptr<protocol::http::outgoing::Response>& response,
-                                    ConnectionState& connectionState)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/AsyncHttpConnectionHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/AsyncHttpConnectionHandler/index.html deleted file mode 100644 index f07594fa7..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/AsyncHttpConnectionHandler/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - AsyncHttpConnectionHandler.hpp | Oat++ - - - - - - - -

# AsyncHttpConnectionHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/AsyncHttpConnectionHandler.hpp"

# AsyncHttpConnectionHandler

Asynchronous oatpp::network::ConnectionHandler for handling http communication.

namespace oatpp { namespace web { namespace server { 
-  class AsyncHttpConnectionHandler : public base::Countable, public network::ConnectionHandler, public HttpProcessor::TaskProcessingListener {}
-}}}
-

# Methods

Return Type Name Summary
[none] AsyncHttpConnectionHandler Multiple implementations:
  1. Constructor.
  2. Constructor.
  3. Constructor.
  4. Constructor.
  5. Constructor.
  6. Constructor.
void addRequestInterceptor Add request interceptor. Request interceptors are called before routing happens.
void addResponseInterceptor Add response interceptor.
void stop Will call m_executor.stop()
v_uint64 getConnectionsCount Get connections count.

# AsyncHttpConnectionHandler::AsyncHttpConnectionHandler

  1. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpProcessor::Components>& components, v_int32 threadCount = oatpp::async::Executor::VALUE_SUGGESTED)
    -
  2. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpProcessor::Components>& components, const std::shared_ptr<oatpp::async::Executor>& executor)
    -
  3. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpRouter>& router, v_int32 threadCount = oatpp::async::Executor::VALUE_SUGGESTED)
    -  : AsyncHttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router), threadCount)
    -
  4. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpRouter>& router, const std::shared_ptr<oatpp::async::Executor>& executor)
    -  : AsyncHttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router), executor)
    -
  5. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpRouter>& router,
    -                           const std::shared_ptr<HttpProcessor::Config>& config,
    -                           v_int32 threadCount = oatpp::async::Executor::VALUE_SUGGESTED)
    -  : AsyncHttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router, config), threadCount)
    -
  6. Constructor.
    AsyncHttpConnectionHandler(const std::shared_ptr<HttpRouter>& router,
    -                           const std::shared_ptr<HttpProcessor::Config>& config,
    -                           const std::shared_ptr<oatpp::async::Executor>& executor)
    -  : AsyncHttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router, config), executor)
    -

# AsyncHttpConnectionHandler::addRequestInterceptor

Add request interceptor. Request interceptors are called before routing happens. If multiple interceptors set then the order of interception is the same as the order of calls to addRequestInterceptor.

void addRequestInterceptor(const std::shared_ptr<interceptor::RequestInterceptor>& interceptor)
-

# AsyncHttpConnectionHandler::addResponseInterceptor

Add response interceptor. If multiple interceptors set then the order of interception is the same as the order of calls to addResponseInterceptor.

void addResponseInterceptor(const std::shared_ptr<interceptor::ResponseInterceptor>& interceptor)
-

# AsyncHttpConnectionHandler::stop

Will call m_executor.stop()

void stop() override
-

# AsyncHttpConnectionHandler::getConnectionsCount

Get connections count.

  • @return

v_uint64 getConnectionsCount()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpConnectionHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpConnectionHandler/index.html deleted file mode 100644 index 41f1da05f..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpConnectionHandler/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - HttpConnectionHandler.hpp | Oat++ - - - - - - - -

# HttpConnectionHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/HttpConnectionHandler.hpp"

# HttpConnectionHandler

Simple ConnectionHandler (oatpp::network::ConnectionHandler) for handling HTTP communication.
Will create one thread per each connection to handle communication.

namespace oatpp { namespace web { namespace server { 
-  class HttpConnectionHandler : public base::Countable, public network::ConnectionHandler, public HttpProcessor::TaskProcessingListener {}
-}}}
-

# Methods

Return Type Name Summary
[none] HttpConnectionHandler Multiple implementations:
  1. Constructor.
  2. Constructor.
  3. Constructor.
std::shared_ptr<HttpConnectionHandler> createShared Create shared HttpConnectionHandler.
void setErrorHandler Set root error handler for all requests coming through this Connection Handler.
void addRequestInterceptor Add request interceptor. Request interceptors are called before routing happens.
void addResponseInterceptor Add response interceptor.
void handleConnection Implementation of oatpp::network::ConnectionHandler::handleConnection().
void stop Tell all worker threads to exit when done.
v_uint64 getConnectionsCount Get connections count.

# HttpConnectionHandler::HttpConnectionHandler

  1. Constructor.
    HttpConnectionHandler(const std::shared_ptr<HttpProcessor::Components>& components)
    -
  2. Constructor.
    HttpConnectionHandler(const std::shared_ptr<HttpRouter>& router)
    -  : HttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router))
    -
  3. Constructor.
    HttpConnectionHandler(const std::shared_ptr<HttpRouter>& router,
    -                      const std::shared_ptr<HttpProcessor::Config>& config)
    -  : HttpConnectionHandler(std::make_shared<HttpProcessor::Components>(router, config))
    -

# HttpConnectionHandler::createShared

Create shared HttpConnectionHandler.

static std::shared_ptr<HttpConnectionHandler> createShared(const std::shared_ptr<HttpRouter>& router)
-

# HttpConnectionHandler::setErrorHandler

Set root error handler for all requests coming through this Connection Handler. All unhandled errors will be handled by this error handler.

void setErrorHandler(const std::shared_ptr<handler::ErrorHandler>& errorHandler)
-

# HttpConnectionHandler::addRequestInterceptor

Add request interceptor. Request interceptors are called before routing happens. If multiple interceptors set then the order of interception is the same as the order of calls to addRequestInterceptor.

void addRequestInterceptor(const std::shared_ptr<interceptor::RequestInterceptor>& interceptor)
-

# HttpConnectionHandler::addResponseInterceptor

Add response interceptor. If multiple interceptors set then the order of interception is the same as the order of calls to addResponseInterceptor.

void addResponseInterceptor(const std::shared_ptr<interceptor::ResponseInterceptor>& interceptor)
-

# HttpConnectionHandler::handleConnection

Implementation of oatpp::network::ConnectionHandler::handleConnection().

void handleConnection(const provider::ResourceHandle<IOStream>& connection,
-                      const std::shared_ptr<const ParameterMap>& params) override
-

# HttpConnectionHandler::stop

Tell all worker threads to exit when done.

void stop() override
-

# HttpConnectionHandler::getConnectionsCount

Get connections count.

  • @return

v_uint64 getConnectionsCount()
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpProcessor/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpProcessor/index.html deleted file mode 100644 index f7f4eeef6..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpProcessor/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - HttpProcessor.hpp | Oat++ - - - - - - - -

# HttpProcessor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/HttpProcessor.hpp"

# HttpProcessor

HttpProcessor. Helper class to handle HTTP processing.

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {}
-}}}
-

# HttpProcessor::Config

Resource config per connection.

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {
-    struct Config {}
-  };
-}}}
-

# Fields

Type Name Summary
v_buff_size headersInBufferInitial Buffer used to read headers in request. Initial size of the buffer.
v_buff_size headersOutBufferInitial Buffer used to write headers in response. Initial size of the buffer.
v_buff_size headersReaderChunkSize Size of the chunk used for iterative-read of headers.
v_buff_size headersReaderMaxSize Maximum allowed size of requests headers. The overall size of all headers in the request.

# HttpProcessor::Config::headersInBufferInitial

Buffer used to read headers in request. Initial size of the buffer.

v_buff_size headersInBufferInitial = 2048
-

# HttpProcessor::Config::headersOutBufferInitial

Buffer used to write headers in response. Initial size of the buffer.

v_buff_size headersOutBufferInitial = 2048
-

# HttpProcessor::Config::headersReaderChunkSize

Size of the chunk used for iterative-read of headers.

v_buff_size headersReaderChunkSize = 2048
-

# HttpProcessor::Config::headersReaderMaxSize

Maximum allowed size of requests headers. The overall size of all headers in the request.

v_buff_size headersReaderMaxSize = 4096
-

# HttpProcessor::Components

Collection of components needed to serve http-connection.

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {
-    struct Components {}
-  };
-}}}
-

# Fields

Type Name Summary
std::shared_ptr<HttpRouter> router Router to route incoming requests. oatpp::web::server::HttpRouter.
std::shared_ptr<protocol::http::encoding::ProviderCollection> contentEncodingProviders Content-encoding providers. oatpp::web::protocol::encoding::ProviderCollection.
std::shared_ptr<const oatpp::web::protocol::http::incoming::BodyDecoder> bodyDecoder Body decoder. oatpp::web::protocol::http::incoming::BodyDecoder.
std::shared_ptr<handler::ErrorHandler> errorHandler Error handler. oatpp::web::server::handler::ErrorHandler.
RequestInterceptors requestInterceptors Collection of request interceptors. oatpp::web::server::interceptor::RequestInterceptor.
ResponseInterceptors responseInterceptors Collection of request interceptors. oatpp::web::server::interceptor::ResponseInterceptor.
std::shared_ptr<Config> config Resource allocation config. HttpProcessor::Config.

# Methods

Return Type Name Summary
[none] Components Multiple implementations:
  1. Constructor.
  2. Constructor.
  3. Constructor.

# HttpProcessor::Components::router

Router to route incoming requests. oatpp::web::server::HttpRouter.

std::shared_ptr<HttpRouter> router
-

# HttpProcessor::Components::contentEncodingProviders

Content-encoding providers. oatpp::web::protocol::encoding::ProviderCollection.

std::shared_ptr<protocol::http::encoding::ProviderCollection> contentEncodingProviders
-

# HttpProcessor::Components::bodyDecoder

Body decoder. oatpp::web::protocol::http::incoming::BodyDecoder.

std::shared_ptr<const oatpp::web::protocol::http::incoming::BodyDecoder> bodyDecoder
-

# HttpProcessor::Components::errorHandler

Error handler. oatpp::web::server::handler::ErrorHandler.

std::shared_ptr<handler::ErrorHandler> errorHandler
-

# HttpProcessor::Components::requestInterceptors

Collection of request interceptors. oatpp::web::server::interceptor::RequestInterceptor.

RequestInterceptors requestInterceptors
-

# HttpProcessor::Components::responseInterceptors

Collection of request interceptors. oatpp::web::server::interceptor::ResponseInterceptor.

ResponseInterceptors responseInterceptors
-

# HttpProcessor::Components::config

Resource allocation config. HttpProcessor::Config.

std::shared_ptr<Config> config
-

# HttpProcessor::Components::Components

  1. Constructor.
    • @param pRouter
    • @param pContentEncodingProviders
    • @param pBodyDecoder
    • @param pErrorHandler
    • @param pRequestInterceptors
    • @param pConfig
    Components(const std::shared_ptr<HttpRouter>& pRouter,
    -           const std::shared_ptr<protocol::http::encoding::ProviderCollection>& pContentEncodingProviders,
    -           const std::shared_ptr<const oatpp::web::protocol::http::incoming::BodyDecoder>& pBodyDecoder,
    -           const std::shared_ptr<handler::ErrorHandler>& pErrorHandler,
    -           const RequestInterceptors& pRequestInterceptors,
    -           const ResponseInterceptors& pResponseInterceptors,
    -           const std::shared_ptr<Config>& pConfig)
    -
  2. Constructor.
    • @param pRouter
    Components(const std::shared_ptr<HttpRouter>& pRouter)
    -
  3. Constructor.
    • @param pRouter
    • @param pConfig
    Components(const std::shared_ptr<HttpRouter>& pRouter, const std::shared_ptr<Config>& pConfig)
    -

# HttpProcessor::TaskProcessingListener

Listener of the connection processing task.

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {
-    class TaskProcessingListener {}
-  };
-}}}
-

# HttpProcessor::Task

Connection serving task.
Usege example:
std::thread thread(HttpProcessor::Task::run, HttpProcessor::Task(components, connection));

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {
-    class Task : public base::Countable {}
-  };
-}}}
-

# Fields

Type Name Summary
Task& operator Move-Assignment to correctly count tasks.
  • @param t
  • @return

# Methods

Return Type Name Summary
[none] Task Multiple implementations:
  1. Constructor.
  2. Move-Constructor to correclty count tasks;
[none] ~Task Destructor, needed for counting.
void run Run loop.

# HttpProcessor::Task::operator

Move-Assignment to correctly count tasks.

  • @param t
  • @return

Task &operator=(Task &&other)
-

# HttpProcessor::Task::Task

  1. Constructor.
    Task(const std::shared_ptr<Components>& components,
    -     const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection,
    -     TaskProcessingListener* taskListener)
    -
  2. Move-Constructor to correclty count tasks;
    Task(Task &&other)
    -

# HttpProcessor::Task::~Task

Destructor, needed for counting.

~Task() override
-

# HttpProcessor::Task::run

Run loop.

void run()
-

# HttpProcessor::Coroutine

Connection serving coroutiner - oatpp::async::Coroutine.

namespace oatpp { namespace web { namespace server { 
-  class HttpProcessor {
-    class Coroutine : public oatpp::async::Coroutine<HttpProcessor::Coroutine> {}
-  };
-}}}
-

# Methods

Return Type Name Summary
[none] Coroutine Constructor.

# HttpProcessor::Coroutine::Coroutine

Constructor.

Coroutine(const std::shared_ptr<Components>& components,
-          const provider::ResourceHandle<oatpp::data::stream::IOStream>& connection,
-          TaskProcessingListener* taskListener)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRequestHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRequestHandler/index.html deleted file mode 100644 index 9a6dcde54..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRequestHandler/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - HttpRequestHandler.hpp | Oat++ - - - - - - - -

# HttpRequestHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/HttpRequestHandler.hpp"

# HttpRequestHandler

HTTP request handler.

namespace oatpp { namespace web { namespace server { 
-  class HttpRequestHandler {}
-}}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::Status Status Convenience typedef for oatpp::web::protocol::http::Status.
oatpp::web::protocol::http::Header Header Convenience typedef for oatpp::web::protocol::http::Header.
oatpp::web::protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.
oatpp::web::protocol::http::QueryParams QueryParams Convenience typedef for oatpp::web::protocol::http::QueryParams.
oatpp::web::protocol::http::incoming::Request IncomingRequest Convenience typedef for oatpp::web::protocol::http::incoming::Request.
oatpp::web::protocol::http::outgoing::Response OutgoingResponse Convenience typedef for oatpp::web::protocol::http::outgoing::Response.
oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory Convenience typedef for oatpp::web::protocol::http::outgoing::ResponseFactory.
oatpp::web::protocol::http::HttpError HttpError Convenience typedef for oatpp::web::protocol::http::HttpError.

# Methods

Return Type Name Summary
std::shared_ptr<OutgoingResponse> handle Handle incoming http request.
oatpp::async::CoroutineStarterForResult<const std::shared_ptr<OutgoingResponse>&> handleAsync Handle incoming http request in Asynchronous manner.
[none] ~HttpRequestHandler You have to provide a definition for destructors, otherwise its undefined behaviour.

# HttpRequestHandler::Status

Convenience typedef for oatpp::web::protocol::http::Status.

typedef oatpp::web::protocol::http::Status Status
-

# HttpRequestHandler::Header

Convenience typedef for oatpp::web::protocol::http::Header.

typedef oatpp::web::protocol::http::Header Header
-

# HttpRequestHandler::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef oatpp::web::protocol::http::Headers Headers
-

# HttpRequestHandler::QueryParams

Convenience typedef for oatpp::web::protocol::http::QueryParams.

typedef oatpp::web::protocol::http::QueryParams QueryParams
-

# HttpRequestHandler::IncomingRequest

Convenience typedef for oatpp::web::protocol::http::incoming::Request.

typedef oatpp::web::protocol::http::incoming::Request IncomingRequest
-

# HttpRequestHandler::OutgoingResponse

Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse
-

# HttpRequestHandler::ResponseFactory

Convenience typedef for oatpp::web::protocol::http::outgoing::ResponseFactory.

typedef oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory
-

# HttpRequestHandler::HttpError

Convenience typedef for oatpp::web::protocol::http::HttpError.

typedef oatpp::web::protocol::http::HttpError HttpError
-

# HttpRequestHandler::handle

Handle incoming http request.
Implement this method.

virtual std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request)
-

# HttpRequestHandler::handleAsync

Handle incoming http request in Asynchronous manner.
Implement this method.

virtual oatpp::async::CoroutineStarterForResult<const std::shared_ptr<OutgoingResponse>&>
-handleAsync(const std::shared_ptr<IncomingRequest>& request)
-

# HttpRequestHandler::~HttpRequestHandler

You have to provide a definition for destructors, otherwise its undefined behaviour.

virtual ~HttpRequestHandler() = default
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRouter/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRouter/index.html deleted file mode 100644 index 940edb89b..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/HttpRouter/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - HttpRouter.hpp | Oat++ - - - - - - - -

# HttpRouter.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/HttpRouter.hpp"

# HttpRouterTemplate

HttpRouter is responsible for routing http requests by method and path-pattern.

namespace oatpp { namespace web { namespace server { 
-  template<typename RouterEndpoint>
-  class HttpRouterTemplate : public oatpp::base::Countable {}
-}}}
-

# Typedefs

Type Name Summary
data::share::StringKeyLabel StringKeyLabel Convenience typedef for oatpp::data::share::StringKeyLabel.
web::url::mapping::Router<RouterEndpoint> BranchRouter oatpp::web::url::mapping::Router
std::unordered_map<StringKeyLabel, std::shared_ptr<BranchRouter>> BranchMap Http method to HttpRouter::BranchRouter map. Meaning that for each http method like ["GET", "POST", ...] there is a separate HttpRouter::BranchRouter.

# Methods

Return Type Name Summary
[none] HttpRouterTemplate Default Constructor.
std::shared_ptr<HttpRouterTemplate> createShared Create shared HttpRouter.
void route Route URL to Endpoint by method, and pathPattern.
BranchRouter::Route getRoute Resolve http method and path to oatpp::web::url::mapping::Router::Route
void logRouterMappings Print out all router mapping.

# HttpRouterTemplate::StringKeyLabel

Convenience typedef for oatpp::data::share::StringKeyLabel.

typedef data::share::StringKeyLabel StringKeyLabel
-

# HttpRouterTemplate::BranchRouter

oatpp::web::url::mapping::Router

typedef web::url::mapping::Router<RouterEndpoint> BranchRouter
-

# HttpRouterTemplate::BranchMap

Http method to HttpRouter::BranchRouter map. Meaning that for each http method like ["GET", "POST", ...] there is a separate HttpRouter::BranchRouter.

typedef std::unordered_map<StringKeyLabel, std::shared_ptr<BranchRouter>> BranchMap
-

# HttpRouterTemplate::HttpRouterTemplate

Default Constructor.

HttpRouterTemplate() = default
-

# HttpRouterTemplate::createShared

Create shared HttpRouter.

  • @return - std::shared_ptr to HttpRouter.

static std::shared_ptr<HttpRouterTemplate> createShared()
-

# HttpRouterTemplate::route

Route URL to Endpoint by method, and pathPattern.

  • @param method - http method like ["GET", "POST", etc.].
  • @param pathPattern - url path pattern. ex.: "/path/to/resource/with/{param1}/{param2}".
  • @param endpoint - router endpoint.

void route(const oatpp::String& method, const oatpp::String& pathPattern, const RouterEndpoint& endpoint)
-

# HttpRouterTemplate::getRoute

Resolve http method and path to oatpp::web::url::mapping::Router::Route

typename BranchRouter::Route getRoute(const StringKeyLabel& method, const StringKeyLabel& path)
-

# HttpRouterTemplate::logRouterMappings

Print out all router mapping.

void logRouterMappings()
-

# HttpRouter

Default HttpRouter.

namespace oatpp { namespace web { namespace server { 
-  class HttpRouter : public HttpRouterTemplate<std::shared_ptr<HttpRequestHandler>> {}
-}}}
-

# Methods

Return Type Name Summary
std::shared_ptr<HttpRouter> createShared Create shared HttpRouter.
std::shared_ptr<server::api::ApiController> addController Add controller and route its' endpoints.

# HttpRouter::createShared

Create shared HttpRouter.

  • @return

static std::shared_ptr<HttpRouter> createShared()
-

# HttpRouter::addController

Add controller and route its' endpoints.

  • @param controller
  • @return - std::shared_ptr to the controller added.

std::shared_ptr<server::api::ApiController> addController(const std::shared_ptr<server::api::ApiController>& controller)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/api/ApiController/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/api/ApiController/index.html deleted file mode 100644 index 8cbfddfb3..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/api/ApiController/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - ApiController.hpp | Oat++ - - - - - - - -

# ApiController.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/api/ApiController.hpp"

# ApiController

Class responsible for implementation and management of endpoints.
For details see ApiController.

namespace oatpp { namespace web { namespace server { namespace api { 
-  class ApiController : public oatpp::base::Countable {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory Convenience typedef for oatpp::web::protocol::http::outgoing::ResponseFactory.
oatpp::web::protocol::http::incoming::Request IncomingRequest Convenience typedef for oatpp::web::protocol::http::incoming::Request.
oatpp::web::protocol::http::outgoing::Request OutgoingRequest Convenience typedef for oatpp::web::protocol::http::outgoing::Request.
oatpp::web::protocol::http::incoming::Response IncomingResponse Convenience typedef for oatpp::web::protocol::http::incoming::Response.
oatpp::web::protocol::http::outgoing::Response OutgoingResponse Convenience typedef for oatpp::web::protocol::http::outgoing::Response.
oatpp::web::protocol::http::Status Status Convenience typedef for oatpp::web::protocol::http::Status.
oatpp::web::protocol::http::Header Header Convenience typedef for oatpp::web::protocol::http::Header.
oatpp::web::protocol::http::QueryParams QueryParams Convenience typedef for oatpp::web::protocol::http::QueryParams.
oatpp::web::server::HttpRequestHandler RequestHandler Convenience typedef for oatpp::web::server::HttpRequestHandler.
oatpp::web::server::handler::AuthorizationHandler AuthorizationHandler Convenience typedef for oatpp::web::server::handler::AuthorizationHandler.
oatpp::data::mapping::ObjectMapper ObjectMapper Convenience typedef for oatpp::data::mapping::ObjectMapper.
oatpp::String String Convenience typedef for oatpp::data::mapping::type::String.
oatpp::Int8 Int8 Convenience typedef for oatpp::data::mapping::type::Int8.
oatpp::UInt8 UInt8 Convenience typedef for oatpp::data::mapping::type::UInt8.
oatpp::Int16 Int16 Convenience typedef for oatpp::data::mapping::type::Int16.
oatpp::UInt16 UInt16 Convenience typedef for oatpp::data::mapping::type::UInt16.
oatpp::Int32 Int32 Convenience typedef for oatpp::data::mapping::type::Int32.
oatpp::UInt32 UInt32 Convenience typedef for oatpp::data::mapping::type::UInt32.
oatpp::Int64 Int64 Convenience typedef for oatpp::data::mapping::type::Int64.
oatpp::UInt64 UInt64 Convenience typedef for oatpp::data::mapping::type::UInt64.
oatpp::Float32 Float32 Convenience typedef for oatpp::data::mapping::type::Float32.
oatpp::Float64 Float64 Convenience typedef for atpp::data::mapping::type::Float64.
oatpp::Boolean Boolean Convenience typedef for oatpp::data::mapping::type::Boolean.

# Methods

Return Type Name Summary
const Endpoints& getEndpoints Get list of Endpoints created via ENDPOINT macro
void setErrorHandler [under discussion]
std::shared_ptr<OutgoingResponse> handleError [under discussion]
void setDefaultAuthorizationHandler [under discussion]
std::shared_ptr<handler::AuthorizationHandler> getDefaultAuthorizationHandler Get authorization handler.
std::shared_ptr<handler::AuthorizationObject> handleDefaultAuthorization [under discussion]

# ApiController::ResponseFactory

Convenience typedef for oatpp::web::protocol::http::outgoing::ResponseFactory.

typedef oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory
-

# ApiController::IncomingRequest

Convenience typedef for oatpp::web::protocol::http::incoming::Request.

typedef oatpp::web::protocol::http::incoming::Request IncomingRequest
-

# ApiController::OutgoingRequest

Convenience typedef for oatpp::web::protocol::http::outgoing::Request.

typedef oatpp::web::protocol::http::outgoing::Request OutgoingRequest
-

# ApiController::IncomingResponse

Convenience typedef for oatpp::web::protocol::http::incoming::Response.

typedef oatpp::web::protocol::http::incoming::Response IncomingResponse
-

# ApiController::OutgoingResponse

Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse
-

# ApiController::Status

Convenience typedef for oatpp::web::protocol::http::Status.

typedef oatpp::web::protocol::http::Status Status
-

# ApiController::Header

Convenience typedef for oatpp::web::protocol::http::Header.

typedef oatpp::web::protocol::http::Header Header
-

# ApiController::QueryParams

Convenience typedef for oatpp::web::protocol::http::QueryParams.

typedef oatpp::web::protocol::http::QueryParams QueryParams
-

# ApiController::RequestHandler

Convenience typedef for oatpp::web::server::HttpRequestHandler.

typedef oatpp::web::server::HttpRequestHandler RequestHandler
-

# ApiController::AuthorizationHandler

Convenience typedef for oatpp::web::server::handler::AuthorizationHandler.

typedef oatpp::web::server::handler::AuthorizationHandler AuthorizationHandler
-

# ApiController::ObjectMapper

Convenience typedef for oatpp::data::mapping::ObjectMapper.

typedef oatpp::data::mapping::ObjectMapper ObjectMapper
-

# ApiController::String

Convenience typedef for oatpp::data::mapping::type::String.

typedef oatpp::String String
-

# ApiController::Int8

Convenience typedef for oatpp::data::mapping::type::Int8.

typedef oatpp::Int8 Int8
-

# ApiController::UInt8

Convenience typedef for oatpp::data::mapping::type::UInt8.

typedef oatpp::UInt8 UInt8
-

# ApiController::Int16

Convenience typedef for oatpp::data::mapping::type::Int16.

typedef oatpp::Int16 Int16
-

# ApiController::UInt16

Convenience typedef for oatpp::data::mapping::type::UInt16.

typedef oatpp::UInt16 UInt16
-

# ApiController::Int32

Convenience typedef for oatpp::data::mapping::type::Int32.

typedef oatpp::Int32 Int32
-

# ApiController::UInt32

Convenience typedef for oatpp::data::mapping::type::UInt32.

typedef oatpp::UInt32 UInt32
-

# ApiController::Int64

Convenience typedef for oatpp::data::mapping::type::Int64.

typedef oatpp::Int64 Int64
-

# ApiController::UInt64

Convenience typedef for oatpp::data::mapping::type::UInt64.

typedef oatpp::UInt64 UInt64
-

# ApiController::Float32

Convenience typedef for oatpp::data::mapping::type::Float32.

typedef oatpp::Float32 Float32
-

# ApiController::Float64

Convenience typedef for atpp::data::mapping::type::Float64.

typedef oatpp::Float64 Float64
-

# ApiController::Boolean

Convenience typedef for oatpp::data::mapping::type::Boolean.

typedef oatpp::Boolean Boolean
-

# ApiController::getEndpoints

Get list of Endpoints created via ENDPOINT macro

const Endpoints& getEndpoints()
-

# ApiController::setErrorHandler

[under discussion] Set error handler to handle calls to handleError

void setErrorHandler(const std::shared_ptr<handler::ErrorHandler>& errorHandler)
-

# ApiController::handleError

[under discussion] Do not use it directly. This method is under discussion. Currently returns Response created by registered ErrorHandler or returns Response created by DefaultErrorHandler::handleDefaultError Notice: Does not throw the Error anymore, error-response has to be returned by the caller!

std::shared_ptr<OutgoingResponse> handleError(const Status& status, const oatpp::String& message) const
-

# ApiController::setDefaultAuthorizationHandler

[under discussion] Set authorization handler to handle calls to handleAuthorization. Must be called before controller is added to a router or swagger-doc if an endpoint uses the AUTHORIZATION macro

void setDefaultAuthorizationHandler(const std::shared_ptr<handler::AuthorizationHandler>& authorizationHandler)
-

# ApiController::getDefaultAuthorizationHandler

Get authorization handler.

  • @return

std::shared_ptr<handler::AuthorizationHandler> getDefaultAuthorizationHandler()
-

# ApiController::handleDefaultAuthorization

[under discussion] Do not use it directly. This method is under discussion. Currently returns AuthorizationObject created by AuthorizationHandler or return DefaultAuthorizationObject by DefaultAuthorizationHandler if AuthorizationHandler is null

std::shared_ptr<handler::AuthorizationObject> handleDefaultAuthorization(const String &authHeader) const
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/api/Endpoint/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/api/Endpoint/index.html deleted file mode 100644 index 01103fef4..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/api/Endpoint/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Endpoint.hpp | Oat++ - - - - - - - -

# Endpoint.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/api/Endpoint.hpp"

# Endpoint

Endpoint - class which holds information about endpoint. It holds API documentation info, and pointer to RequestHandler

namespace oatpp { namespace web { namespace server { namespace api { 
-  class Endpoint : public oatpp::base::Countable {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::web::server::HttpRequestHandler RequestHandler Convenience typedef for oatpp::web::server::HttpRequestHandler.

# Endpoint::RequestHandler

Convenience typedef for oatpp::web::server::HttpRequestHandler.

typedef oatpp::web::server::HttpRequestHandler RequestHandler
-

# Endpoint::Info

Info holds API documentation information about endpoint

namespace oatpp { namespace web { namespace server { namespace api { 
-  class Endpoint : public oatpp::base::Countable {
-    class Info : public oatpp::base::Countable {}
-  };
-}}}}
-

# Fields

Type Name Summary
oatpp::String name Endpoint name.
oatpp::String summary Endpoint summary.
oatpp::String description Endpoint description.
oatpp::String path Endpoint path.
oatpp::String method HTTP method.
oatpp::String authorization Authorization.
oatpp::Boolean hide Hide endpoint from the documentation.
std::list<oatpp::String> tags Tags to group endpoints in the documentation.
Param body Body info.
oatpp::String bodyContentType Body content type.
std::list<ContentHints> consumes Consumes.
std::unordered_map<oatpp::String, std::shared_ptr<std::list<oatpp::String>>> securityRequirements Security Requirements
Params headers Headers.
Params pathParams Path variables.
Params queryParams Query params.
std::unordered_map<oatpp::web::protocol::http::Status, ContentHints> responses ResponseCode to {ContentType, Type} mapping. Example responses[Status::CODE_200] = {"application/json", MyDto::ObjectWrapper::Class::getType()};

# Methods

Return Type Name Summary
[none] Info Constructor;
std::shared_ptr<Info> createShared Create shared Info.
ContentHints& addConsumes Add "consumes" info to endpoint.
ContentHints& addResponse Add response info to endpoint
void addSecurityRequirement Add security requirement.
void addTag Add tag.

# Endpoint::Info::name

Endpoint name.

oatpp::String name
-

# Endpoint::Info::summary

Endpoint summary.

oatpp::String summary
-

# Endpoint::Info::description

Endpoint description.

oatpp::String description
-

# Endpoint::Info::path

Endpoint path.

oatpp::String path
-

# Endpoint::Info::method

HTTP method.

oatpp::String method
-

# Endpoint::Info::authorization

Authorization.

oatpp::String authorization
-

# Endpoint::Info::hide

Hide endpoint from the documentation.

oatpp::Boolean hide
-

# Endpoint::Info::tags

Tags to group endpoints in the documentation.

std::list<oatpp::String> tags
-

# Endpoint::Info::body

Body info.

Param body
-

# Endpoint::Info::bodyContentType

Body content type.

oatpp::String bodyContentType
-

# Endpoint::Info::consumes

Consumes.

std::list<ContentHints> consumes
-

# Endpoint::Info::securityRequirements

Security Requirements

std::unordered_map<oatpp::String, std::shared_ptr<std::list<oatpp::String>>> securityRequirements
-

# Endpoint::Info::headers

Headers.

Params headers
-

# Endpoint::Info::pathParams

Path variables.

Params pathParams
-

# Endpoint::Info::queryParams

Query params.

Params queryParams
-

# Endpoint::Info::responses

ResponseCode to {ContentType, Type} mapping. Example responses[Status::CODE_200] = {"application/json", MyDto::ObjectWrapper::Class::getType()};

std::unordered_map<oatpp::web::protocol::http::Status, ContentHints> responses
-

# Endpoint::Info::Info

Constructor;

Info()
-

# Endpoint::Info::createShared

Create shared Info.

  • @return

static std::shared_ptr<Info> createShared()
-

# Endpoint::Info::addConsumes

Add "consumes" info to endpoint.

  • @tparam T
  • @param contentType

template<class Wrapper>
-ContentHints& addConsumes(const oatpp::String& contentType, const oatpp::String& description = oatpp::String())
-

# Endpoint::Info::addResponse

Add response info to endpoint

  • @tparam Wrapper
  • @param status
  • @param contentType
  • @param responseDescription

template<class Wrapper>
-ContentHints& addResponse(const oatpp::web::protocol::http::Status& status, const oatpp::String& contentType, const oatpp::String& responseDescription = oatpp::String())
-

# Endpoint::Info::addSecurityRequirement

Add security requirement.

  • @param requirement
  • @param scopes

void addSecurityRequirement(const oatpp::String &requirement, const std::shared_ptr<std::list<oatpp::String>> &scopes = nullptr)
-

# Endpoint::Info::addTag

Add tag.

  • @param tag

void addTag(const oatpp::String& tag)
-

# Endpoint::Info::Param

Param holds info about parameter

namespace oatpp { namespace web { namespace server { namespace api { 
-  class Endpoint : public oatpp::base::Countable {
-    class Info : public oatpp::base::Countable {
-      struct Param {}
-    };
-  };
-}}}}
-

# Endpoint::Info::ContentHints

Hints about the response (content-type, schema, description, ...)

namespace oatpp { namespace web { namespace server { namespace api { 
-  class Endpoint : public oatpp::base::Countable {
-    class Info : public oatpp::base::Countable {
-      struct ContentHints {}
-    };
-  };
-}}}}
-

# Endpoint::Info::Params

Parameters container

namespace oatpp { namespace web { namespace server { namespace api { 
-  class Endpoint : public oatpp::base::Countable {
-    class Info : public oatpp::base::Countable {
-      class Params {}
-    };
-  };
-}}}}
-

# Fields

Type Name Summary
Param& operator Get or add param by name
  • @param name
  • @return

# Methods

Return Type Name Summary
Param& add Multiple implementations:
  1. Add parameter name to list order
  2. Add parameter name to list order

# Endpoint::Info::Params::operator

Get or add param by name

  • @param name
  • @return

Param& operator [](const oatpp::String& name)
-

# Endpoint::Info::Params::add

  1. Add parameter name to list order
    • @param name
    • @return new or existing parameter
    Param& add(const oatpp::String& name, oatpp::data::mapping::type::Type* type)
    -
  2. Add parameter name to list order
    • @tparam T
    • @param name
    • @return new or existing parameter
    template<class T>
    -Param& add(const oatpp::String& name)
    -

# Endpoints

Collection of endpoints.

namespace oatpp { namespace web { namespace server { namespace api { 
-  struct Endpoints {}
-}}}}
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/AuthorizationHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/AuthorizationHandler/index.html deleted file mode 100644 index 524af881e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/AuthorizationHandler/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - AuthorizationHandler.hpp | Oat++ - - - - - - - -

# AuthorizationHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/handler/AuthorizationHandler.hpp"

# AuthorizationObject

The AuthorizationObject superclass, all AuthorizationObjects have to extend this class.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class AuthorizationObject : public oatpp::base::Countable {}
-}}}}
-

# AuthorizationHandler

Abstract Authorization Handler.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class AuthorizationHandler {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::web::server::handler::AuthorizationObject AuthorizationObject Convenience typedef for AuthorizationObject.
oatpp::data::stream::BufferOutputStream BufferOutputStream Convenience typedef for oatpp::data::stream::BufferOutputStream.
oatpp::web::protocol::http::Headers Headers Convenience typedef for oatpp::web::protocol::http::Headers.

# Methods

Return Type Name Summary
[none] AuthorizationHandler Constructor.
[none] ~AuthorizationHandler Default virtual destructor.
std::shared_ptr<AuthorizationObject> handleAuthorization Implement this method! Return nullptr if authorization should be denied.
void renderAuthenticateHeaderValue Render WWW-Authenicate header value.
void addErrorResponseHeaders Add authorization error headers to the headers map.
oatpp::String getScheme Get authorization scheme.
oatpp::String getRealm Get authorization realm.

# AuthorizationHandler::AuthorizationObject

Convenience typedef for AuthorizationObject.

typedef oatpp::web::server::handler::AuthorizationObject AuthorizationObject
-

# AuthorizationHandler::BufferOutputStream

Convenience typedef for oatpp::data::stream::BufferOutputStream.

typedef oatpp::data::stream::BufferOutputStream BufferOutputStream
-

# AuthorizationHandler::Headers

Convenience typedef for oatpp::web::protocol::http::Headers.

typedef oatpp::web::protocol::http::Headers Headers
-

# AuthorizationHandler::AuthorizationHandler

Constructor.

AuthorizationHandler(const oatpp::String& scheme, const oatpp::String& realm)
-

# AuthorizationHandler::~AuthorizationHandler

Default virtual destructor.

virtual ~AuthorizationHandler() = default
-

# AuthorizationHandler::handleAuthorization

Implement this method! Return nullptr if authorization should be denied.

virtual std::shared_ptr<AuthorizationObject> handleAuthorization(const oatpp::String& authorizationHeader) = 0
-

# AuthorizationHandler::renderAuthenticateHeaderValue

Render WWW-Authenicate header value.
Custom Authorization handlers may override this method in order to provide additional information.

virtual void renderAuthenticateHeaderValue(BufferOutputStream& stream)
-

# AuthorizationHandler::addErrorResponseHeaders

Add authorization error headers to the headers map.

virtual void addErrorResponseHeaders(Headers& headers)
-

# AuthorizationHandler::getScheme

Get authorization scheme.

  • @return

oatpp::String getScheme()
-

# AuthorizationHandler::getRealm

Get authorization realm.

  • @return

oatpp::String getRealm()
-

# DefaultBasicAuthorizationObject

Default Basic AuthorizationObject - Convenience object to enable Basic-Authorization without the need to implement anything.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class DefaultBasicAuthorizationObject : public AuthorizationObject {}
-}}}}
-

# Fields

Type Name Summary
oatpp::String userId User-Id. oatpp::String.
oatpp::String password Password. oatpp::String.

# DefaultBasicAuthorizationObject::userId

User-Id. oatpp::String.

oatpp::String userId
-

# DefaultBasicAuthorizationObject::password

Password. oatpp::String.

oatpp::String password
-

# BasicAuthorizationHandler

AuthorizationHandler for Authorization Type Basic.
See RFC 7617.
Extend this class to implement Custom Basic Authorization.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class BasicAuthorizationHandler : public AuthorizationHandler {}
-}}}}
-

# Methods

Return Type Name Summary
[none] BasicAuthorizationHandler Constructor.
std::shared_ptr<AuthorizationObject> handleAuthorization Implementation of AuthorizationHandler::handleAuthorization()
std::shared_ptr<AuthorizationObject> authorize Implement this method! Do the actual authorization here. When not implemented returns DefaultBasicAuthorizationObject.

# BasicAuthorizationHandler::BasicAuthorizationHandler

Constructor.

  • @param realm

BasicAuthorizationHandler(const oatpp::String& realm = "API")
-

# BasicAuthorizationHandler::handleAuthorization

Implementation of AuthorizationHandler::handleAuthorization()

std::shared_ptr<AuthorizationObject> handleAuthorization(const oatpp::String &header) override
-

# BasicAuthorizationHandler::authorize

Implement this method! Do the actual authorization here. When not implemented returns DefaultBasicAuthorizationObject.

virtual std::shared_ptr<AuthorizationObject> authorize(const oatpp::String& userId, const oatpp::String& password)
-

# DefaultBearerAuthorizationObject

Default Bearer AuthorizationObject - Convenience object to enable Bearer-Authorization without the need to implement anything.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class DefaultBearerAuthorizationObject : public AuthorizationObject {}
-}}}}
-

# Fields

Type Name Summary
oatpp::String token Token. oatpp::String.

# DefaultBearerAuthorizationObject::token

Token. oatpp::String.

oatpp::String token
-

# BearerAuthorizationHandler

AuthorizationHandler for Authorization Type Bearer.
See RFC 6750.
Extend this class to implement Custom Bearer Authorization.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class BearerAuthorizationHandler : public AuthorizationHandler {}
-}}}}
-

# Methods

Return Type Name Summary
[none] BearerAuthorizationHandler Constructor.
std::shared_ptr<AuthorizationObject> handleAuthorization Implementation of AuthorizationHandler::handleAuthorization()
std::shared_ptr<AuthorizationObject> authorize Implement this method! Do the actual authorization here. When not implemented returns DefaultBearerAuthorizationObject.

# BearerAuthorizationHandler::BearerAuthorizationHandler

Constructor.

  • @param realm

BearerAuthorizationHandler(const oatpp::String& realm = "API")
-

# BearerAuthorizationHandler::handleAuthorization

Implementation of AuthorizationHandler::handleAuthorization()

std::shared_ptr<AuthorizationObject> handleAuthorization(const oatpp::String &header) override
-

# BearerAuthorizationHandler::authorize

Implement this method! Do the actual authorization here. When not implemented returns DefaultBearerAuthorizationObject.

  • @param token - access token.
  • @return - std::shared_ptr to AuthorizationObject. nullptr - for "Unauthorized".

virtual std::shared_ptr<AuthorizationObject> authorize(const oatpp::String& token)
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/ErrorHandler/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/ErrorHandler/index.html deleted file mode 100644 index f8023aa4e..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/handler/ErrorHandler/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - ErrorHandler.hpp | Oat++ - - - - - - - -

# ErrorHandler.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/handler/ErrorHandler.hpp"

# ErrorHandler

Error Handler.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class ErrorHandler {}
-}}}}
-

# Typedefs

Type Name Summary
web::protocol::http::Headers Headers Convenience typedef for Headers.
See oatpp::web::protocol::http::Headers

# Methods

Return Type Name Summary
[none] ~ErrorHandler Virtual destructor since the class is ment to be derived from.
std::shared_ptr<protocol::http::outgoing::Response> handleError Multiple implementations:
  1. Implement this method!
  2. Convenience method to call handleError method with no headers.

# ErrorHandler::Headers

Convenience typedef for Headers.
See oatpp::web::protocol::http::Headers

typedef web::protocol::http::Headers Headers
-

# ErrorHandler::~ErrorHandler

Virtual destructor since the class is ment to be derived from. */

virtual ~ErrorHandler() = default
-

# ErrorHandler::handleError

  1. Implement this method!
    virtual
    -std::shared_ptr<protocol::http::outgoing::Response>
    -handleError(const protocol::http::Status& status, const oatpp::String& message, const Headers& headers) = 0
    -
  2. Convenience method to call handleError method with no headers.
    std::shared_ptr<protocol::http::outgoing::Response> handleError(const protocol::http::Status& status, const oatpp::String& message)
    -

# DefaultErrorHandler

Default Error Handler.

namespace oatpp { namespace web { namespace server { namespace handler { 
-  class DefaultErrorHandler : public oatpp::base::Countable, public ErrorHandler {}
-}}}}
-

# Methods

Return Type Name Summary
[none] DefaultErrorHandler Constructor.
std::shared_ptr<DefaultErrorHandler> createShared Create shared DefaultErrorHandler.
std::shared_ptr<protocol::http::outgoing::Response> handleError Implementation of ErrorHandler::handleError()

# DefaultErrorHandler::DefaultErrorHandler

Constructor.

DefaultErrorHandler()
-

# DefaultErrorHandler::createShared

Create shared DefaultErrorHandler.

  • @return - std::shared_ptr to DefaultErrorHandler.

static std::shared_ptr<DefaultErrorHandler> createShared()
-

# DefaultErrorHandler::handleError

Implementation of ErrorHandler::handleError()

std::shared_ptr<protocol::http::outgoing::Response>
-handleError(const protocol::http::Status& status, const oatpp::String& message, const Headers& headers) override
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/AllowCorsGlobal/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/AllowCorsGlobal/index.html deleted file mode 100644 index 101d1957a..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/AllowCorsGlobal/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - AllowCorsGlobal.hpp | Oat++ - - - - - - - -

# AllowCorsGlobal.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/interceptor/AllowCorsGlobal.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/RequestInterceptor/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/RequestInterceptor/index.html deleted file mode 100644 index 0f0d3fc1c..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/RequestInterceptor/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - RequestInterceptor.hpp | Oat++ - - - - - - - -

# RequestInterceptor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/interceptor/RequestInterceptor.hpp"

# RequestInterceptor

RequestInterceptor.

namespace oatpp { namespace web { namespace server { namespace interceptor { 
-  class RequestInterceptor {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::incoming::Request IncomingRequest Convenience typedef for oatpp::web::protocol::http::incoming::Request.
oatpp::web::protocol::http::outgoing::Response OutgoingResponse Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

# Methods

Return Type Name Summary
[none] ~RequestInterceptor Default virtual destructor.
std::shared_ptr<OutgoingResponse> intercept This method should not do any "heavy" nor I/O operations

# RequestInterceptor::IncomingRequest

Convenience typedef for oatpp::web::protocol::http::incoming::Request.

typedef oatpp::web::protocol::http::incoming::Request IncomingRequest
-

# RequestInterceptor::OutgoingResponse

Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse
-

# RequestInterceptor::~RequestInterceptor

Default virtual destructor.

virtual ~RequestInterceptor() = default
-

# RequestInterceptor::intercept

This method should not do any "heavy" nor I/O operations as it is used for both "Simple" and "Async" API NOT FOR I/O operations!!! - return nullptr to continue. - return OutgoingResponse to send response immediately possible usage ex: return 301 - redirect if needed

virtual std::shared_ptr<OutgoingResponse> intercept(const std::shared_ptr<IncomingRequest>& request) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/index.html deleted file mode 100644 index 729aaed20..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - ResponseInterceptor.hpp | Oat++ - - - - - - - -

# ResponseInterceptor.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/server/interceptor/ResponseInterceptor.hpp"

# ResponseInterceptor

ResponseInterceptor.

namespace oatpp { namespace web { namespace server { namespace interceptor { 
-  class ResponseInterceptor {}
-}}}}
-

# Typedefs

Type Name Summary
oatpp::web::protocol::http::incoming::Request IncomingRequest Convenience typedef for oatpp::web::protocol::http::incoming::Request.
oatpp::web::protocol::http::outgoing::Response OutgoingResponse Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

# Methods

Return Type Name Summary
[none] ~ResponseInterceptor Default virtual destructor.
std::shared_ptr<OutgoingResponse> intercept This method should not do any "heavy" nor I/O operations

# ResponseInterceptor::IncomingRequest

Convenience typedef for oatpp::web::protocol::http::incoming::Request.

typedef oatpp::web::protocol::http::incoming::Request IncomingRequest
-

# ResponseInterceptor::OutgoingResponse

Convenience typedef for oatpp::web::protocol::http::outgoing::Response.

typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse
-

# ResponseInterceptor::~ResponseInterceptor

Default virtual destructor.

virtual ~ResponseInterceptor() = default
-

# ResponseInterceptor::intercept

This method should not do any "heavy" nor I/O operations
as it is used for both "Simple" and "Async" API
NOT FOR I/O operations!!!

- return the same response, or the new one.
- do NOT return nullptr.

possible usage ex: add extra headers to the response.

virtual std::shared_ptr<OutgoingResponse> intercept(const std::shared_ptr<IncomingRequest>& request,
-                                                    const std::shared_ptr<OutgoingResponse>& response) = 0
-
- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Pattern/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Pattern/index.html deleted file mode 100644 index 58254cbfb..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Pattern/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Pattern.hpp | Oat++ - - - - - - - -

# Pattern.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/url/mapping/Pattern.hpp"

- - - diff --git a/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Router/index.html b/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Router/index.html deleted file mode 100644 index 5b48cec66..000000000 --- a/docs/.vuepress/dist/api/latest/oatpp/web/url/mapping/Router/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Router.hpp | Oat++ - - - - - - - -

# Router.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/web/url/mapping/Router.hpp"

# Router

Class responsible to map "Path" to "Route" by "Path-Pattern".

  • @tparam Endpoint - endpoint of the route.

namespace oatpp { namespace web { namespace url { namespace mapping { 
-  template<typename Endpoint>
-  class Router : public base::Countable {}
-}}}}
-

# Typedefs

Type Name Summary
std::pair<std::shared_ptr<Pattern>, Endpoint> Pair Pair oatpp::web::url::mapping::Pattern to Endpoint.
oatpp::data::share::StringKeyLabel StringKeyLabel Convenience typedef oatpp::data::share::StringKeyLabel.

# Methods

Return Type Name Summary
void route Add path-pattern to endpoint mapping.
Route getRoute Resolve path to corresponding endpoint.

# Router::Pair

Pair oatpp::web::url::mapping::Pattern to Endpoint.

typedef std::pair<std::shared_ptr<Pattern>, Endpoint> Pair
-

# Router::StringKeyLabel

Convenience typedef oatpp::data::share::StringKeyLabel.

typedef oatpp::data::share::StringKeyLabel StringKeyLabel
-

# Router::route

Add path-pattern to endpoint mapping.

  • @param pathPattern - path pattern for endpoint.
  • @param endpoint - route endpoint.

void route(const oatpp::String& pathPattern, const Endpoint& endpoint)
-

# Router::getRoute

Resolve path to corresponding endpoint.

  • @param path
  • @return - Router::Route.

Route getRoute(const StringKeyLabel& path)
-

# Router::Route

Resolved "Route" for "path-pattern"

namespace oatpp { namespace web { namespace url { namespace mapping { 
-  template<typename Endpoint>
-  class Router : public base::Countable {
-    class Route {}
-  };
-}}}}
-

# Methods

Return Type Name Summary
[none] Route Multiple implementations:
  1. Default constructor.
  2. Constructor.
const Endpoint& getEndpoint Get Endpoint.
const Pattern::MatchMap& getMatchMap Match map of resolved path containing resolved path variables.
bool isValid Check if route is valid.

# Router::Route::Route

  1. Default constructor.
    Route()
    -  : m_valid(false)
    -
  2. Constructor.
    • @param pEndpoint - route endpoint.
    • @param pMatchMap - Match map of resolved path containing resolved path variables.
    Route(const Endpoint& endpoint, Pattern::MatchMap&& matchMap)
    -  : m_valid(true)
    -  , m_endpoint(endpoint)
    -  , m_matchMap(matchMap)
    -

# Router::Route::getEndpoint

Get Endpoint.

const Endpoint& getEndpoint()
-

# Router::Route::getMatchMap

Match map of resolved path containing resolved path variables.

const Pattern::MatchMap& getMatchMap()
-

# Router::Route::isValid

Check if route is valid.

  • @return

bool isValid()
-
- - - diff --git a/docs/.vuepress/dist/assets/css/0.styles.5f58b113.css b/docs/.vuepress/dist/assets/css/0.styles.5f58b113.css deleted file mode 100644 index b10adc7db..000000000 --- a/docs/.vuepress/dist/assets/css/0.styles.5f58b113.css +++ /dev/null @@ -1 +0,0 @@ -code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#009688}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;-ms-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;-ms-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #00bfa5}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #00bfa5}.arrow.right{border-left:6px solid #00bfa5}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #00bfa5}.theme-default-content:not(.custom){max-width:100%;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#009688}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div[class*=language-] .highlight-lines .highlighted{box-shadow:inset 5px 0 #0d0,inset -5px 0 #0d0}.home .hero img{max-height:200px!important}.sidebar-heading{font-size:.9rem!important}.sidebar-link{font-size:.8rem!important}.navbar .logo{margin-right:0!important}.navbar .search-box input{border-radius:0!important}.contact_icon{opacity:.5;padding:3px 3px 0;background-color:#ccc;border-radius:2px;position:absolute}.contact_icon:hover{opacity:1;background-color:#fff}.contributor_img{margin:1px;opacity:.8}.contributor_img:hover{opacity:1}.maintainer_name{font-size:1.2rem;padding:0;margin:0}.maintainer_desc{font-size:1rem;padding:0;margin:0 0 5px}.maintainer_root{margin-bottom:10px;margin-right:25px}.maintainer_info,.maintainer_root,.user_root{display:inline-block}.user_root{margin:5px 5px 0 0;padding:0;background-color:rgba(0,0,0,.02);width:160px;height:160px}.user_root a{width:100%;height:100%;display:inline-grid;vertical-align:middle}.user_logo{margin:auto;width:80%;transition-duration:.5s}.user_root:hover .user_logo{width:90%}.margin1{margin-top:100px!important}.margin2{margin-top:150px!important}.h2-main{border-bottom:none}.h2-main,.users-main{text-align:center}.users-main .user_root{margin:15px 15px 0 0}.f-community{border-top:none!important;padding-top:0!important}@media (min-width:719px){.f-community .feature{flex-basis:25%!important;max-width:23%!important}}.icon{width:19px;height:19px;margin-right:7px}.footer-margin{margin-bottom:150px}#nprogress{pointer-events:none}#nprogress .bar{background:#009688;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #009688,0 0 5px #009688;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#009688 transparent transparent #009688;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#009688;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #00877a}.home .hero .action-button:hover{background-color:#00baa9}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#009688}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#009688}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#009688}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #009688;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{font-weight:600;font-size:inherit}.dropdown-wrapper .dropdown-title:hover{color:#009688}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #00bfa5;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#009688}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #00b3a2}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:100%;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:100%;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#009688;border-left-color:#009688}.sidebar-heading.clickable:hover{color:#009688}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#009688}a.sidebar-link.active{font-weight:600;color:#009688;border-left-color:#009688}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770],.badge[data-v-15b7b770]{background-color:#42b983}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px} \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/img/search.83621669.svg b/docs/.vuepress/dist/assets/img/search.83621669.svg deleted file mode 100644 index 03d83913e..000000000 --- a/docs/.vuepress/dist/assets/img/search.83621669.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/.vuepress/dist/assets/js/1.f59b7db0.js b/docs/.vuepress/dist/assets/js/1.f59b7db0.js deleted file mode 100644 index 9eb0d58bc..000000000 --- a/docs/.vuepress/dist/assets/js/1.f59b7db0.js +++ /dev/null @@ -1,8 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{301:function(e,t,n){"use strict";var r=n(326),o=n(358),i=Object.prototype.toString;function s(e){return"[object Array]"===i.call(e)}function a(e){return null!==e&&"object"==typeof e}function u(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),s(e))for(var n=0,r=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u},325:function(e,t,n){e.exports=n(357)},326:function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r - * @license MIT - */ -e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},359:function(e,t,n){"use strict";var r=n(318),o=n(301),i=n(368),s=n(369);function a(e){this.defaults=e,this.interceptors={request:new i,response:new i}}a.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),(e=o.merge(r,{method:"get"},this.defaults,e)).method=e.method.toLowerCase();var t=[s,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},o.forEach(["delete","get","head","options"],(function(e){a.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}})),o.forEach(["post","put","patch"],(function(e){a.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}})),e.exports=a},360:function(e,t,n){"use strict";var r=n(301);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},361:function(e,t,n){"use strict";var r=n(328);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},362:function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e}},363:function(e,t,n){"use strict";var r=n(301);function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(r.isURLSearchParams(t))i=t.toString();else{var s=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),s.push(o(t)+"="+o(e))})))})),i=s.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},364:function(e,t,n){"use strict";var r=n(301),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}})),s):s}},365:function(e,t,n){"use strict";var r=n(301);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},366:function(e,t,n){"use strict";function r(){this.message="String contains an invalid character"}r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,o=String(e),i="",s=0,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";o.charAt(0|s)||(a="=",s%1);i+=a.charAt(63&t>>8-s%1*8)){if((n=o.charCodeAt(s+=3/4))>255)throw new r;t=t<<8|n}return i}},367:function(e,t,n){"use strict";var r=n(301);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},368:function(e,t,n){"use strict";var r=n(301);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=o},369:function(e,t,n){"use strict";var r=n(301),o=n(370),i=n(329),s=n(318),a=n(371),u=n(372);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!a(e.url)&&(e.url=u(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return c(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(c(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},370:function(e,t,n){"use strict";var r=n(301);e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},371:function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},372:function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},373:function(e,t,n){"use strict";var r=n(330);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},374:function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/10.6621798c.js b/docs/.vuepress/dist/assets/js/10.6621798c.js deleted file mode 100644 index e21a4bea1..000000000 --- a/docs/.vuepress/dist/assets/js/10.6621798c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{382:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("seo"),t._v(" "),s("p",[t._v("Version: "),s("code",[t._v("1.3.0")]),s("br"),t._v("\nLicense: "),s("code",[t._v("Apache-2.0 License")])]),t._v(" "),s("div",{staticClass:"features"},[s("div",{staticClass:"feature"},[s("h2",[t._v("Run It Anywhere")]),t._v(" "),s("p",[t._v("Oat++ has "),s("b",[t._v("zero-dependencies")]),t._v(" and it's "),s("b",[t._v("easy-portable")]),t._v(" with a wide range of "),s("a",{attrs:{href:"/supported-platforms/"}},[t._v("supported platforms")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Build Robust APIs")]),t._v(" "),s("p",[t._v("With Oat++ "),s("b",[t._v("Simple-API")]),t._v(" it's easy and fun to build flexible and robust APIs. "),s("a",{attrs:{href:"/docs/start/high-level-overview/"}},[t._v("See high-level overview")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Handle 5M Connections")]),t._v(" "),s("p",[t._v("With Oat++ "),s("b",[t._v("Async-API")]),t._v(" you can handle over "),s("b",[t._v("5 Million")]),t._v(" concurrent connections on a single server. "),s("a",{attrs:{href:"/benchmark/websocket/5-million/"}},[t._v("See benchmark")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Access Databases")]),t._v(" "),s("p",[t._v("Oat++ "),s("b",[t._v("ORM")]),t._v(" provides an easy and unified way to access databases. "),s("a",{attrs:{href:"/docs/components/orm/"}},[t._v("Read more")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Keep Code Consistent")]),t._v(" "),s("p",[t._v("Oat++ relies on "),s("b",[t._v("Object-Mapping")]),t._v(" throughout its codebase to ensure consistency of APIs and data models. "),s("a",{attrs:{href:"/docs/components/dto/"}},[t._v("Read more")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Document Your APIs")]),t._v(" "),s("p",[t._v("Automatically document endpoints with "),s("b",[t._v("Swagger-UI")]),t._v(" and "),s("b",[t._v("OpenAPI 3.0.0")]),t._v(". "),s("a",{attrs:{href:"/docs/components/api-controller/#endpoint-annotation-and-api-documentation"}},[t._v("Read more")]),t._v(".")])])]),t._v(" "),s("h2",{staticClass:"h2-main margin1"},[t._v("How It Looks")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{staticClass:"h2-main margin2"},[t._v("Oat++ Users")]),t._v(" "),s("div",{staticClass:"users-main"},[s("users")],1),t._v(" "),s("h2",{staticClass:"h2-main margin2"},[t._v("Join Our Community")]),t._v(" "),s("div",{staticClass:"features f-community"},[s("div",{staticClass:"feature"},[s("h2",[t._v("Use Oat++")]),t._v(" "),s("p",[t._v("Start using Oat++ and share your experience. "),s("a",{attrs:{href:"/docs/start/"}},[t._v("Get Started!")])])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Contribute")]),t._v(" "),s("p",[t._v("Oat++ is an open-source project and your contributions matter. "),s("a",{attrs:{href:"/contributing/"}},[t._v("Contribute!")])])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Connect")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://twitter.com/oatpp_io"}},[s("img",{staticClass:"icon",attrs:{src:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYyICg5MTM5MCkgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+Y29tbXVuaXR5L3R3aXR0ZXI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0ibGlnaHQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJIb21lIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzU1LjAwMDAwMCwgLTI1OTIuMDAwMDAwKSIgZmlsbD0iIzRGQzRGOSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTgyMS4zOTM1OCwyNjE2Ljk1MzA3IEM4MjEuNDQwNTUzLDI2MTcuNjA5MjkgODIxLjQ0MDU1MywyNjE4LjI2NTY1IDgyMS40NDA1NTMsMjYxOC45MjE4NyBDODIxLjQ0MDU1MywyNjM4LjkzNzQxIDgwNi4xODA0NSwyNjYyIDc3OC4yODk0MjMsMjY2MiBDNzY5LjY5NjcxOCwyNjYyIDc2MS43MTQ1MTUsMjY1OS41MTU1MiA3NTUsMjY1NS4yMDMyIEM3NTYuMjIwODYsMjY1NS4zNDM3NCA3NTcuMzk0NjAzLDI2NTUuMzkwNjMgNzU4LjY2MjQzNiwyNjU1LjM5MDYzIEM3NjUuNzUyNDQ0LDI2NTUuMzkwNjMgNzcyLjI3OTIxMiwyNjUzLjAwMDA4IDc3Ny40OTExNzQsMjY0OC45MjE5NCBDNzcwLjgyMzYzMiwyNjQ4Ljc4MTI2IDc2NS4yMzYwMzIsMjY0NC40MjE5MSA3NjMuMzEwODY4LDI2MzguNDIxODcgQzc2NC4yNTAwMzYsMjYzOC41NjI0IDc2NS4xODkwNTksMjYzOC42NTYxOSA3NjYuMTc1MiwyNjM4LjY1NjE5IEM3NjcuNTM2ODM0LDI2MzguNjU2MTkgNzY4Ljg5ODYxMywyNjM4LjQ2ODYyIDc3MC4xNjYzMDEsMjYzOC4xNDA2NSBDNzYzLjIxNzA2NywyNjM2LjczNDI4IDc1OC4wMDQ5NjEsMjYzMC42NDA2IDc1OC4wMDQ5NjEsMjYyMy4yODEyMiBMNzU4LjAwNDk2MSwyNjIzLjA5Mzc5IEM3NjAuMDIzOTI2LDI2MjQuMjE4OCA3NjIuMzcxODQ1LDI2MjQuOTIxOTEgNzY0Ljg2MDI0OSwyNjI1LjAxNTU2IEM3NjAuNzc1MjAyLDI2MjIuMjk2NzUgNzU4LjA5ODkwNywyNjE3LjY1NjE4IDc1OC4wOTg5MDcsMjYxMi40MDYxNCBDNzU4LjA5ODkwNywyNjA5LjU5MzcgNzU4Ljg1MDAzOCwyNjA3LjAxNTU3IDc2MC4xNjQ4NDQsMjYwNC43NjU1NSBDNzY3LjYzMDYzNSwyNjEzLjk1MzA1IDc3OC44NTI4MDgsMjYxOS45NTI5NSA3OTEuNDM2NDcsMjYyMC42MDkzMSBDNzkxLjIwMTc1MSwyNjE5LjQ4NDMgNzkxLjA2MDgzMiwyNjE4LjMxMjU1IDc5MS4wNjA4MzIsMjYxNy4xNDA2NCBDNzkxLjA2MDgzMiwyNjA4Ljc5NjggNzk3LjgyMjMyLDI2MDIgODA2LjIyNzEzNCwyNjAyIEM4MTAuNTkzODczLDI2MDIgODE0LjUzODAwMiwyNjAzLjgyODEyIDgxNy4zMDgzODgsMjYwNi43ODEyNSBDODIwLjczNTk2LDI2MDYuMTI1MDMgODI0LjAyMjc1OCwyNjA0Ljg1OTM0IDgyNi45MzQwNjIsMjYwMy4xMjUwMSBDODI1LjgwNzAwMywyNjA2LjY0MDcxIDgyMy40MTI0LDI2MDkuNTkzODQgODIwLjI2NjUyMSwyNjExLjQ2ODcxIEM4MjMuMzE4NTk5LDI2MTEuMTQwNzUgODI2LjI3NjczMiwyNjEwLjI5NjgxIDgyOSwyNjA5LjEyNTA1IEM4MjYuOTM0MzUxLDI2MTIuMTI0OTMgODI0LjM1MTcxMiwyNjE0Ljc5NjcgODIxLjM5MzU4LDI2MTYuOTUzMDcgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}),t._v("Twitter")])]),t._v(" "),s("li",[s("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://gitter.im/oatpp-framework/Lobby"}},[s("img",{staticClass:"icon",attrs:{src:"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA1MSA3NSIgd2lkdGg9IjE3MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTAgMGg2djQ4aC02em0xNSAxM2g2djYyaC02em0xNSAwaDZ2NjJoLTZ6bTE1IDBoNnYzNGgtNnoiLz48L3N2Zz4="}}),t._v("Gitter")])]),t._v(" "),s("li",[s("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://stackoverflow.com/questions/tagged/oat%2b%2b"}},[s("img",{staticClass:"icon",attrs:{src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzMzMzMgMzMzMzMzIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiIgdGV4dC1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiIgaW1hZ2UtcmVuZGVyaW5nPSJvcHRpbWl6ZVF1YWxpdHkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMzIyODMxIDExNzY2OWwtMjUzNzYgMzMwNTktMi0yLTE3NTk2IDM3NzU2LTQtMi05MDIwIDQwNjY3LTIwMzM5MS00NTA5Mi0yIDIgOTAyMC00MDY4MSAyMDMzMDggNDUwNjUtMTg4NzI0LTg4MDAwdi0ybDE3NjA2LTM3NzcyIDE4ODcxNCA4Nzk5MkwxMzIxNjAgMjM4OTQgMTUwNDkzIDBoMTg5NjdsMTUzMzcyIDExNzY2OXpNNjI1MDEgMjI5MTczaDIwODMzMHY0MTY2NWwtMjA4MzMwLTR2LTQxNjYxeiIgZmlsbD0iI2Y0ODAyNCIvPjxwYXRoIGZpbGw9IiNiY2JiYmIiIGQ9Ik0zMzMzMzMgMjA4MzM4djEyNDk5NUgwVjIwODMzOGg0MTY2NXY4MzMzMGgyNTAwMDN2LTgzMzMweiIvPjwvc3ZnPg=="}}),t._v("StackOverflow")])])])]),t._v(" "),s("div",{staticClass:"feature"},[s("h2",[t._v("Share Your Feedback")]),t._v(" "),s("p",[t._v("If you are using Oat++, we would love to hear from you! "),s("a",{attrs:{href:"mailto:contact@oatpp.io"}},[t._v("contact@oatpp.io")])])])]),t._v(" "),s("h2",{staticClass:"h2-main margin1"},[t._v("Frequently Asked Questions")]),t._v(" "),s("h3",[t._v('Q: "Oat++" name?')]),t._v(" "),s("ul",[s("li",[t._v('"Oat" is something light, organic, and green. It can be easily cooked and consumed with no effort.')]),t._v(" "),s("li",[t._v('"++" gives a hint that it is "something" for C++.')])]),t._v(" "),s("h3",[t._v("Q: What is the main area of Oat++ application?")]),t._v(" "),s("p",[t._v("Oat++ is used for many different purposes, from building REST APIs that run on embedded devices to\nbuilding microservices and highly-loaded cloud applications.")]),t._v(" "),s("p",[t._v("But the majority of use cases appears to be in "),s("strong",[t._v("IoT")]),t._v(" and "),s("strong",[t._v("Robotics")]),t._v(".")]),t._v(" "),s("h3",[t._v("Q: How portable is Oat++?")]),t._v(" "),s("p",[t._v("Theoretically, Oat++ can be "),s("strong",[t._v("easily")]),t._v(" ported everywhere where you have "),s("strong",[t._v("threads")]),t._v(" and "),s("strong",[t._v("network stack")]),t._v(".\nWith an additional comparably small effort, it can be ported almost everywhere depending on how\nmuch you strip it and what would be the final binary size.")]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"/supported-platforms/"}},[t._v("supported platforms")]),t._v(" for additional info.")]),t._v(" "),s("h3",[t._v("Q: What is the size of a minimal Oat++ application?")]),t._v(" "),s("p",[t._v("About "),s("strong",[t._v("1Mb")]),t._v(", depending on C/C++ std-lib and oatpp version.")]),t._v(" "),s("h3",[t._v("Q: Which Oat++ API to choose, Simple or Async?")]),t._v(" "),s("p",[t._v("Always choose "),s("strong",[t._v("Simple API")]),t._v(" wherever possible. Simple API is more developed and makes the code cleaner.")]),t._v(" "),s("p",[t._v("Async API is designed for small, specific tasks that run at high concurrency levels ex.:")]),t._v(" "),s("ul",[s("li",[t._v("Serving file downloads to a large number of concurrent users (1K users and more).")]),t._v(" "),s("li",[t._v("Streaming to a large number of clients (1K or more).")]),t._v(" "),s("li",[t._v("Websocket Chat servers.")])]),t._v(" "),s("p",[t._v("For all other purposes use simple API.")]),t._v(" "),s("div",{staticClass:"footer-margin"})],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/100.d65cf70b.js b/docs/.vuepress/dist/assets/js/100.d65cf70b.js deleted file mode 100644 index 540a12b8d..000000000 --- a/docs/.vuepress/dist/assets/js/100.d65cf70b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{472:function(t,s,e){"use strict";e.r(s);var a=e(42),r=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"unittest-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-hpp"}},[t._v("#")]),t._v(" UnitTest.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp-test/UnitTest.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp-test/UnitTest.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-test/UnitTest.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"unittest"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest"}},[t._v("#")]),t._v(" UnitTest")]),t._v(" "),e("p",[t._v("Base class for unit tests.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" test "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("UnitTest")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-unittest"}},[t._v("UnitTest")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-~unittest"}},[t._v("~UnitTest")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-run"}},[t._v("run")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Run this test repeatedly for specified number of times. ")]),e("li",[t._v("Run this test. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-onrun"}},[t._v("onRun")])]),t._v(" "),e("td",[t._v("Override this method. It should contain test logic.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-before"}},[t._v("before")])]),t._v(" "),e("td",[t._v("Optionally override this method. It should contain logic run before all test iterations.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-after"}},[t._v("after")])]),t._v(" "),e("td",[t._v("Optionally override this method. It should contain logic run after all test iterations.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#unittest-runtest"}},[t._v("runTest")])]),t._v(" "),e("td",[t._v("Run this test repeatedly for specified number of times.")])])])]),t._v(" "),e("h3",{attrs:{id:"unittest-unittest"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-unittest"}},[t._v("#")]),t._v(" UnitTest::UnitTest")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" testTAG - tag used for logs. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("UnitTest")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" testTAG"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("TAG")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("testTAG"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"unittest-unittest-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-unittest-2"}},[t._v("#")]),t._v(" UnitTest::~UnitTest")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("UnitTest")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"unittest-run"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-run"}},[t._v("#")]),t._v(" UnitTest::run")]),t._v(" "),e("ol",[e("li",[t._v("Run this test repeatedly for specified number of times. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" times - number of times to run this test. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 times"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Run this test."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"unittest-onrun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-onrun"}},[t._v("#")]),t._v(" UnitTest::onRun")]),t._v(" "),e("p",[t._v("Override this method. It should contain test logic.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("onRun")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"unittest-before"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-before"}},[t._v("#")]),t._v(" UnitTest::before")]),t._v(" "),e("p",[t._v("Optionally override this method. It should contain logic run before all test iterations.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("before")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"unittest-after"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-after"}},[t._v("#")]),t._v(" UnitTest::after")]),t._v(" "),e("p",[t._v("Optionally override this method. It should contain logic run after all test iterations.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("after")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"unittest-runtest"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unittest-runtest"}},[t._v("#")]),t._v(" UnitTest::runTest")]),t._v(" "),e("p",[t._v("Run this test repeatedly for specified number of times. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - Test class. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" times - number of times to run this test. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("runTest")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 times"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-run-test"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-run-test"}},[t._v("#")]),t._v(" OATPP_RUN_TEST")]),t._v(" "),e("p",[t._v("Convenience macro to run test. "),e("br"),t._v(" Usage Example:"),e("br"),t._v(" "),e("code",[t._v("OATPP_RUN_TEST(oatpp::test::web::FullTest);")]),t._v(" Running the test 10 times: "),e("code",[t._v("OATPP_RUN_TEST(oatpp::test::web::FullTest, 10);")])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_RUN_TEST(...)")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/101.841b3a95.js b/docs/.vuepress/dist/assets/js/101.841b3a95.js deleted file mode 100644 index 24d4e31c3..000000000 --- a/docs/.vuepress/dist/assets/js/101.841b3a95.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{473:function(t,e,r){"use strict";r.r(e);var s=r(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"clientservertestrunner-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#clientservertestrunner-hpp"}},[t._v("#")]),t._v(" ClientServerTestRunner.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp-test/web/ClientServerTestRunner.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp-test/web/ClientServerTestRunner.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-test/web/ClientServerTestRunner.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"clientservertestrunner"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#clientservertestrunner"}},[t._v("#")]),t._v(" ClientServerTestRunner")]),t._v(" "),r("p",[t._v("Helper class to run Client-Server tests")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" test "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ClientServerTestRunner")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#clientservertestrunner-addcontroller"}},[t._v("addController")])]),t._v(" "),r("td",[t._v("Add controller's endpoints to router")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#clientservertestrunner-run"}},[t._v("run")])]),t._v(" "),r("td",[t._v("Start server, execute code block passed as lambda, stop server.")])])])]),t._v(" "),r("h3",{attrs:{id:"clientservertestrunner-addcontroller"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#clientservertestrunner-addcontroller"}},[t._v("#")]),t._v(" ClientServerTestRunner::addController")]),t._v(" "),r("p",[t._v("Add controller's endpoints to router "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" controller ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("addController")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ApiController"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" controller"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"clientservertestrunner-run"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#clientservertestrunner-run"}},[t._v("#")]),t._v(" ClientServerTestRunner::run")]),t._v(" "),r("p",[t._v("Start server, execute code block passed as lambda, stop server. "),r("ul",[r("li",[r("strong",[t._v("@tparam")]),t._v(" Lambda ")]),r("li",[r("strong",[t._v("@param")]),t._v(" lambda ")]),r("li",[r("strong",[t._v("@param")]),t._v(" timeout ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Lambda"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Lambda"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" lambda"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("hours")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/102.218d638e.js b/docs/.vuepress/dist/assets/js/102.218d638e.js deleted file mode 100644 index 192cae376..000000000 --- a/docs/.vuepress/dist/assets/js/102.218d638e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{474:function(t,e,a){"use strict";a.r(e);var n=a(42),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"asyncconnectionhandler-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-hpp"}},[t._v("#")]),t._v(" AsyncConnectionHandler.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/AsyncConnectionHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/AsyncConnectionHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-websocket")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-websocket/AsyncConnectionHandler.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"asyncconnectionhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler"}},[t._v("#")]),t._v(" AsyncConnectionHandler")]),t._v(" "),a("p",[t._v("Asynchronous websocket connection handler. Extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncConnectionHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-asyncconnectionhandler"}},[t._v("AsyncConnectionHandler")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Constructor. With threadCount. ")]),a("li",[t._v("Constructor. With "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Create shared AsyncConnectionHandler with threadCount. ")]),a("li",[t._v("Create shared AsyncConnectionHandler with "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-setsocketinstancelistener"}},[t._v("setSocketInstanceListener")])]),t._v(" "),a("td",[t._v("Set "),a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener"}},[t._v("AsyncConnectionHandler::SocketInstanceListener")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-handleconnection"}},[t._v("handleConnection")])]),t._v(" "),a("td",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Will call "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor-stop"}},[t._v("oatpp::async::Executor::stop()")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"asyncconnectionhandler-asyncconnectionhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-asyncconnectionhandler"}},[t._v("#")]),t._v(" AsyncConnectionHandler::AsyncConnectionHandler")]),t._v(" "),a("ol",[a("li",[t._v("Constructor. With threadCount. Will create "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" threadCount - number of threads for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncConnectionHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 threadCount "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1),t._v(" "),a("li",[t._v("Constructor. With "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" executor - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncConnectionHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1)]),t._v(" "),a("h3",{attrs:{id:"asyncconnectionhandler-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-createshared"}},[t._v("#")]),t._v(" AsyncConnectionHandler::createShared")]),t._v(" "),a("ol",[a("li",[t._v("Create shared AsyncConnectionHandler with threadCount. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" threadCount - number of threads for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to AsyncConnectionHandler. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 threadCount "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Create shared AsyncConnectionHandler with "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" executor - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to AsyncConnectionHandler. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1)]),t._v(" "),a("h3",{attrs:{id:"asyncconnectionhandler-setsocketinstancelistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-setsocketinstancelistener"}},[t._v("#")]),t._v(" AsyncConnectionHandler::setSocketInstanceListener")]),t._v(" "),a("p",[t._v("Set "),a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener"}},[t._v("AsyncConnectionHandler::SocketInstanceListener")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" listener - "),a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener"}},[t._v("AsyncConnectionHandler::SocketInstanceListener")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSocketInstanceListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SocketInstanceListener"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" listener"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-handleconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-handleconnection"}},[t._v("#")]),t._v(" AsyncConnectionHandler::handleConnection")]),t._v(" "),a("p",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleConnection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-stop"}},[t._v("#")]),t._v(" AsyncConnectionHandler::stop")]),t._v(" "),a("p",[t._v("Will call "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor-stop"}},[t._v("oatpp::async::Executor::stop()")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"asyncconnectionhandler-socketinstancelistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener")]),t._v(" "),a("p",[t._v("Listener for new websocket instances.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncConnectionHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SocketInstanceListener")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::websocket::AsyncWebSocket")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener-asyncwebsocket"}},[t._v("AsyncWebSocket")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::network::ConnectionHandler::ParameterMap")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener-parametermap"}},[t._v("ParameterMap")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener-~socketinstancelistener"}},[t._v("~SocketInstanceListener")])]),t._v(" "),a("td",[t._v("Default virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener-onaftercreate-nonblocking"}},[t._v("onAfterCreate_NonBlocking")])]),t._v(" "),a("td",[t._v("Called when socket is created. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncconnectionhandler-socketinstancelistener-onbeforedestroy-nonblocking"}},[t._v("onBeforeDestroy_NonBlocking")])]),t._v(" "),a("td",[t._v("Called before socket instance is destroyed. "),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"asyncconnectionhandler-socketinstancelistener-asyncwebsocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener-asyncwebsocket"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener::AsyncWebSocket")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("websocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncWebSocket AsyncWebSocket\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-socketinstancelistener-parametermap"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener-parametermap"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener::ParameterMap")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParameterMap ParameterMap\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-socketinstancelistener-socketinstancelistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener-socketinstancelistener"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener::~SocketInstanceListener")]),t._v(" "),a("p",[t._v("Default virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SocketInstanceListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-socketinstancelistener-onaftercreate-nonblocking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener-onaftercreate-nonblocking"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener::onAfterCreate_NonBlocking")]),t._v(" "),a("p",[t._v("Called when socket is created. "),a("br"),t._v(" "),a("strong",[t._v("This method should not block")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" params - "),a("code",[t._v("std::shared_ptr")]),t._v(" to const "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onAfterCreate_NonBlocking")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncconnectionhandler-socketinstancelistener-onbeforedestroy-nonblocking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncconnectionhandler-socketinstancelistener-onbeforedestroy-nonblocking"}},[t._v("#")]),t._v(" AsyncConnectionHandler::SocketInstanceListener::onBeforeDestroy_NonBlocking")]),t._v(" "),a("p",[t._v("Called before socket instance is destroyed. "),a("br"),t._v(" "),a("strong",[t._v("This method should not block")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onBeforeDestroy_NonBlocking")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/103.66fb9c79.js b/docs/.vuepress/dist/assets/js/103.66fb9c79.js deleted file mode 100644 index 6337dfe65..000000000 --- a/docs/.vuepress/dist/assets/js/103.66fb9c79.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{475:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"asyncwebsocket-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-hpp"}},[t._v("#")]),t._v(" AsyncWebSocket.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/AsyncWebSocket.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/AsyncWebSocket.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-websocket")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-websocket/AsyncWebSocket.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"asyncwebsocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket"}},[t._v("#")]),t._v(" AsyncWebSocket")]),t._v(" "),a("p",[t._v("Asynchronous WebSocket.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncWebSocket")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("enable_shared_from_this"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::async::Action")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-action"}},[t._v("Action")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-coroutinestarter"}},[t._v("CoroutineStarter")])]),t._v(" "),a("td",[t._v("Convenince typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-asyncwebsocket"}},[t._v("AsyncWebSocket")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Constructor with Config. ")]),a("li",[t._v("Constructor. ")]),a("li",[t._v("Deleted copy-constructor. ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Create shared AsyncWebSocket with Config. ")]),a("li",[t._v("Create shared AsyncWebSocket. ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-setconfig"}},[t._v("setConfig")])]),t._v(" "),a("td",[t._v("Set WebSocket config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-getconnection"}},[t._v("getConnection")])]),t._v(" "),a("td",[t._v("Get socket connection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-setlistener"}},[t._v("setListener")])]),t._v(" "),a("td",[t._v("Set socket event listener.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-getlistener"}},[t._v("getListener")])]),t._v(" "),a("td",[t._v("Get socket event listener")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listenasync"}},[t._v("listenAsync")])]),t._v(" "),a("td",[t._v("Start listening Coroutine. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-writeframeheaderasync"}},[t._v("writeFrameHeaderAsync")])]),t._v(" "),a("td",[t._v("Send custom frame to peer."),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendframeheaderasync"}},[t._v("sendFrameHeaderAsync")])]),t._v(" "),a("td",[t._v("Send default frame to peer with fin, opcode and messageSize set. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendoneframeasync"}},[t._v("sendOneFrameAsync")])]),t._v(" "),a("td",[t._v("Send one frame message with custom fin and opcode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendcloseasync"}},[t._v("sendCloseAsync")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Send close frame. ")]),a("li",[t._v("Send close frame without message. ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendpingasync"}},[t._v("sendPingAsync")])]),t._v(" "),a("td",[t._v("Send ping frame.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendpongasync"}},[t._v("sendPongAsync")])]),t._v(" "),a("td",[t._v("Send pong frame.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendoneframetextasync"}},[t._v("sendOneFrameTextAsync")])]),t._v(" "),a("td",[t._v("Send one frame text message.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-sendoneframebinaryasync"}},[t._v("sendOneFrameBinaryAsync")])]),t._v(" "),a("td",[t._v("Send one frame binary message.")])])])]),t._v(" "),a("h3",{attrs:{id:"asyncwebsocket-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-action"}},[t._v("#")]),t._v(" AsyncWebSocket::Action")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action Action\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-coroutinestarter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-coroutinestarter"}},[t._v("#")]),t._v(" AsyncWebSocket::CoroutineStarter")]),t._v(" "),a("p",[t._v("Convenince typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter CoroutineStarter\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-asyncwebsocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-asyncwebsocket"}},[t._v("#")]),t._v(" AsyncWebSocket::AsyncWebSocket")]),t._v(" "),a("ol",[a("li",[t._v("Constructor with Config. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" config - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncWebSocket")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" maskOutgoingMessages - for servers should be "),a("code",[t._v("false")]),t._v(". For clients should be "),a("code",[t._v("true")]),t._v(". ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncWebSocket")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" maskOutgoingMessages"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Deleted copy-constructor."),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncWebSocket")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"asyncwebsocket-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-createshared"}},[t._v("#")]),t._v(" AsyncWebSocket::createShared")]),t._v(" "),a("ol",[a("li",[t._v("Create shared AsyncWebSocket with Config. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" config - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to AsyncWebSocket. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Create shared AsyncWebSocket. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" maskOutgoingMessages - for servers should be "),a("code",[t._v("false")]),t._v(". For clients should be "),a("code",[t._v("true")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to AsyncWebSocket. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" maskOutgoingMessages"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"asyncwebsocket-setconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-setconfig"}},[t._v("#")]),t._v(" AsyncWebSocket::setConfig")]),t._v(" "),a("p",[t._v("Set WebSocket config. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" config - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-getconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-getconnection"}},[t._v("#")]),t._v(" AsyncWebSocket::getConnection")]),t._v(" "),a("p",[t._v("Get socket connection. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-setlistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-setlistener"}},[t._v("#")]),t._v(" AsyncWebSocket::setListener")]),t._v(" "),a("p",[t._v("Set socket event listener. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" listener - "),a("a",{attrs:{href:"#asyncwebsocket-listener"}},[t._v("AsyncWebSocket::Listener")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Listener"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" listener"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-getlistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-getlistener"}},[t._v("#")]),t._v(" AsyncWebSocket::getListener")]),t._v(" "),a("p",[t._v("Get socket event listener "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#asyncwebsocket-listener"}},[t._v("AsyncWebSocket::Listener")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Listener"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listenasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listenasync"}},[t._v("#")]),t._v(" AsyncWebSocket::listenAsync")]),t._v(" "),a("p",[t._v("Start listening Coroutine. "),a("br"),t._v(" Read incoming frames and call corresponding methods of listener. See "),a("a",{attrs:{href:"#asyncwebsocket-setlistener"}},[t._v("AsyncWebSocket::setListener()")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("listenAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-writeframeheaderasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-writeframeheaderasync"}},[t._v("#")]),t._v(" AsyncWebSocket::writeFrameHeaderAsync")]),t._v(" "),a("p",[t._v("Send custom frame to peer."),a("br"),t._v(" "),a("em",[t._v("Use this method if you know what you are doing.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" frameHeader - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeFrameHeaderAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Frame"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendframeheaderasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendframeheaderasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendFrameHeaderAsync")]),t._v(" "),a("p",[t._v("Send default frame to peer with fin, opcode and messageSize set. "),a("br"),t._v(" "),a("em",[t._v("Use this method if you know what you are doing.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" frameHeader - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" fin - FIN bit. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" opcode - operation code. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" messageSize - size of the coming message. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendFrameHeaderAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Frame"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" fin"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 messageSize"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendoneframeasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendoneframeasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendOneFrameAsync")]),t._v(" "),a("p",[t._v("Send one frame message with custom fin and opcode. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" fin - FIN bit. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" opcode - operation code. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrameAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" fin"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendcloseasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendcloseasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendCloseAsync")]),t._v(" "),a("ol",[a("li",[t._v("Send close frame. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" code - code of the websocket connection close message. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendCloseAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint16 code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Send close frame without message. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendCloseAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"asyncwebsocket-sendpingasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendpingasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendPingAsync")]),t._v(" "),a("p",[t._v("Send ping frame. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendPingAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendpongasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendpongasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendPongAsync")]),t._v(" "),a("p",[t._v("Send pong frame. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendPongAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendoneframetextasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendoneframetextasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendOneFrameTextAsync")]),t._v(" "),a("p",[t._v("Send one frame text message. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrameTextAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-sendoneframebinaryasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-sendoneframebinaryasync"}},[t._v("#")]),t._v(" AsyncWebSocket::sendOneFrameBinaryAsync")]),t._v(" "),a("p",[t._v("Send one frame binary message. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrameBinaryAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"asyncwebsocket-listener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener")]),t._v(" "),a("p",[t._v("Listener for websocket events.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncWebSocket")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("enable_shared_from_this"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Listener")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs-2"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::async::Action")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-action"}},[t._v("Action")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-coroutinestarter"}},[t._v("CoroutineStarter")])]),t._v(" "),a("td",[t._v("Convenince typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::websocket::AsyncWebSocket")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-asyncwebsocket"}},[t._v("AsyncWebSocket")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-~listener"}},[t._v("~Listener")])]),t._v(" "),a("td",[t._v("Default virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-onping"}},[t._v("onPing")])]),t._v(" "),a("td",[t._v('Called when "ping" frame received')])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-onpong"}},[t._v("onPong")])]),t._v(" "),a("td",[t._v('Called when "pong" frame received')])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-onclose"}},[t._v("onClose")])]),t._v(" "),a("td",[t._v('Called when "close" frame received')])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncwebsocket-listener-readmessage"}},[t._v("readMessage")])]),t._v(" "),a("td",[t._v('Called when "text" or "binary" frame received. '),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"asyncwebsocket-listener-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-action"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::Action")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action Action\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-coroutinestarter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-coroutinestarter"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::CoroutineStarter")]),t._v(" "),a("p",[t._v("Convenince typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter CoroutineStarter\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-asyncwebsocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-asyncwebsocket"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::AsyncWebSocket")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("websocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncWebSocket AsyncWebSocket\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-listener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-listener"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::~Listener")]),t._v(" "),a("p",[t._v("Default virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Listener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-onping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-onping"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::onPing")]),t._v(" "),a("p",[t._v('Called when "ping" frame received '),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - message received with the frame. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". "),a("em",[t._v("To ignore this event return nullptr.")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onPing")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-onpong"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-onpong"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::onPong")]),t._v(" "),a("p",[t._v('Called when "pong" frame received '),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - message received with the frame. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". "),a("br"),t._v(" "),a("em",[t._v("To ignore this event return nullptr.")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onPong")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-onclose"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-onclose"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::onClose")]),t._v(" "),a("p",[t._v('Called when "close" frame received '),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" code - code of the websocket connection close message. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" message - message text. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". "),a("br"),t._v(" "),a("em",[t._v("To ignore this event return nullptr.")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onClose")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint16 code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncwebsocket-listener-readmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncwebsocket-listener-readmessage"}},[t._v("#")]),t._v(" AsyncWebSocket::Listener::readMessage")]),t._v(" "),a("p",[t._v('Called when "text" or "binary" frame received. '),a("br"),t._v(" When all data of message is read, readMessage is called again with size == 0 to indicate end of the message. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/#asyncwebsocket"}},[t._v("oatpp::websocket::AsyncWebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" opcode - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-opcode-text"}},[t._v("oatpp::websocket::Frame::OPCODE_TEXT")]),t._v(" or "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-opcode-binary"}},[t._v("oatpp::websocket::Frame::OPCODE_BINARY")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to received data. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" size - data size. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". "),a("br"),t._v(" "),a("em",[t._v("To ignore this event return nullptr.")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncWebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size size"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/104.10866143.js b/docs/.vuepress/dist/assets/js/104.10866143.js deleted file mode 100644 index 4d17e1e42..000000000 --- a/docs/.vuepress/dist/assets/js/104.10866143.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{477:function(e,s,t){"use strict";t.r(s);var a=t(42),r=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"config-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#config-hpp"}},[e._v("#")]),e._v(" Config.hpp"),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/Config.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),t("OutboundLink")],1),t("br"),e._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/Config.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("code",[e._v("API: latest")]),t("br"),e._v(" "),t("code",[e._v("module: oatpp-websocket")]),t("br"),e._v(" "),t("code",[e._v('#include "oatpp-websocket/Config.hpp"')])]),e._v(" "),t("h2",{attrs:{id:"config"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#config"}},[e._v("#")]),e._v(" Config")]),e._v(" "),t("p",[e._v("WebSocket configuration data.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" websocket "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Config")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("h3",{attrs:{id:"fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Type")]),e._v(" "),t("th",[e._v("Name")]),e._v(" "),t("th",[e._v("Summary")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#config-maskoutgoingmessages"}},[e._v("maskOutgoingMessages")])]),e._v(" "),t("td",[e._v("Mask outgoing messages payload. "),t("br"),e._v(" If "),t("code",[e._v("true")]),e._v(" - Outgoing messages will be masked with random 32-bit masking key. "),t("br"),e._v(" For servers should be "),t("code",[e._v("false")]),e._v(". For clients should be "),t("code",[e._v("true")]),e._v(".")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("v_int32")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#config-readbuffersize"}},[e._v("readBufferSize")])]),e._v(" "),t("td",[e._v("Size of the read buffer in bytes. "),t("br"),e._v(" Buffer used to read payload of the message. "),t("br"),e._v(" The smaller is buffer the more iterations will be made in order to read the whole message.")])])])]),e._v(" "),t("h3",{attrs:{id:"config-maskoutgoingmessages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#config-maskoutgoingmessages"}},[e._v("#")]),e._v(" Config::maskOutgoingMessages")]),e._v(" "),t("p",[e._v("Mask outgoing messages payload. "),t("br"),e._v(" If "),t("code",[e._v("true")]),e._v(" - Outgoing messages will be masked with random 32-bit masking key. "),t("br"),e._v(" For servers should be "),t("code",[e._v("false")]),e._v(". For clients should be "),t("code",[e._v("true")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" maskOutgoingMessages "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n")])])]),t("h3",{attrs:{id:"config-readbuffersize"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#config-readbuffersize"}},[e._v("#")]),e._v(" Config::readBufferSize")]),e._v(" "),t("p",[e._v("Size of the read buffer in bytes. "),t("br"),e._v(" Buffer used to read payload of the message. "),t("br"),e._v(" The smaller is buffer the more iterations will be made in order to read the whole message.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v("v_int32 readBufferSize "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1024")]),e._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/105.e2afaa9b.js b/docs/.vuepress/dist/assets/js/105.e2afaa9b.js deleted file mode 100644 index 81936d801..000000000 --- a/docs/.vuepress/dist/assets/js/105.e2afaa9b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{476:function(t,e,a){"use strict";a.r(e);var n=a(42),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connectionhandler-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-hpp"}},[t._v("#")]),t._v(" ConnectionHandler.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/ConnectionHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/ConnectionHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-websocket")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-websocket/ConnectionHandler.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connectionhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler"}},[t._v("#")]),t._v(" ConnectionHandler")]),t._v(" "),a("p",[t._v("Websocket connection handler. Extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". "),a("br"),t._v(" Will create one thread per each connection to handle communication.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-connectionhandler"}},[t._v("ConnectionHandler")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared ConnectionHandler.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-setsocketinstancelistener"}},[t._v("setSocketInstanceListener")])]),t._v(" "),a("td",[t._v("Set socket instance listener.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-handleconnection"}},[t._v("handleConnection")])]),t._v(" "),a("td",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-stop"}},[t._v("oatpp::network::ConnectionHandler::stop()")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"connectionhandler-connectionhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-connectionhandler"}},[t._v("#")]),t._v(" ConnectionHandler::ConnectionHandler")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionhandler-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-createshared"}},[t._v("#")]),t._v(" ConnectionHandler::createShared")]),t._v(" "),a("p",[t._v("Create shared ConnectionHandler. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionHandler. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionhandler-setsocketinstancelistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-setsocketinstancelistener"}},[t._v("#")]),t._v(" ConnectionHandler::setSocketInstanceListener")]),t._v(" "),a("p",[t._v("Set socket instance listener. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" listener - "),a("a",{attrs:{href:"#connectionhandler-socketinstancelistener"}},[t._v("ConnectionHandler::SocketInstanceListener")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSocketInstanceListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SocketInstanceListener"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" listener"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionhandler-handleconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-handleconnection"}},[t._v("#")]),t._v(" ConnectionHandler::handleConnection")]),t._v(" "),a("p",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleConnection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionhandler-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-stop"}},[t._v("#")]),t._v(" ConnectionHandler::stop")]),t._v(" "),a("p",[t._v("Implementation of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-stop"}},[t._v("oatpp::network::ConnectionHandler::stop()")]),t._v(". Here does nothing.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"connectionhandler-socketinstancelistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-socketinstancelistener"}},[t._v("#")]),t._v(" ConnectionHandler::SocketInstanceListener")]),t._v(" "),a("p",[t._v("Listener for new websocket instances.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SocketInstanceListener")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::websocket::WebSocket")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-socketinstancelistener-websocket"}},[t._v("WebSocket")])]),t._v(" "),a("td",[t._v("Convenience typedef fo "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::network::ConnectionHandler::ParameterMap")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-socketinstancelistener-parametermap"}},[t._v("ParameterMap")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-socketinstancelistener-onaftercreate"}},[t._v("onAfterCreate")])]),t._v(" "),a("td",[t._v("Called when socket is created")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionhandler-socketinstancelistener-onbeforedestroy"}},[t._v("onBeforeDestroy")])]),t._v(" "),a("td",[t._v("Called before socket instance is destroyed.")])])])]),t._v(" "),a("h3",{attrs:{id:"connectionhandler-socketinstancelistener-websocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-socketinstancelistener-websocket"}},[t._v("#")]),t._v(" ConnectionHandler::SocketInstanceListener::WebSocket")]),t._v(" "),a("p",[t._v("Convenience typedef fo "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("websocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WebSocket WebSocket\n")])])]),a("h3",{attrs:{id:"connectionhandler-socketinstancelistener-parametermap"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-socketinstancelistener-parametermap"}},[t._v("#")]),t._v(" ConnectionHandler::SocketInstanceListener::ParameterMap")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParameterMap ParameterMap\n")])])]),a("h3",{attrs:{id:"connectionhandler-socketinstancelistener-onaftercreate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-socketinstancelistener-onaftercreate"}},[t._v("#")]),t._v(" ConnectionHandler::SocketInstanceListener::onAfterCreate")]),t._v(" "),a("p",[t._v("Called when socket is created "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" params - "),a("code",[t._v("std::shared_ptr")]),t._v(" to const "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onAfterCreate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionhandler-socketinstancelistener-onbeforedestroy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-socketinstancelistener-onbeforedestroy"}},[t._v("#")]),t._v(" ConnectionHandler::SocketInstanceListener::onBeforeDestroy")]),t._v(" "),a("p",[t._v("Called before socket instance is destroyed. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" socket - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onBeforeDestroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/106.f0f07181.js b/docs/.vuepress/dist/assets/js/106.f0f07181.js deleted file mode 100644 index 0a034d1b9..000000000 --- a/docs/.vuepress/dist/assets/js/106.f0f07181.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{478:function(t,e,a){"use strict";a.r(e);var r=a(42),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connector-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-hpp"}},[t._v("#")]),t._v(" Connector.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/Connector.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/Connector.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-websocket")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-websocket/Connector.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connector"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector"}},[t._v("#")]),t._v(" Connector")]),t._v(" "),a("p",[t._v("Helper class to do client websocket connect.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connector")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::IOStream")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-connection"}},[t._v("Connection")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::Action")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-action"}},[t._v("Action")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::Headers")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-headers"}},[t._v("Headers")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-connector"}},[t._v("Connector")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Connector.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-connect"}},[t._v("connect")])]),t._v(" "),a("td",[t._v("Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connector-connectasync"}},[t._v("connectAsync")])]),t._v(" "),a("td",[t._v("Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor. "),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"connector-connection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-connection"}},[t._v("#")]),t._v(" Connector::Connection")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream Connection\n")])])]),a("h3",{attrs:{id:"connector-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-action"}},[t._v("#")]),t._v(" Connector::Action")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action Action\n")])])]),a("h3",{attrs:{id:"connector-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-headers"}},[t._v("#")]),t._v(" Connector::Headers")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),a("h3",{attrs:{id:"connector-connector"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-connector"}},[t._v("#")]),t._v(" Connector::Connector")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connectionProvider - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connector")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connector-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-createshared"}},[t._v("#")]),t._v(" Connector::createShared")]),t._v(" "),a("p",[t._v("Create shared Connector. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connectionProvider - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Connector. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connector"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connector-connect"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-connect"}},[t._v("#")]),t._v(" Connector::connect")]),t._v(" "),a("p",[t._v("Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor. "),a("br"),t._v(" "),a("strong",[t._v("(Blocking call)")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" path - path to websocket endpoint. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" headers - websocket connect request headers. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#connector-connection"}},[t._v("Connector::Connection")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("connect")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n")])])]),a("h3",{attrs:{id:"connector-connectasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connector-connectasync"}},[t._v("#")]),t._v(" Connector::connectAsync")]),t._v(" "),a("p",[t._v("Connect to server, do websocket-handshake and return Connection which can be then passed to WebSocket constructor. "),a("br"),t._v(" "),a("strong",[t._v("(Async call)")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" path - path to websocket endpoint. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" headers - websocket connect request headers. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("connectAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/107.95ab863f.js b/docs/.vuepress/dist/assets/js/107.95ab863f.js deleted file mode 100644 index 5dedf9598..000000000 --- a/docs/.vuepress/dist/assets/js/107.95ab863f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{479:function(a,e,t){"use strict";t.r(e);var s=t(42),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"frame-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-hpp"}},[a._v("#")]),a._v(" Frame.hpp"),t("seo")],1),a._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/Frame.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),t("OutboundLink")],1),t("br"),a._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/Frame.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),t("OutboundLink")],1)]),a._v(" "),t("p",[t("code",[a._v("API: latest")]),t("br"),a._v(" "),t("code",[a._v("module: oatpp-websocket")]),t("br"),a._v(" "),t("code",[a._v('#include "oatpp-websocket/Frame.hpp"')])]),a._v(" "),t("h2",{attrs:{id:"frame"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame"}},[a._v("#")]),a._v(" Frame")]),a._v(" "),t("p",[a._v("WebSocket frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" websocket "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Frame")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-continuation"}},[a._v("OPCODE_CONTINUATION")])]),a._v(" "),t("td",[a._v("Continuation frame.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-text"}},[a._v("OPCODE_TEXT")])]),a._v(" "),t("td",[a._v("Text frame.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-binary"}},[a._v("OPCODE_BINARY")])]),a._v(" "),t("td",[a._v("Binary frame.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-close"}},[a._v("OPCODE_CLOSE")])]),a._v(" "),t("td",[a._v("Close frame.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-ping"}},[a._v("OPCODE_PING")])]),a._v(" "),t("td",[a._v("Ping frame.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-opcode-pong"}},[a._v("OPCODE_PONG")])]),a._v(" "),t("td",[a._v("Pong frame.")])])])]),a._v(" "),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Return Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("void")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-packheaderbits"}},[a._v("packHeaderBits")])]),a._v(" "),t("td",[a._v("Serialize "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(".")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("void")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-unpackheaderbits"}},[a._v("unpackHeaderBits")])]),a._v(" "),t("td",[a._v("Deserialize "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(".")])])])]),a._v(" "),t("h3",{attrs:{id:"frame-opcode-continuation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-continuation"}},[a._v("#")]),a._v(" Frame::OPCODE_CONTINUATION")]),a._v(" "),t("p",[a._v("Continuation frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_CONTINUATION "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-opcode-text"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-text"}},[a._v("#")]),a._v(" Frame::OPCODE_TEXT")]),a._v(" "),t("p",[a._v("Text frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_TEXT "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x1")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-opcode-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-binary"}},[a._v("#")]),a._v(" Frame::OPCODE_BINARY")]),a._v(" "),t("p",[a._v("Binary frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_BINARY "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x2")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-opcode-close"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-close"}},[a._v("#")]),a._v(" Frame::OPCODE_CLOSE")]),a._v(" "),t("p",[a._v("Close frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_CLOSE "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x8")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-opcode-ping"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-ping"}},[a._v("#")]),a._v(" Frame::OPCODE_PING")]),a._v(" "),t("p",[a._v("Ping frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_PING "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x9")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-opcode-pong"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-opcode-pong"}},[a._v("#")]),a._v(" Frame::OPCODE_PONG")]),a._v(" "),t("p",[a._v("Pong frame.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("constexpr")]),a._v(" v_uint8 OPCODE_PONG "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0xA")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-packheaderbits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-packheaderbits"}},[a._v("#")]),a._v(" Frame::packHeaderBits")]),a._v(" "),t("p",[a._v("Serialize "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(". "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" bits - out parameter. Two bytes header. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" frameHeader - "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(". ")]),t("li",[t("strong",[a._v("@param")]),a._v(" messageLengthScenario - out parameter. Depending on message length scenario. Message length can be encoded in 1, 2, or 8 bytes. ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("packHeaderBits")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("v_uint16"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" bits"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" Header"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" frameHeader"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_uint8"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" messageLengthScenario"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"frame-unpackheaderbits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-unpackheaderbits"}},[a._v("#")]),a._v(" Frame::unpackHeaderBits")]),a._v(" "),t("p",[a._v("Deserialize "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(". "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" bits - two bytes header. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" frameHeader - out parameter. "),t("a",{attrs:{href:"#frame-header"}},[a._v("Frame::Header")]),a._v(". ")]),t("li",[t("strong",[a._v("@param")]),a._v(" messageLen1 - first byte of encoded message length. ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("unpackHeaderBits")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("v_uint16 bits"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Header"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" frameHeader"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_uint8"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" messageLen1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h2",{attrs:{id:"frame-header"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header"}},[a._v("#")]),a._v(" Frame::Header")]),a._v(" "),t("p",[a._v("Frame header.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" websocket "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Frame")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("struct")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Header")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"fields-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-fin"}},[a._v("fin")])]),a._v(" "),t("td",[a._v("FIN bit.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-rsv1"}},[a._v("rsv1")])]),a._v(" "),t("td",[a._v("RSV1 bit. Should be false.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-rsv2"}},[a._v("rsv2")])]),a._v(" "),t("td",[a._v("RSV2 bit. Should be false.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-rsv3"}},[a._v("rsv3")])]),a._v(" "),t("td",[a._v("RSV3 bit. Should be false.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-opcode"}},[a._v("opcode")])]),a._v(" "),t("td",[a._v("Operation code.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-hasmask"}},[a._v("hasMask")])]),a._v(" "),t("td",[a._v("Mask bit. For client-to-server messages should be "),t("code",[a._v("true")]),a._v(". For server-to-client messages should be "),t("code",[a._v("false")]),a._v(".")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_int64")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-payloadlength"}},[a._v("payloadLength")])]),a._v(" "),t("td",[a._v("Decoded payload length.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_uint8")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#frame-header-mask"}},[a._v("mask")])]),a._v(" "),t("td",[a._v("Payload mask.")])])])]),a._v(" "),t("h3",{attrs:{id:"frame-header-fin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-fin"}},[a._v("#")]),a._v(" Frame::Header::fin")]),a._v(" "),t("p",[a._v("FIN bit.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" fin\n")])])]),t("h3",{attrs:{id:"frame-header-rsv1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-rsv1"}},[a._v("#")]),a._v(" Frame::Header::rsv1")]),a._v(" "),t("p",[a._v("RSV1 bit. Should be false.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" rsv1\n")])])]),t("h3",{attrs:{id:"frame-header-rsv2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-rsv2"}},[a._v("#")]),a._v(" Frame::Header::rsv2")]),a._v(" "),t("p",[a._v("RSV2 bit. Should be false.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" rsv2\n")])])]),t("h3",{attrs:{id:"frame-header-rsv3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-rsv3"}},[a._v("#")]),a._v(" Frame::Header::rsv3")]),a._v(" "),t("p",[a._v("RSV3 bit. Should be false.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" rsv3\n")])])]),t("h3",{attrs:{id:"frame-header-opcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-opcode"}},[a._v("#")]),a._v(" Frame::Header::opcode")]),a._v(" "),t("p",[a._v("Operation code.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("v_uint8 opcode\n")])])]),t("h3",{attrs:{id:"frame-header-hasmask"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-hasmask"}},[a._v("#")]),a._v(" Frame::Header::hasMask")]),a._v(" "),t("p",[a._v("Mask bit. For client-to-server messages should be "),t("code",[a._v("true")]),a._v(". For server-to-client messages should be "),t("code",[a._v("false")]),a._v(".")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" hasMask\n")])])]),t("h3",{attrs:{id:"frame-header-payloadlength"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-payloadlength"}},[a._v("#")]),a._v(" Frame::Header::payloadLength")]),a._v(" "),t("p",[a._v("Decoded payload length.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("v_int64 payloadLength\n")])])]),t("h3",{attrs:{id:"frame-header-mask"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frame-header-mask"}},[a._v("#")]),a._v(" Frame::Header::mask")]),a._v(" "),t("p",[a._v("Payload mask.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("v_uint8 mask"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("4")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/108.c0ee52fa.js b/docs/.vuepress/dist/assets/js/108.c0ee52fa.js deleted file mode 100644 index 2d4ab2006..000000000 --- a/docs/.vuepress/dist/assets/js/108.c0ee52fa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{480:function(e,t,s){"use strict";s.r(t);var a=s(42),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"handshaker-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-hpp"}},[e._v("#")]),e._v(" Handshaker.hpp"),s("seo")],1),e._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/Handshaker.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),s("OutboundLink")],1),s("br"),e._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/Handshaker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),s("OutboundLink")],1)]),e._v(" "),s("p",[s("code",[e._v("API: latest")]),s("br"),e._v(" "),s("code",[e._v("module: oatpp-websocket")]),s("br"),e._v(" "),s("code",[e._v('#include "oatpp-websocket/Handshaker.hpp"')])]),e._v(" "),s("h2",{attrs:{id:"handshaker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker"}},[e._v("#")]),e._v(" Handshaker")]),e._v(" "),s("p",[e._v("Helper class providing WebSocket handshake functionality.")]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" websocket "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Handshaker")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[e._v("#")]),e._v(" Typedefs")]),e._v(" "),s("table",[s("thead",[s("tr",[s("th",[e._v("Type")]),e._v(" "),s("th",[e._v("Name")]),e._v(" "),s("th",[e._v("Summary")])])]),e._v(" "),s("tbody",[s("tr",[s("td",[s("code",[e._v("oatpp::web::protocol::http::outgoing::Response")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-outgoingresponse"}},[e._v("OutgoingResponse")])]),e._v(" "),s("td",[e._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[e._v("oatpp::web::protocol::http::outgoing::Response")]),e._v(".")],1)]),e._v(" "),s("tr",[s("td",[s("code",[e._v("oatpp::web::protocol::http::incoming::Response")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-incomingresponse"}},[e._v("IncomingResponse")])]),e._v(" "),s("td",[e._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[e._v("oatpp::web::protocol::http::incoming::Response")]),e._v(".")],1)])])]),e._v(" "),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),s("table",[s("thead",[s("tr",[s("th",[e._v("Type")]),e._v(" "),s("th",[e._v("Name")]),e._v(" "),s("th",[e._v("Summary")])])]),e._v(" "),s("tbody",[s("tr",[s("td",[s("code",[e._v("v_int32")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-status-ok"}},[e._v("STATUS_OK")])]),e._v(" "),s("td",[e._v("Handshake OK.")])]),e._v(" "),s("tr",[s("td",[s("code",[e._v("v_int32")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-status-server-error"}},[e._v("STATUS_SERVER_ERROR")])]),e._v(" "),s("td",[e._v("Server response-code != 101.")])]),e._v(" "),s("tr",[s("td",[s("code",[e._v("v_int32")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-status-server-wrong-key"}},[e._v("STATUS_SERVER_WRONG_KEY")])]),e._v(" "),s("td",[e._v('Server response "Sec-WebSocket-Accept" header is wrong.')])]),e._v(" "),s("tr",[s("td",[s("code",[e._v("v_int32")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-status-unknown-protocol-suggested"}},[e._v("STATUS_UNKNOWN_PROTOCOL_SUGGESTED")])]),e._v(" "),s("td",[e._v("Server's response contains unexpected headers values")])])])]),e._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),s("table",[s("thead",[s("tr",[s("th",[e._v("Return Type")]),e._v(" "),s("th",[e._v("Name")]),e._v(" "),s("th",[e._v("Summary")])])]),e._v(" "),s("tbody",[s("tr",[s("td",[s("code",[e._v("std::shared_ptr")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-serversidehandshake"}},[e._v("serversideHandshake")])]),e._v(" "),s("td",[e._v("Prepare OutgoingResponse as for websocket-handshake based on requestHeaders.")])]),e._v(" "),s("tr",[s("td",[s("code",[e._v("void")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-clientsidehandshake"}},[e._v("clientsideHandshake")])]),e._v(" "),s("td",[e._v("Set client request headers as for websocket-handshake.")])]),e._v(" "),s("tr",[s("td",[s("code",[e._v("v_int32")])]),e._v(" "),s("td",[s("a",{attrs:{href:"#handshaker-clientsideconfirmhandshake"}},[e._v("clientsideConfirmHandshake")])]),e._v(" "),s("td",[e._v("Check if client's handshake corresponds to server's handshake")])])])]),e._v(" "),s("h3",{attrs:{id:"handshaker-outgoingresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-outgoingresponse"}},[e._v("#")]),e._v(" Handshaker::OutgoingResponse")]),e._v(" "),s("p",[e._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[e._v("oatpp::web::protocol::http::outgoing::Response")]),e._v(".")],1),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("typedef")]),e._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("outgoing"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Response OutgoingResponse\n")])])]),s("h3",{attrs:{id:"handshaker-incomingresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-incomingresponse"}},[e._v("#")]),e._v(" Handshaker::IncomingResponse")]),e._v(" "),s("p",[e._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[e._v("oatpp::web::protocol::http::incoming::Response")]),e._v(".")],1),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("typedef")]),e._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Response IncomingResponse\n")])])]),s("h3",{attrs:{id:"handshaker-status-ok"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-status-ok"}},[e._v("#")]),e._v(" Handshaker::STATUS_OK")]),e._v(" "),s("p",[e._v("Handshake OK.")]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 STATUS_OK "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-status-server-error"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-status-server-error"}},[e._v("#")]),e._v(" Handshaker::STATUS_SERVER_ERROR")]),e._v(" "),s("p",[e._v("Server response-code != 101.")]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 STATUS_SERVER_ERROR "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-status-server-wrong-key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-status-server-wrong-key"}},[e._v("#")]),e._v(" Handshaker::STATUS_SERVER_WRONG_KEY")]),e._v(" "),s("p",[e._v('Server response "Sec-WebSocket-Accept" header is wrong.')]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 STATUS_SERVER_WRONG_KEY "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("2")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-status-unknown-protocol-suggested"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-status-unknown-protocol-suggested"}},[e._v("#")]),e._v(" Handshaker::STATUS_UNKNOWN_PROTOCOL_SUGGESTED")]),e._v(" "),s("p",[e._v("Server's response contains unexpected headers values")]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 STATUS_UNKNOWN_PROTOCOL_SUGGESTED "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-serversidehandshake"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-serversidehandshake"}},[e._v("#")]),e._v(" Handshaker::serversideHandshake")]),e._v(" "),s("p",[e._v("Prepare OutgoingResponse as for websocket-handshake based on requestHeaders. "),s("ul",[s("li",[s("strong",[e._v("@param")]),e._v(" requestHeaders - request headers. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(". ")],1),s("li",[s("strong",[e._v("@param")]),e._v(" connectionUpgradeHandler - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[e._v("oatpp::network::ConnectionHandler")]),e._v(". ")],1),s("li",[s("strong",[e._v("@return")]),e._v(" - "),s("code",[e._v("std::shared_ptr")]),e._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[e._v("oatpp::web::protocol::http::outgoing::Response")]),e._v(". ")],1)])]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("OutgoingResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("serversideHandshake")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" requestHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("ConnectionHandler"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" connectionUpgradeHandler"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-clientsidehandshake"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-clientsidehandshake"}},[e._v("#")]),e._v(" Handshaker::clientsideHandshake")]),e._v(" "),s("p",[e._v("Set client request headers as for websocket-handshake. "),s("ul",[s("li",[s("strong",[e._v("@param")]),e._v(" requestHeaders - headers map. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(". ")],1)])]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("void")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("clientsideHandshake")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" requestHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),s("h3",{attrs:{id:"handshaker-clientsideconfirmhandshake"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#handshaker-clientsideconfirmhandshake"}},[e._v("#")]),e._v(" Handshaker::clientsideConfirmHandshake")]),e._v(" "),s("p",[e._v("Check if client's handshake corresponds to server's handshake "),s("ul",[s("li",[s("strong",[e._v("@param")]),e._v(" clientHandshakeHeaders - previously prepared headers which were sent to server. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(". See "),s("a",{attrs:{href:"#handshaker-clientsidehandshake"}},[e._v("Handshaker::clientsideHandshake()")]),e._v(". ")],1),s("li",[s("strong",[e._v("@param")]),e._v(" serverResponse - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[e._v("oatpp::web::protocol::http::incoming::Response")]),e._v(". ")],1),s("li",[s("strong",[e._v("@return")]),e._v(" - one of: "),s("ul",[s("li",[s("a",{attrs:{href:"#handshaker-status-ok"}},[e._v("Handshaker::STATUS_OK")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#handshaker-status-server-error"}},[e._v("Handshaker::STATUS_SERVER_ERROR")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#handshaker-status-server-wrong-key"}},[e._v("Handshaker::STATUS_SERVER_WRONG_KEY")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#handshaker-status-unknown-protocol-suggested"}},[e._v("Handshaker::STATUS_UNKNOWN_PROTOCOL_SUGGESTED")])])])])])]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("clientsideConfirmHandshake")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" clientHandshakeHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("IncomingResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" serverResponse"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/109.6604970f.js b/docs/.vuepress/dist/assets/js/109.6604970f.js deleted file mode 100644 index 24adb4bbe..000000000 --- a/docs/.vuepress/dist/assets/js/109.6604970f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{481:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"sha1-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1-hpp"}},[t._v("#")]),t._v(" SHA1.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/SHA1.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/SHA1.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-websocket")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-websocket/SHA1.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"sha1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1"}},[t._v("#")]),t._v(" SHA1")]),t._v(" "),s("p",[t._v("SHA1 implementation needed for websocket handshake key.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SHA1")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#sha1-sha1"}},[t._v("SHA1")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#sha1-update"}},[t._v("update")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Update digest. ")]),s("li",[t._v("Update digest from "),s("code",[t._v("std::istream")]),t._v(". ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#sha1-finalbinary"}},[t._v("finalBinary")])]),t._v(" "),s("td",[t._v("Add padding and return the message digest.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#sha1-fromfile"}},[t._v("fromFile")])]),t._v(" "),s("td",[t._v("Get digest of the file content.")])])])]),t._v(" "),s("h3",{attrs:{id:"sha1-sha1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1-sha1"}},[t._v("#")]),t._v(" SHA1::SHA1")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SHA1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"sha1-update"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1-update"}},[t._v("#")]),t._v(" SHA1::update")]),t._v(" "),s("ol",[s("li",[t._v("Update digest. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" s - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" s"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Update digest from "),s("code",[t._v("std::istream")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" is - "),s("code",[t._v("std::istream")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("istream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" is"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"sha1-finalbinary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1-finalbinary"}},[t._v("#")]),t._v(" SHA1::finalBinary")]),t._v(" "),s("p",[t._v("Add padding and return the message digest. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("finalBinary")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"sha1-fromfile"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sha1-fromfile"}},[t._v("#")]),t._v(" SHA1::fromFile")]),t._v(" "),s("p",[t._v("Get digest of the file content. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" filename - name of the file. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/11.4a14f5f9.js b/docs/.vuepress/dist/assets/js/11.4a14f5f9.js deleted file mode 100644 index c8388c22d..000000000 --- a/docs/.vuepress/dist/assets/js/11.4a14f5f9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{383:function(t,e,r){"use strict";r.r(e);var o=r(42),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"about-oat"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#about-oat"}},[t._v("#")]),t._v(" About Oat++ "),r("seo")],1),t._v(" "),r("br"),t._v(" "),r("div",[r("iframe",{attrs:{src:"https://ghbtns.com/github-btn.html?user=oatpp&repo=oatpp&type=star&count=true&size=large",frameborder:"0",scrolling:"0",width:"160px",height:"30px"}}),t._v(" "),r("iframe",{attrs:{src:"https://ghbtns.com/github-btn.html?user=oatpp&repo=oatpp&type=fork&count=true&size=large",frameborder:"0",scrolling:"0",width:"158px",height:"30px"}})]),t._v(" "),r("p",[t._v("Latest version "),r("code",[t._v("1.3.0")]),t._v(" 🎉")]),t._v(" "),r("p",[t._v("Oat++ is an open-source C++ web framework for highly scalable and resource-efficient web applications."),r("br"),t._v("\nIt provides all the necessary components for production-grade development, including:")]),t._v(" "),r("ul",[r("li",[t._v("Advanced REST framework with request parameters mapping and Swagger-UI annotations.\nSee "),r("RouterLink",{attrs:{to:"/docs/components/api-controller/"}},[t._v("Api Controller")]),t._v(" and "),r("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("Api Client")]),t._v(".")],1),t._v(" "),r("li",[t._v("ORM Framework. See "),r("RouterLink",{attrs:{to:"/docs/components/orm/"}},[t._v("Object-Relational Mapping (ORM)")])],1),t._v(" "),r("li",[t._v("WebSocket framework. See "),r("RouterLink",{attrs:{to:"/benchmark/websocket/5-million/"}},[t._v("5-million connections benchmark")]),t._v(".")],1),t._v(" "),r("li",[t._v("Object Mapping. See "),r("RouterLink",{attrs:{to:"/docs/components/dto/"}},[t._v("Data Transfer Object (DTO)")]),t._v(".")],1),t._v(" "),r("li",[t._v("Dependency Injection")]),t._v(" "),r("li",[t._v("Swagger-UI. See "),r("RouterLink",{attrs:{to:"/docs/modules/oatpp-swagger/"}},[t._v("oatpp-swagger")]),t._v(" module.")],1)]),t._v(" "),r("p",[t._v("It's zero-dependency, easy-portable, and high-performance.")]),t._v(" "),r("h2",{attrs:{id:"maintainers"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maintainers"}},[t._v("#")]),t._v(" Maintainers")]),t._v(" "),r("br"),t._v(" "),r("maintainers"),t._v(" "),r("h2",{attrs:{id:"contributors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contributors"}},[t._v("#")]),t._v(" Contributors")]),t._v(" "),r("br"),t._v(" "),r("contributors"),t._v(" "),r("p",[t._v("Contribute to Oat++ with us!"),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("Clone Oat++ on Github"),r("OutboundLink")],1),t._v(" and join our "),r("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[t._v("Dev-Chat on Gitter"),r("OutboundLink")],1)]),t._v(" "),r("h2",{attrs:{id:"oat-user-community"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#oat-user-community"}},[t._v("#")]),t._v(" Oat++ User Community")]),t._v(" "),r("users"),t._v(" "),r("p",[t._v("Join Oat++ user community!"),r("br"),t._v("\nTell us about your use-case - 📬 "),r("a",{attrs:{href:"mailto:contact@oatpp.io"}},[t._v("contact@oatpp.io")])])],1)}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/110.095c82d4.js b/docs/.vuepress/dist/assets/js/110.095c82d4.js deleted file mode 100644 index 1a1dd5e37..000000000 --- a/docs/.vuepress/dist/assets/js/110.095c82d4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{482:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"utils-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-hpp"}},[t._v("#")]),t._v(" Utils.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/Utils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/Utils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-websocket")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-websocket/Utils.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[t._v("#")]),t._v(" Utils")]),t._v(" "),a("p",[t._v("Collection of utility methods.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Utils")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-generatemaskforframe"}},[t._v("generateMaskForFrame")])]),t._v(" "),a("td",[t._v("Generate random mask for frame.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-generatekey"}},[t._v("generateKey")])]),t._v(" "),a("td",[t._v("Generate "),a("code",[t._v('"Sec-WebSocket-Key"')]),t._v(" header")])])])]),t._v(" "),a("h3",{attrs:{id:"utils-generatemaskforframe"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-generatemaskforframe"}},[t._v("#")]),t._v(" Utils::generateMaskForFrame")]),t._v(" "),a("p",[t._v("Generate random mask for frame. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" frameHeader - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateMaskForFrame")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Frame"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-generatekey"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-generatekey"}},[t._v("#")]),t._v(" Utils::generateKey")]),t._v(" "),a("p",[t._v("Generate "),a("code",[t._v('"Sec-WebSocket-Key"')]),t._v(" header "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v('"Sec-WebSocket-Key"')]),t._v(" header value. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateKey")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/111.166ef8eb.js b/docs/.vuepress/dist/assets/js/111.166ef8eb.js deleted file mode 100644 index d39592423..000000000 --- a/docs/.vuepress/dist/assets/js/111.166ef8eb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{483:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"websocket-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-hpp"}},[t._v("#")]),t._v(" WebSocket.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/blob/master/src/oatpp-websocket/WebSocket.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket/issues/new?title=API%20question&body=In%20file:%20oatpp-websocket/WebSocket.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-websocket")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-websocket/WebSocket.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"websocket"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket"}},[t._v("#")]),t._v(" WebSocket")]),t._v(" "),s("p",[t._v("WebSocket.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WebSocket")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-readpayload"}},[t._v("readPayload")])]),t._v(" "),s("td",[t._v("if(shortMessageStream == nullptr) - read call readMessage() method of listener")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-websocket"}},[t._v("WebSocket")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor with Config. ")]),s("li",[t._v("Constructor. ")]),s("li",[t._v("Deleted copy-constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Create shared WebSocket with Config. ")]),s("li",[t._v("Create shared WebSocket. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-setconfig"}},[t._v("setConfig")])]),t._v(" "),s("td",[t._v("Set WebSocket config.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("provider::ResourceHandle")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-getconnection"}},[t._v("getConnection")])]),t._v(" "),s("td",[t._v("Get WebSocket connection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-setlistener"}},[t._v("setListener")])]),t._v(" "),s("td",[t._v("Set WebSocket events listener.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-getlistener"}},[t._v("getListener")])]),t._v(" "),s("td",[t._v("Get socket event listener")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-iterateframe"}},[t._v("iterateFrame")])]),t._v(" "),s("td",[t._v("Read one frame from connection and call corresponding methods of listener. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listen"}},[t._v("listen")])]),t._v(" "),s("td",[t._v("Blocks until stopListening() is called or error occurred")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-stoplistening"}},[t._v("stopListening")])]),t._v(" "),s("td",[t._v("Break listen loop. See "),s("a",{attrs:{href:"#websocket-listen"}},[t._v("WebSocket::listen()")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-writeframeheader"}},[t._v("writeFrameHeader")])]),t._v(" "),s("td",[t._v("Send custom frame to peer. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendframeheader"}},[t._v("sendFrameHeader")])]),t._v(" "),s("td",[t._v("Send default frame to peer with fin, opcode and messageSize set. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendoneframe"}},[t._v("sendOneFrame")])]),t._v(" "),s("td",[t._v("Send one frame message with custom fin and opcode.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendclose"}},[t._v("sendClose")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Send close frame. ")]),s("li",[t._v("Send close frame without message. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendping"}},[t._v("sendPing")])]),t._v(" "),s("td",[t._v("Send ping frame.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendpong"}},[t._v("sendPong")])]),t._v(" "),s("td",[t._v("Send pong message.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendoneframetext"}},[t._v("sendOneFrameText")])]),t._v(" "),s("td",[t._v("Send one-frame text message.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-sendoneframebinary"}},[t._v("sendOneFrameBinary")])]),t._v(" "),s("td",[t._v("Send one-frame binary message.")])])])]),t._v(" "),s("h3",{attrs:{id:"websocket-readpayload"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-readpayload"}},[t._v("#")]),t._v(" WebSocket::readPayload")]),t._v(" "),s("p",[t._v("if(shortMessageStream == nullptr) - read call readMessage() method of listener if(shortMessageStream) - read message to shortMessageStream. Don't call listener")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readPayload")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Frame"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" shortMessageStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-websocket"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-websocket"}},[t._v("#")]),t._v(" WebSocket::WebSocket")]),t._v(" "),s("ol",[s("li",[t._v("Constructor with Config. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connection - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" config - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WebSocket")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connection - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" maskOutgoingMessages - for servers should be "),s("code",[t._v("false")]),t._v(". For clients should be "),s("code",[t._v("true")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WebSocket")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" maskOutgoingMessages"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Deleted copy-constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WebSocket")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"websocket-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-createshared"}},[t._v("#")]),t._v(" WebSocket::createShared")]),t._v(" "),s("ol",[s("li",[t._v("Create shared WebSocket with Config. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connection - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" config - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to WebSocket. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Create shared WebSocket. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connection - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" maskOutgoingMessages - for servers should be "),s("code",[t._v("false")]),t._v(". For clients should be "),s("code",[t._v("true")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" maskOutgoingMessages"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"websocket-setconfig"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-setconfig"}},[t._v("#")]),t._v(" WebSocket::setConfig")]),t._v(" "),s("p",[t._v("Set WebSocket config. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" config - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/#config"}},[t._v("oatpp::websocket::Config")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConfig")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-getconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-getconnection"}},[t._v("#")]),t._v(" WebSocket::getConnection")]),t._v(" "),s("p",[t._v("Get WebSocket connection. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-setlistener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-setlistener"}},[t._v("#")]),t._v(" WebSocket::setListener")]),t._v(" "),s("p",[t._v("Set WebSocket events listener. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" listener - "),s("a",{attrs:{href:"#websocket-listener"}},[t._v("WebSocket::Listener")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setListener")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Listener"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" listener"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-getlistener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-getlistener"}},[t._v("#")]),t._v(" WebSocket::getListener")]),t._v(" "),s("p",[t._v("Get socket event listener "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#websocket-listener"}},[t._v("WebSocket::Listener")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Listener"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getListener")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-iterateframe"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-iterateframe"}},[t._v("#")]),t._v(" WebSocket::iterateFrame")]),t._v(" "),s("p",[t._v("Read one frame from connection and call corresponding methods of listener. "),s("br"),t._v(" "),s("em",[t._v("Use this method if you know what you are doing.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" frameHeader - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterateFrame")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Frame"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-listen"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listen"}},[t._v("#")]),t._v(" WebSocket::listen")]),t._v(" "),s("p",[t._v("Blocks until stopListening() is called or error occurred Read incoming frames and call corresponding methods of listener. See "),s("a",{attrs:{href:"#websocket-setlistener"}},[t._v("WebSocket::setListener()")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("listen")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-stoplistening"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-stoplistening"}},[t._v("#")]),t._v(" WebSocket::stopListening")]),t._v(" "),s("p",[t._v("Break listen loop. See "),s("a",{attrs:{href:"#websocket-listen"}},[t._v("WebSocket::listen()")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stopListening")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-writeframeheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-writeframeheader"}},[t._v("#")]),t._v(" WebSocket::writeFrameHeader")]),t._v(" "),s("p",[t._v("Send custom frame to peer. "),s("br"),t._v(" "),s("em",[t._v("Use this method if you know what you are doing.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" frameHeader - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeFrameHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Frame"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendframeheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendframeheader"}},[t._v("#")]),t._v(" WebSocket::sendFrameHeader")]),t._v(" "),s("p",[t._v("Send default frame to peer with fin, opcode and messageSize set. "),s("br"),t._v(" "),s("em",[t._v("Use this method if you know what you are doing.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" frameHeader - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-header"}},[t._v("oatpp::websocket::Frame::Header")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" fin - FIN bit. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" opcode - operation code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" messageSize - coming message size. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendFrameHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Frame"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" frameHeader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" fin"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 messageSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendoneframe"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendoneframe"}},[t._v("#")]),t._v(" WebSocket::sendOneFrame")]),t._v(" "),s("p",[t._v("Send one frame message with custom fin and opcode. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" fin - FIN bit. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" opcode - operation code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" on success, "),s("code",[t._v("false")]),t._v(" on error. if "),s("code",[t._v("false")]),t._v(" returned socket should be closed manually. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrame")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" fin"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendclose"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendclose"}},[t._v("#")]),t._v(" WebSocket::sendClose")]),t._v(" "),s("ol",[s("li",[t._v("Send close frame. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" code - close message code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendClose")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint16 code"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Send close frame without message. "),s("ul",[s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendClose")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"websocket-sendping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendping"}},[t._v("#")]),t._v(" WebSocket::sendPing")]),t._v(" "),s("p",[t._v("Send ping frame. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendPing")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendpong"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendpong"}},[t._v("#")]),t._v(" WebSocket::sendPong")]),t._v(" "),s("p",[t._v("Send pong message. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendPong")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendoneframetext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendoneframetext"}},[t._v("#")]),t._v(" WebSocket::sendOneFrameText")]),t._v(" "),s("p",[t._v("Send one-frame text message. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrameText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-sendoneframebinary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-sendoneframebinary"}},[t._v("#")]),t._v(" WebSocket::sendOneFrameBinary")]),t._v(" "),s("p",[t._v("Send one-frame binary message. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" message - message text. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("runtime_error")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendOneFrameBinary")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"websocket-listener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener"}},[t._v("#")]),t._v(" WebSocket::Listener")]),t._v(" "),s("p",[t._v("Listener for websocket events.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" websocket "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WebSocket")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Listener")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::websocket::WebSocket")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-websocket"}},[t._v("WebSocket")])]),t._v(" "),s("td",[t._v("Convenience typedef fo "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-~listener"}},[t._v("~Listener")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-onping"}},[t._v("onPing")])]),t._v(" "),s("td",[t._v('Called when "ping" frame received')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-onpong"}},[t._v("onPong")])]),t._v(" "),s("td",[t._v('Called when "pong" frame received')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-onclose"}},[t._v("onClose")])]),t._v(" "),s("td",[t._v('Called when "close" frame received')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#websocket-listener-readmessage"}},[t._v("readMessage")])]),t._v(" "),s("td",[t._v('Called when "text" or "binary" frame received. '),s("br")])])])]),t._v(" "),s("h3",{attrs:{id:"websocket-listener-websocket"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-websocket"}},[t._v("#")]),t._v(" WebSocket::Listener::WebSocket")]),t._v(" "),s("p",[t._v("Convenience typedef fo "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("websocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WebSocket WebSocket\n")])])]),s("h3",{attrs:{id:"websocket-listener-listener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-listener"}},[t._v("#")]),t._v(" WebSocket::Listener::~Listener")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Listener")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-listener-onping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-onping"}},[t._v("#")]),t._v(" WebSocket::Listener::onPing")]),t._v(" "),s("p",[t._v('Called when "ping" frame received '),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" socket - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" message - message text; "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onPing")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-listener-onpong"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-onpong"}},[t._v("#")]),t._v(" WebSocket::Listener::onPong")]),t._v(" "),s("p",[t._v('Called when "pong" frame received '),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" socket - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" message - message text; "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onPong")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-listener-onclose"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-onclose"}},[t._v("#")]),t._v(" WebSocket::Listener::onClose")]),t._v(" "),s("p",[t._v('Called when "close" frame received '),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" socket - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" code - close frame message code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message - message text; "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onClose")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint16 code"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"websocket-listener-readmessage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#websocket-listener-readmessage"}},[t._v("#")]),t._v(" WebSocket::Listener::readMessage")]),t._v(" "),s("p",[t._v('Called when "text" or "binary" frame received. '),s("br"),t._v(" When all data of message is read, readMessage is called again with size == 0 to indicate end of the message. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" socket - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/#websocket"}},[t._v("oatpp::websocket::WebSocket")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" opcode - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-opcode-text"}},[t._v("oatpp::websocket::Frame::OPCODE_TEXT")]),t._v(" or "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/#frame-opcode-binary"}},[t._v("oatpp::websocket::Frame::OPCODE_BINARY")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" data - pointer to message data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size - data size. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" WebSocket"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint8 opcode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/112.dfef3aec.js b/docs/.vuepress/dist/assets/js/112.dfef3aec.js deleted file mode 100644 index 03e207249..000000000 --- a/docs/.vuepress/dist/assets/js/112.dfef3aec.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{484:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"encoderprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider-hpp"}},[t._v("#")]),t._v(" EncoderProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib/blob/master/src/oatpp-zlib/EncoderProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib/issues/new?title=API%20question&body=In%20file:%20oatpp-zlib/EncoderProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-zlib")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-zlib/EncoderProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"deflateencoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoderprovider"}},[t._v("#")]),t._v(" DeflateEncoderProvider")]),t._v(" "),r("p",[t._v('EncoderProvider for "deflate" encoding.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DeflateEncoderProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#deflateencoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),r("td",[t._v("Get encoding name.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#deflateencoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),r("td",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding.")],1)])])]),t._v(" "),r("h3",{attrs:{id:"deflateencoderprovider-getencodingname"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoderprovider-getencodingname"}},[t._v("#")]),t._v(" DeflateEncoderProvider::getEncodingName")]),t._v(" "),r("p",[t._v("Get encoding name. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"deflateencoderprovider-getprocessor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoderprovider-getprocessor"}},[t._v("#")]),t._v(" DeflateEncoderProvider::getProcessor")]),t._v(" "),r("p",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h2",{attrs:{id:"deflatedecoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoderprovider"}},[t._v("#")]),t._v(" DeflateDecoderProvider")]),t._v(" "),r("p",[t._v('EncoderProvider for "deflate" decoding.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DeflateDecoderProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#deflatedecoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),r("td",[t._v("Get encoding name.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#deflatedecoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),r("td",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding.")],1)])])]),t._v(" "),r("h3",{attrs:{id:"deflatedecoderprovider-getencodingname"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoderprovider-getencodingname"}},[t._v("#")]),t._v(" DeflateDecoderProvider::getEncodingName")]),t._v(" "),r("p",[t._v("Get encoding name. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"deflatedecoderprovider-getprocessor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoderprovider-getprocessor"}},[t._v("#")]),t._v(" DeflateDecoderProvider::getProcessor")]),t._v(" "),r("p",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h2",{attrs:{id:"gzipencoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipencoderprovider"}},[t._v("#")]),t._v(" GzipEncoderProvider")]),t._v(" "),r("p",[t._v('EncoderProvider for "gzip" encoding.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("GzipEncoderProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#gzipencoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),r("td",[t._v("Get encoding name.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#gzipencoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),r("td",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding.")],1)])])]),t._v(" "),r("h3",{attrs:{id:"gzipencoderprovider-getencodingname"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipencoderprovider-getencodingname"}},[t._v("#")]),t._v(" GzipEncoderProvider::getEncodingName")]),t._v(" "),r("p",[t._v("Get encoding name. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"gzipencoderprovider-getprocessor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipencoderprovider-getprocessor"}},[t._v("#")]),t._v(" GzipEncoderProvider::getProcessor")]),t._v(" "),r("p",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h2",{attrs:{id:"gzipdecoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipdecoderprovider"}},[t._v("#")]),t._v(" GzipDecoderProvider")]),t._v(" "),r("p",[t._v('EncoderProvider for "gzip" decoding.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("GzipDecoderProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#gzipdecoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),r("td",[t._v("Get encoding name.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#gzipdecoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),r("td",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding.")],1)])])]),t._v(" "),r("h3",{attrs:{id:"gzipdecoderprovider-getencodingname"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipdecoderprovider-getencodingname"}},[t._v("#")]),t._v(" GzipDecoderProvider::getEncodingName")]),t._v(" "),r("p",[t._v("Get encoding name. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"gzipdecoderprovider-getprocessor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gzipdecoderprovider-getprocessor"}},[t._v("#")]),t._v(" GzipDecoderProvider::getProcessor")]),t._v(" "),r("p",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/113.2d228da9.js b/docs/.vuepress/dist/assets/js/113.2d228da9.js deleted file mode 100644 index bda1dcfca..000000000 --- a/docs/.vuepress/dist/assets/js/113.2d228da9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{485:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"processor-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-hpp"}},[t._v("#")]),t._v(" Processor.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib/blob/master/src/oatpp-zlib/Processor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib/issues/new?title=API%20question&body=In%20file:%20oatpp-zlib/Processor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-zlib")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-zlib/Processor.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"deflateencoder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoder"}},[t._v("#")]),t._v(" DeflateEncoder")]),t._v(" "),a("p",[t._v("Deflate encoder.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DeflateEncoder")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflateencoder-deflateencoder"}},[t._v("DeflateEncoder")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflateencoder-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),a("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflateencoder-iterate"}},[t._v("iterate")])]),t._v(" "),a("td",[t._v("Process data.")])])])]),t._v(" "),a("h3",{attrs:{id:"deflateencoder-deflateencoder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoder-deflateencoder"}},[t._v("#")]),t._v(" DeflateEncoder::DeflateEncoder")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" bufferSize ")]),a("li",[a("strong",[t._v("@param")]),t._v(" compressionLevel ")]),a("li",[a("strong",[t._v("@param")]),t._v(" useGzip ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DeflateEncoder")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size bufferSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" gzip "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 compressionLevel "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Z_DEFAULT_COMPRESSION"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deflateencoder-suggestinputstreamreadsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoder-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" DeflateEncoder::suggestInputStreamReadSize")]),t._v(" "),a("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"deflateencoder-iterate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflateencoder-iterate"}},[t._v("#")]),t._v(" DeflateEncoder::iterate")]),t._v(" "),a("p",[t._v("Process data. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),a("code",[t._v("dataIn")]),t._v(" buffer pointer to "),a("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"deflatedecoder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoder"}},[t._v("#")]),t._v(" DeflateDecoder")]),t._v(" "),a("p",[t._v("Deflate decoder.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" zlib "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DeflateDecoder")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflatedecoder-deflatedecoder"}},[t._v("DeflateDecoder")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflatedecoder-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),a("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deflatedecoder-iterate"}},[t._v("iterate")])]),t._v(" "),a("td",[t._v("Process data.")])])])]),t._v(" "),a("h3",{attrs:{id:"deflatedecoder-deflatedecoder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoder-deflatedecoder"}},[t._v("#")]),t._v(" DeflateDecoder::DeflateDecoder")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" bufferSize ")]),a("li",[a("strong",[t._v("@param")]),t._v(" gzip ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DeflateDecoder")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size bufferSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" gzip "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deflatedecoder-suggestinputstreamreadsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoder-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" DeflateDecoder::suggestInputStreamReadSize")]),t._v(" "),a("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"deflatedecoder-iterate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deflatedecoder-iterate"}},[t._v("#")]),t._v(" DeflateDecoder::iterate")]),t._v(" "),a("p",[t._v("Process data. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),a("code",[t._v("dataIn")]),t._v(" buffer pointer to "),a("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/114.0a81abda.js b/docs/.vuepress/dist/assets/js/114.0a81abda.js deleted file mode 100644 index c19cfc9ca..000000000 --- a/docs/.vuepress/dist/assets/js/114.0a81abda.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{486:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"crc-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#crc-hpp"}},[t._v("#")]),t._v(" CRC.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/algorithm/CRC.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/algorithm/CRC.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/algorithm/CRC.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"crc32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#crc32"}},[t._v("#")]),t._v(" CRC32")]),t._v(" "),e("p",[t._v("Implementation of CRC-32. Cyclic redundancy check algorithm.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" algorithm "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CRC32")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const p_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#crc32-table-04c11db7"}},[t._v("TABLE_04C11DB7")])]),t._v(" "),e("td",[t._v("Precalculated table")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("p_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#crc32-generatetable"}},[t._v("generateTable")])]),t._v(" "),e("td",[t._v("Generates v_uint32 table[256] for polynomial")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#crc32-calc"}},[t._v("calc")])]),t._v(" "),e("td",[t._v("Calculate CRC32 value for buffer of defined size")])])])]),t._v(" "),e("h3",{attrs:{id:"crc32-table-04c11db7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#crc32-table-04c11db7"}},[t._v("#")]),t._v(" CRC32::TABLE_04C11DB7")]),t._v(" "),e("p",[t._v("Precalculated table")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" p_uint32 TABLE_04C11DB7\n")])])]),e("h3",{attrs:{id:"crc32-generatetable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#crc32-generatetable"}},[t._v("#")]),t._v(" CRC32::generateTable")]),t._v(" "),e("p",[t._v("Generates v_uint32 table[256] for polynomial")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" p_uint32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateTable")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 poly"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"crc32-calc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#crc32-calc"}},[t._v("#")]),t._v(" CRC32::calc")]),t._v(" "),e("p",[t._v("Calculate CRC32 value for buffer of defined size "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size ")]),e("li",[e("strong",[t._v("@param")]),t._v(" crc ")]),e("li",[e("strong",[t._v("@param")]),t._v(" initValue ")]),e("li",[e("strong",[t._v("@param")]),t._v(" xorOut ")]),e("li",[e("strong",[t._v("@param")]),t._v(" table ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - CRC32 value (v_uint32) ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_uint32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("calc")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 crc "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 initValue "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0xFFFFFFFF")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 xorOut "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0xFFFFFFFF")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_uint32 table "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TABLE_04C11DB7"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/115.60f6c992.js b/docs/.vuepress/dist/assets/js/115.60f6c992.js deleted file mode 100644 index eb763c075..000000000 --- a/docs/.vuepress/dist/assets/js/115.60f6c992.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{487:function(t,e,a){"use strict";a.r(e);var s=a(42),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"apiclient-define-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-define-hpp"}},[t._v("#")]),t._v(" ApiClient_define.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/ApiClient_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/ApiClient_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/codegen/ApiClient_define.hpp"')])]),t._v(" "),a("p",[t._v('This file contains "defines" for ApiClient code generating macro. '),a("br"),t._v("\nUsage:"),a("br")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generated API-Calls.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient)")]),t._v("\n")])])]),a("p",[a("em",[t._v("For details see:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://oatpp.io/docs/components/api-client/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ApiClient component"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/ApiClient/#apiclient"}},[t._v("oatpp::web::client::ApiClient")])],1)])]),t._v(" "),a("h2",{attrs:{id:"api-client-init"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-client-init"}},[t._v("#")]),t._v(" API_CLIENT_INIT")]),t._v(" "),a("p",[t._v("Codegen macoro to be used in classes extending "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/ApiClient/#apiclient"}},[t._v("oatpp::web::client::ApiClient")]),t._v(" to generate required fields/methods/constructors for ApiClient. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" NAME - name of the ApiClient class. ")])])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" API_CLIENT_INIT(NAME)")]),t._v("\n")])])]),a("h2",{attrs:{id:"api-call"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-call"}},[t._v("#")]),t._v(" API_CALL")]),t._v(" "),a("p",[t._v("Codegen macoro to be used in "),a("code",[t._v("oatpp::web::client::ApiClient")]),t._v(" to generate REST API-Calls. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' METHOD - Http method ("GET", "POST", "PUT", etc.) ')]),a("li",[a("strong",[t._v("@param")]),t._v(" PATH - Path to endpoint (without host) ")]),a("li",[a("strong",[t._v("@param")]),t._v(" NAME - Name of the generated method ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" API_CALL(METHOD, PATH, ...)")]),t._v("\n")])])]),a("h2",{attrs:{id:"api-call-async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-call-async"}},[t._v("#")]),t._v(" API_CALL_ASYNC")]),t._v(" "),a("p",[t._v("Codegen macro to be used in "),a("code",[t._v("oatpp::web::client::ApiClient")]),t._v(" to generate Asynchronous REST API-Calls. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' METHOD - Http method ("GET", "POST", "PUT", etc.) ')]),a("li",[a("strong",[t._v("@param")]),t._v(" PATH - Path to endpoint (without host) ")]),a("li",[a("strong",[t._v("@param")]),t._v(" NAME - Name of the generated method ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult>. ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" API_CALL_ASYNC(METHOD, PATH, ...)")]),t._v("\n")])])]),a("h2",{attrs:{id:"api-call-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-call-headers"}},[t._v("#")]),t._v(" API_CALL_HEADERS")]),t._v(" "),a("p",[t._v("Codegen macro to add default headers to API_CALL")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" API_CALL_HEADERS(NAME)")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/116.3bfaaf9c.js b/docs/.vuepress/dist/assets/js/116.3bfaaf9c.js deleted file mode 100644 index 6e4670459..000000000 --- a/docs/.vuepress/dist/assets/js/116.3bfaaf9c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{488:function(t,e,n){"use strict";n.r(e);var a=n(42),p=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"apiclient-undef-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-undef-hpp"}},[t._v("#")]),t._v(" ApiClient_undef.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/ApiClient_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/ApiClient_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp/codegen/ApiClient_undef.hpp"')])]),t._v(" "),n("p",[t._v('This file contains "undefs" for ApiClient code generating macro. '),n("br"),t._v("\nUsage:"),n("br")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generated API-Calls.")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient)")]),t._v("\n")])])]),n("p",[n("em",[t._v("For details see:")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://oatpp.io/docs/components/api-client/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ApiClient component"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/ApiClient/#apiclient"}},[t._v("oatpp::web::client::ApiClient")])],1)])])])}),[],!1,null,null,null);e.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/117.f6469c6b.js b/docs/.vuepress/dist/assets/js/117.f6469c6b.js deleted file mode 100644 index 2a61a83e3..000000000 --- a/docs/.vuepress/dist/assets/js/117.f6469c6b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{489:function(e,t,r){"use strict";r.r(t);var n=r(42),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"apicontroller-define-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-define-hpp"}},[e._v("#")]),e._v(" ApiController_define.hpp"),r("seo")],1),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/ApiController_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),r("OutboundLink")],1),r("br"),e._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/ApiController_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),r("OutboundLink")],1)]),e._v(" "),r("p",[r("code",[e._v("API: latest")]),r("br"),e._v(" "),r("code",[e._v("module: oatpp")]),r("br"),e._v(" "),r("code",[e._v('#include "oatpp/codegen/ApiController_define.hpp"')])]),e._v(" "),r("p",[e._v('This file contains "defines" for ApiController code generating macro. '),r("br"),e._v("\nUsage:"),r("br")]),e._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),r("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("include")]),e._v(" OATPP_CODEGEN_BEGIN(ApiController)")]),e._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("\n"),r("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// Generated Endpoints.")]),e._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("\n"),r("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),r("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("include")]),e._v(" OATPP_CODEGEN_END(ApiController)")]),e._v("\n")])])]),r("p",[r("em",[e._v("For details see:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://oatpp.io/docs/components/api-controller/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ApiController component"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/#apicontroller"}},[e._v("oatpp::web::server::api::ApiController")])],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/118.4c8183f5.js b/docs/.vuepress/dist/assets/js/118.4c8183f5.js deleted file mode 100644 index f94e53ac0..000000000 --- a/docs/.vuepress/dist/assets/js/118.4c8183f5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{490:function(t,e,r){"use strict";r.r(e);var n=r(42),o=Object(n.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"apicontroller-undef-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-undef-hpp"}},[t._v("#")]),t._v(" ApiController_undef.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/ApiController_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/ApiController_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/codegen/ApiController_undef.hpp"')])]),t._v(" "),r("p",[t._v('This file contains "undefs" for ApiController code generating macro. '),r("br"),t._v("\nUsage:"),r("br")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),r("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiController)")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generated Endpoints.")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),r("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiController)")]),t._v("\n")])])]),r("p",[r("em",[t._v("For details see:")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://oatpp.io/docs/components/api-controller/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ApiController component"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/#apicontroller"}},[t._v("oatpp::web::server::api::ApiController")])],1)])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/119.35784bb9.js b/docs/.vuepress/dist/assets/js/119.35784bb9.js deleted file mode 100644 index 2a9673972..000000000 --- a/docs/.vuepress/dist/assets/js/119.35784bb9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{491:function(t,e,n){"use strict";n.r(e);var a=n(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"dto-define-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#dto-define-hpp"}},[t._v("#")]),t._v(" DTO_define.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/DTO_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/DTO_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp/codegen/DTO_define.hpp"')])]),t._v(" "),n("p",[t._v('This file contains "defines" for DTO code generating macro. '),n("br"),t._v("\nUsage:"),n("br")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO)")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generated Endpoints.")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO)")]),t._v("\n")])])]),n("p",[n("em",[t._v("For details see:")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),n("OutboundLink")],1)]),t._v(" "),n("li",[t._v("oatpp::data::mapping::type::Object")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/12.47c52dff.js b/docs/.vuepress/dist/assets/js/12.47c52dff.js deleted file mode 100644 index 8a6af53e6..000000000 --- a/docs/.vuepress/dist/assets/js/12.47c52dff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{384:function(t,p,o){"use strict";o.r(p);var e=o(42),a=Object(e.a)({},(function(){var t=this,p=t.$createElement,o=t._self._c||p;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"welcome-to-oat-api-index"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#welcome-to-oat-api-index"}},[t._v("#")]),t._v(" Welcome To Oat++ API Index!")]),t._v(" "),o("p",[t._v("Index for API version: "),o("code",[t._v("latest")])]),t._v(" "),o("h2",{attrs:{id:"module-oatpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp"}},[t._v("#")]),t._v(" Module oatpp")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-test/Checker/"}},[t._v("oatpp-test/Checker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-test/UnitTest/"}},[t._v("oatpp-test/UnitTest.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-test/web/ClientServerTestRunner/"}},[t._v("oatpp-test/web/ClientServerTestRunner.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/algorithm/CRC/"}},[t._v("oatpp/algorithm/CRC.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/ApiClient_define/"}},[t._v("oatpp/codegen/ApiClient_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/ApiClient_undef/"}},[t._v("oatpp/codegen/ApiClient_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/ApiController_define/"}},[t._v("oatpp/codegen/ApiController_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/ApiController_undef/"}},[t._v("oatpp/codegen/ApiController_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/DTO_define/"}},[t._v("oatpp/codegen/DTO_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/DTO_undef/"}},[t._v("oatpp/codegen/DTO_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/DbClient_define/"}},[t._v("oatpp/codegen/DbClient_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/DbClient_undef/"}},[t._v("oatpp/codegen/DbClient_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/auth_define/"}},[t._v("oatpp/codegen/api_controller/auth_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/auth_undef/"}},[t._v("oatpp/codegen/api_controller/auth_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/"}},[t._v("oatpp/codegen/api_controller/base_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_undef/"}},[t._v("oatpp/codegen/api_controller/base_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/bundle_define/"}},[t._v("oatpp/codegen/api_controller/bundle_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/bundle_undef/"}},[t._v("oatpp/codegen/api_controller/bundle_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/cors_define/"}},[t._v("oatpp/codegen/api_controller/cors_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/cors_undef/"}},[t._v("oatpp/codegen/api_controller/cors_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/dto/base_define/"}},[t._v("oatpp/codegen/dto/base_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/dto/base_undef/"}},[t._v("oatpp/codegen/dto/base_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/dto/enum_define/"}},[t._v("oatpp/codegen/dto/enum_define.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/dto/enum_undef/"}},[t._v("oatpp/codegen/dto/enum_undef.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/"}},[t._v("oatpp/core/IODefinitions.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/"}},[t._v("oatpp/core/Types.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/"}},[t._v("oatpp/core/async/Coroutine.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/CoroutineWaitList/"}},[t._v("oatpp/core/async/CoroutineWaitList.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Error/"}},[t._v("oatpp/core/async/Error.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/"}},[t._v("oatpp/core/async/Executor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Lock/"}},[t._v("oatpp/core/async/Lock.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Processor/"}},[t._v("oatpp/core/async/Processor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/utils/FastQueue/"}},[t._v("oatpp/core/async/utils/FastQueue.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/IOEventWorker/"}},[t._v("oatpp/core/async/worker/IOEventWorker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/IOWorker/"}},[t._v("oatpp/core/async/worker/IOWorker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/TimerWorker/"}},[t._v("oatpp/core/async/worker/TimerWorker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/Worker/"}},[t._v("oatpp/core/async/worker/Worker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/CommandLineArguments/"}},[t._v("oatpp/core/base/CommandLineArguments.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Config/"}},[t._v("oatpp/core/base/Config.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/"}},[t._v("oatpp/core/base/Countable.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/"}},[t._v("oatpp/core/base/Environment.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/ObjectHandle/"}},[t._v("oatpp/core/base/ObjectHandle.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/concurrency/SpinLock/"}},[t._v("oatpp/core/concurrency/SpinLock.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/concurrency/Thread/"}},[t._v("oatpp/core/concurrency/Thread.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/Bundle/"}},[t._v("oatpp/core/data/Bundle.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/FIFOBuffer/"}},[t._v("oatpp/core/data/buffer/FIFOBuffer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/IOBuffer/"}},[t._v("oatpp/core/data/buffer/IOBuffer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/"}},[t._v("oatpp/core/data/buffer/Processor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/"}},[t._v("oatpp/core/data/mapping/ObjectMapper.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/"}},[t._v("oatpp/core/data/mapping/TypeResolver.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Any/"}},[t._v("oatpp/core/data/mapping/type/Any.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Collection/"}},[t._v("oatpp/core/data/mapping/type/Collection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Enum/"}},[t._v("oatpp/core/data/mapping/type/Enum.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/List/"}},[t._v("oatpp/core/data/mapping/type/List.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Map/"}},[t._v("oatpp/core/data/mapping/type/Map.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/"}},[t._v("oatpp/core/data/mapping/type/Object.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/PairList/"}},[t._v("oatpp/core/data/mapping/type/PairList.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/"}},[t._v("oatpp/core/data/mapping/type/Primitive.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/"}},[t._v("oatpp/core/data/mapping/type/Type.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/UnorderedMap/"}},[t._v("oatpp/core/data/mapping/type/UnorderedMap.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/UnorderedSet/"}},[t._v("oatpp/core/data/mapping/type/UnorderedSet.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Vector/"}},[t._v("oatpp/core/data/mapping/type/Vector.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/resource/File/"}},[t._v("oatpp/core/data/resource/File.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/resource/InMemoryData/"}},[t._v("oatpp/core/data/resource/InMemoryData.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/resource/Resource/"}},[t._v("oatpp/core/data/resource/Resource.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/resource/TemporaryFile/"}},[t._v("oatpp/core/data/resource/TemporaryFile.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/"}},[t._v("oatpp/core/data/share/LazyStringMap.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/"}},[t._v("oatpp/core/data/share/MemoryLabel.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/"}},[t._v("oatpp/core/data/share/StringTemplate.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/"}},[t._v("oatpp/core/data/stream/BufferStream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/FIFOStream/"}},[t._v("oatpp/core/data/stream/FIFOStream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/FileStream/"}},[t._v("oatpp/core/data/stream/FileStream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/"}},[t._v("oatpp/core/data/stream/Stream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/StreamBufferedProxy/"}},[t._v("oatpp/core/data/stream/StreamBufferedProxy.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/macro/basic/"}},[t._v("oatpp/core/macro/basic.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/macro/codegen/"}},[t._v("oatpp/core/macro/codegen.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/macro/component/"}},[t._v("oatpp/core/macro/component.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/"}},[t._v("oatpp/core/parser/Caret.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/ParsingError/"}},[t._v("oatpp/core/parser/ParsingError.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/provider/Invalidator/"}},[t._v("oatpp/core/provider/Invalidator.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/provider/Pool/"}},[t._v("oatpp/core/provider/Pool.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/provider/Provider/"}},[t._v("oatpp/core/provider/Provider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/utils/Binary/"}},[t._v("oatpp/core/utils/Binary.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/utils/ConversionUtils/"}},[t._v("oatpp/core/utils/ConversionUtils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/utils/Random/"}},[t._v("oatpp/core/utils/Random.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/core/utils/String/"}},[t._v("oatpp/core/utils/String.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/encoding/Base64/"}},[t._v("oatpp/encoding/Base64.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/encoding/Hex/"}},[t._v("oatpp/encoding/Hex.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/encoding/Unicode/"}},[t._v("oatpp/encoding/Unicode.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/"}},[t._v("oatpp/network/Address.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/"}},[t._v("oatpp/network/ConnectionHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionPool/"}},[t._v("oatpp/network/ConnectionPool.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/"}},[t._v("oatpp/network/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProviderSwitch/"}},[t._v("oatpp/network/ConnectionProviderSwitch.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Server/"}},[t._v("oatpp/network/Server.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Url/"}},[t._v("oatpp/network/Url.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionInactivityChecker/"}},[t._v("oatpp/network/monitor/ConnectionInactivityChecker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionMaxAgeChecker/"}},[t._v("oatpp/network/monitor/ConnectionMaxAgeChecker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionMonitor/"}},[t._v("oatpp/network/monitor/ConnectionMonitor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/MetricsChecker/"}},[t._v("oatpp/network/monitor/MetricsChecker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/"}},[t._v("oatpp/network/monitor/StatCollector.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/"}},[t._v("oatpp/network/tcp/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/client/ConnectionProvider/"}},[t._v("oatpp/network/tcp/client/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/server/ConnectionProvider/"}},[t._v("oatpp/network/tcp/server/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/"}},[t._v("oatpp/network/virtual_/Interface.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Pipe/"}},[t._v("oatpp/network/virtual_/Pipe.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/"}},[t._v("oatpp/network/virtual_/Socket.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/client/ConnectionProvider/"}},[t._v("oatpp/network/virtual_/client/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/server/ConnectionProvider/"}},[t._v("oatpp/network/virtual_/server/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Connection/"}},[t._v("oatpp/orm/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/DbClient/"}},[t._v("oatpp/orm/DbClient.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/"}},[t._v("oatpp/orm/Executor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/"}},[t._v("oatpp/orm/QueryResult.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/SchemaMigration/"}},[t._v("oatpp/orm/SchemaMigration.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/"}},[t._v("oatpp/orm/Transaction.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/Beautifier/"}},[t._v("oatpp/parser/json/Beautifier.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/Utils/"}},[t._v("oatpp/parser/json/Utils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Deserializer/"}},[t._v("oatpp/parser/json/mapping/Deserializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/ObjectMapper/"}},[t._v("oatpp/parser/json/mapping/ObjectMapper.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Serializer/"}},[t._v("oatpp/parser/json/mapping/Serializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/ApiClient/"}},[t._v("oatpp/web/client/ApiClient.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/HttpRequestExecutor/"}},[t._v("oatpp/web/client/HttpRequestExecutor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/"}},[t._v("oatpp/web/client/RequestExecutor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RetryPolicy/"}},[t._v("oatpp/web/client/RetryPolicy.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/FileProvider/"}},[t._v("oatpp/web/mime/multipart/FileProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/InMemoryDataProvider/"}},[t._v("oatpp/web/mime/multipart/InMemoryDataProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Multipart/"}},[t._v("oatpp/web/mime/multipart/Multipart.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Part/"}},[t._v("oatpp/web/mime/multipart/Part.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartList/"}},[t._v("oatpp/web/mime/multipart/PartList.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartReader/"}},[t._v("oatpp/web/mime/multipart/PartReader.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Reader/"}},[t._v("oatpp/web/mime/multipart/Reader.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/StatefulParser/"}},[t._v("oatpp/web/mime/multipart/StatefulParser.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/TemporaryFileProvider/"}},[t._v("oatpp/web/mime/multipart/TemporaryFileProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/CommunicationError/"}},[t._v("oatpp/web/protocol/CommunicationError.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/"}},[t._v("oatpp/web/protocol/http/Http.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/Chunked/"}},[t._v("oatpp/web/protocol/http/encoding/Chunked.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/"}},[t._v("oatpp/web/protocol/http/encoding/EncoderProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/ProviderCollection/"}},[t._v("oatpp/web/protocol/http/encoding/ProviderCollection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/"}},[t._v("oatpp/web/protocol/http/incoming/BodyDecoder.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/"}},[t._v("oatpp/web/protocol/http/incoming/Request.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/RequestHeadersReader/"}},[t._v("oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/"}},[t._v("oatpp/web/protocol/http/incoming/Response.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/ResponseHeadersReader/"}},[t._v("oatpp/web/protocol/http/incoming/ResponseHeadersReader.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/SimpleBodyDecoder/"}},[t._v("oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/"}},[t._v("oatpp/web/protocol/http/outgoing/Body.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/"}},[t._v("oatpp/web/protocol/http/outgoing/BufferBody.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/MultipartBody/"}},[t._v("oatpp/web/protocol/http/outgoing/MultipartBody.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Request/"}},[t._v("oatpp/web/protocol/http/outgoing/Request.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/"}},[t._v("oatpp/web/protocol/http/outgoing/Response.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/"}},[t._v("oatpp/web/protocol/http/outgoing/ResponseFactory.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/StreamingBody/"}},[t._v("oatpp/web/protocol/http/outgoing/StreamingBody.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/utils/CommunicationUtils/"}},[t._v("oatpp/web/protocol/http/utils/CommunicationUtils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/AsyncHttpConnectionHandler/"}},[t._v("oatpp/web/server/AsyncHttpConnectionHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpConnectionHandler/"}},[t._v("oatpp/web/server/HttpConnectionHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/"}},[t._v("oatpp/web/server/HttpProcessor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/"}},[t._v("oatpp/web/server/HttpRequestHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/"}},[t._v("oatpp/web/server/HttpRouter.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/"}},[t._v("oatpp/web/server/api/ApiController.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/Endpoint/"}},[t._v("oatpp/web/server/api/Endpoint.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/"}},[t._v("oatpp/web/server/handler/AuthorizationHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/ErrorHandler/"}},[t._v("oatpp/web/server/handler/ErrorHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/AllowCorsGlobal/"}},[t._v("oatpp/web/server/interceptor/AllowCorsGlobal.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/"}},[t._v("oatpp/web/server/interceptor/RequestInterceptor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/"}},[t._v("oatpp/web/server/interceptor/ResponseInterceptor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Pattern/"}},[t._v("oatpp/web/url/mapping/Pattern.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/"}},[t._v("oatpp/web/url/mapping/Router.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-consul"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-consul"}},[t._v("#")]),t._v(" Module oatpp-consul")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-consul/Client/"}},[t._v("oatpp-consul/Client.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-consul/rest/Client/"}},[t._v("oatpp-consul/rest/Client.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-consul/rest/DTOs/"}},[t._v("oatpp-consul/rest/DTOs.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-curl"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-curl"}},[t._v("#")]),t._v(" Module oatpp-curl")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/RequestExecutor/"}},[t._v("oatpp-curl/RequestExecutor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/BodyDecoder/"}},[t._v("oatpp-curl/io/BodyDecoder.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/BodyInputStream/"}},[t._v("oatpp-curl/io/BodyInputStream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/BodyOutputStream/"}},[t._v("oatpp-curl/io/BodyOutputStream.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/"}},[t._v("oatpp-curl/io/Curl.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyReader/"}},[t._v("oatpp-curl/io/CurlBodyReader.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyWriter/"}},[t._v("oatpp-curl/io/CurlBodyWriter.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlHeadersReader/"}},[t._v("oatpp-curl/io/CurlHeadersReader.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-libressl"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-libressl"}},[t._v("#")]),t._v(" Module oatpp-libressl")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Callbacks/"}},[t._v("oatpp-libressl/Callbacks.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/"}},[t._v("oatpp-libressl/Config.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Connection/"}},[t._v("oatpp-libressl/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/TLSObject/"}},[t._v("oatpp-libressl/TLSObject.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/client/ConnectionProvider/"}},[t._v("oatpp-libressl/client/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/server/ConnectionProvider/"}},[t._v("oatpp-libressl/server/ConnectionProvider.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-mbedtls"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-mbedtls"}},[t._v("#")]),t._v(" Module oatpp-mbedtls")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/"}},[t._v("oatpp-mbedtls/Config.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Connection/"}},[t._v("oatpp-mbedtls/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/client/ConnectionProvider/"}},[t._v("oatpp-mbedtls/client/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/server/ConnectionProvider/"}},[t._v("oatpp-mbedtls/server/ConnectionProvider.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-mongo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-mongo"}},[t._v("#")]),t._v(" Module oatpp-mongo")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/Types/"}},[t._v("oatpp-mongo/bson/Types.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/Utils/"}},[t._v("oatpp-mongo/bson/Utils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/mapping/Deserializer/"}},[t._v("oatpp-mongo/bson/mapping/Deserializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/mapping/ObjectMapper/"}},[t._v("oatpp-mongo/bson/mapping/ObjectMapper.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/mapping/Serializer/"}},[t._v("oatpp-mongo/bson/mapping/Serializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/bson/type/ObjectId/"}},[t._v("oatpp-mongo/bson/type/ObjectId.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Command/"}},[t._v("oatpp-mongo/driver/command/Command.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Delete/"}},[t._v("oatpp-mongo/driver/command/Delete.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Find/"}},[t._v("oatpp-mongo/driver/command/Find.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Insert/"}},[t._v("oatpp-mongo/driver/command/Insert.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Miscellaneous/"}},[t._v("oatpp-mongo/driver/command/Miscellaneous.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/command/Update/"}},[t._v("oatpp-mongo/driver/command/Update.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/wire/Connection/"}},[t._v("oatpp-mongo/driver/wire/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/wire/Message/"}},[t._v("oatpp-mongo/driver/wire/Message.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-mongo/driver/wire/OpMsg/"}},[t._v("oatpp-mongo/driver/wire/OpMsg.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-openssl"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-openssl"}},[t._v("#")]),t._v(" Module oatpp-openssl")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/"}},[t._v("oatpp-openssl/Config.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Connection/"}},[t._v("oatpp-openssl/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/client/ConnectionProvider/"}},[t._v("oatpp-openssl/client/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/CertificateChainFile/"}},[t._v("oatpp-openssl/configurer/CertificateChainFile.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/CertificateFile/"}},[t._v("oatpp-openssl/configurer/CertificateFile.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/ContextConfigurer/"}},[t._v("oatpp-openssl/configurer/ContextConfigurer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/PrivateKeyFile/"}},[t._v("oatpp-openssl/configurer/PrivateKeyFile.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/server/ConnectionProvider/"}},[t._v("oatpp-openssl/server/ConnectionProvider.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-postgresql"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-postgresql"}},[t._v("#")]),t._v(" Module oatpp-postgresql")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/Connection/"}},[t._v("oatpp-postgresql/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/ConnectionProvider/"}},[t._v("oatpp-postgresql/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/Executor/"}},[t._v("oatpp-postgresql/Executor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/QueryResult/"}},[t._v("oatpp-postgresql/QueryResult.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/Types/"}},[t._v("oatpp-postgresql/Types.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/Deserializer/"}},[t._v("oatpp-postgresql/mapping/Deserializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/Oid/"}},[t._v("oatpp-postgresql/mapping/Oid.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/PgArray/"}},[t._v("oatpp-postgresql/mapping/PgArray.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/ResultMapper/"}},[t._v("oatpp-postgresql/mapping/ResultMapper.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/Serializer/"}},[t._v("oatpp-postgresql/mapping/Serializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/mapping/type/Uuid/"}},[t._v("oatpp-postgresql/mapping/type/Uuid.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/orm/"}},[t._v("oatpp-postgresql/orm.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/ql_template/Parser/"}},[t._v("oatpp-postgresql/ql_template/Parser.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/ql_template/TemplateValueProvider/"}},[t._v("oatpp-postgresql/ql_template/TemplateValueProvider.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-protobuf"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-protobuf"}},[t._v("#")]),t._v(" Module oatpp-protobuf")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-protobuf/Object/"}},[t._v("oatpp-protobuf/Object.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-protobuf/reflection/DynamicObject/"}},[t._v("oatpp-protobuf/reflection/DynamicObject.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-protobuf/reflection/Utils/"}},[t._v("oatpp-protobuf/reflection/Utils.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-sqlite"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-sqlite"}},[t._v("#")]),t._v(" Module oatpp-sqlite")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Connection/"}},[t._v("oatpp-sqlite/Connection.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/ConnectionProvider/"}},[t._v("oatpp-sqlite/ConnectionProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Executor/"}},[t._v("oatpp-sqlite/Executor.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/QueryResult/"}},[t._v("oatpp-sqlite/QueryResult.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Types/"}},[t._v("oatpp-sqlite/Types.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Utils/"}},[t._v("oatpp-sqlite/Utils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/mapping/Deserializer/"}},[t._v("oatpp-sqlite/mapping/Deserializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/mapping/ResultMapper/"}},[t._v("oatpp-sqlite/mapping/ResultMapper.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/mapping/Serializer/"}},[t._v("oatpp-sqlite/mapping/Serializer.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/mapping/type/Blob/"}},[t._v("oatpp-sqlite/mapping/type/Blob.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/orm/"}},[t._v("oatpp-sqlite/orm.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/ql_template/Parser/"}},[t._v("oatpp-sqlite/ql_template/Parser.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/ql_template/TemplateValueProvider/"}},[t._v("oatpp-sqlite/ql_template/TemplateValueProvider.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-ssdp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-ssdp"}},[t._v("#")]),t._v(" Module oatpp-ssdp")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-ssdp/SimpleSsdpUdpStreamProvider/"}},[t._v("oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-ssdp/SimpleUdpStreamProvider/"}},[t._v("oatpp-ssdp/SimpleUdpStreamProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-ssdp/SsdpMessage/"}},[t._v("oatpp-ssdp/SsdpMessage.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-ssdp/SsdpStreamHandler/"}},[t._v("oatpp-ssdp/SsdpStreamHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-ssdp/UdpStream/"}},[t._v("oatpp-ssdp/UdpStream.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-swagger"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-swagger"}},[t._v("#")]),t._v(" Module oatpp-swagger")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/AsyncController/"}},[t._v("oatpp-swagger/AsyncController.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Controller/"}},[t._v("oatpp-swagger/Controller.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Generator/"}},[t._v("oatpp-swagger/Generator.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/"}},[t._v("oatpp-swagger/Model.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Resources/"}},[t._v("oatpp-swagger/Resources.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Types/"}},[t._v("oatpp-swagger/Types.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/"}},[t._v("oatpp-swagger/oas3/Model.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-websocket"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-websocket"}},[t._v("#")]),t._v(" Module oatpp-websocket")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncConnectionHandler/"}},[t._v("oatpp-websocket/AsyncConnectionHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/AsyncWebSocket/"}},[t._v("oatpp-websocket/AsyncWebSocket.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Config/"}},[t._v("oatpp-websocket/Config.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/ConnectionHandler/"}},[t._v("oatpp-websocket/ConnectionHandler.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Connector/"}},[t._v("oatpp-websocket/Connector.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Frame/"}},[t._v("oatpp-websocket/Frame.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Handshaker/"}},[t._v("oatpp-websocket/Handshaker.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/SHA1/"}},[t._v("oatpp-websocket/SHA1.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/Utils/"}},[t._v("oatpp-websocket/Utils.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-websocket/WebSocket/"}},[t._v("oatpp-websocket/WebSocket.hpp")])],1)]),t._v(" "),o("h2",{attrs:{id:"module-oatpp-zlib"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp-zlib"}},[t._v("#")]),t._v(" Module oatpp-zlib")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-zlib/EncoderProvider/"}},[t._v("oatpp-zlib/EncoderProvider.hpp")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/api/latest/oatpp-zlib/Processor/"}},[t._v("oatpp-zlib/Processor.hpp")])],1)])])}),[],!1,null,null,null);p.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/120.a992a201.js b/docs/.vuepress/dist/assets/js/120.a992a201.js deleted file mode 100644 index c9d020247..000000000 --- a/docs/.vuepress/dist/assets/js/120.a992a201.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{492:function(t,e,n){"use strict";n.r(e);var a=n(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"dto-undef-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#dto-undef-hpp"}},[t._v("#")]),t._v(" DTO_undef.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/DTO_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/DTO_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp/codegen/DTO_undef.hpp"')])]),t._v(" "),n("p",[t._v('This file contains "undefs" for DTO code generating macro. '),n("br"),t._v("\nUsage:"),n("br")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO)")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generated Endpoints.")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),n("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO)")]),t._v("\n")])])]),n("p",[n("em",[t._v("For details see:")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),n("OutboundLink")],1)]),t._v(" "),n("li",[t._v("oatpp::data::mapping::type::Object")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/121.077b599d.js b/docs/.vuepress/dist/assets/js/121.077b599d.js deleted file mode 100644 index 50b28c242..000000000 --- a/docs/.vuepress/dist/assets/js/121.077b599d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{493:function(e,t,n){"use strict";n.r(t);var o=n(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"dbclient-define-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-define-hpp"}},[e._v("#")]),e._v(" DbClient_define.hpp"),n("seo")],1),e._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/DbClient_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),n("OutboundLink")],1),n("br"),e._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/DbClient_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),n("OutboundLink")],1)]),e._v(" "),n("p",[n("code",[e._v("API: latest")]),n("br"),e._v(" "),n("code",[e._v("module: oatpp")]),n("br"),e._v(" "),n("code",[e._v('#include "oatpp/codegen/DbClient_define.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/122.b1dbc1d0.js b/docs/.vuepress/dist/assets/js/122.b1dbc1d0.js deleted file mode 100644 index 58856f04c..000000000 --- a/docs/.vuepress/dist/assets/js/122.b1dbc1d0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{494:function(e,t,n){"use strict";n.r(t);var o=n(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"dbclient-undef-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-undef-hpp"}},[e._v("#")]),e._v(" DbClient_undef.hpp"),n("seo")],1),e._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/DbClient_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),n("OutboundLink")],1),n("br"),e._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/DbClient_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),n("OutboundLink")],1)]),e._v(" "),n("p",[n("code",[e._v("API: latest")]),n("br"),e._v(" "),n("code",[e._v("module: oatpp")]),n("br"),e._v(" "),n("code",[e._v('#include "oatpp/codegen/DbClient_undef.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/123.ef39cf0b.js b/docs/.vuepress/dist/assets/js/123.ef39cf0b.js deleted file mode 100644 index 47d5bc023..000000000 --- a/docs/.vuepress/dist/assets/js/123.ef39cf0b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{495:function(e,t,o){"use strict";o.r(t);var n=o(42),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"auth-define-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#auth-define-hpp"}},[e._v("#")]),e._v(" auth_define.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/auth_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/auth_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/codegen/api_controller/auth_define.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/124.a5a9b6db.js b/docs/.vuepress/dist/assets/js/124.a5a9b6db.js deleted file mode 100644 index e5a912a66..000000000 --- a/docs/.vuepress/dist/assets/js/124.a5a9b6db.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{496:function(t,e,o){"use strict";o.r(e);var n=o(42),r=Object(n.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"auth-undef-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#auth-undef-hpp"}},[t._v("#")]),t._v(" auth_undef.hpp"),o("seo")],1),t._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/auth_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),o("OutboundLink")],1),o("br"),t._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/auth_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),o("OutboundLink")],1)]),t._v(" "),o("p",[o("code",[t._v("API: latest")]),o("br"),t._v(" "),o("code",[t._v("module: oatpp")]),o("br"),t._v(" "),o("code",[t._v('#include "oatpp/codegen/api_controller/auth_undef.hpp"')])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/125.3877d1f2.js b/docs/.vuepress/dist/assets/js/125.3877d1f2.js deleted file mode 100644 index 41eaebc58..000000000 --- a/docs/.vuepress/dist/assets/js/125.3877d1f2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{497:function(t,e,a){"use strict";a.r(e);var r=a(42),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"base-define-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#base-define-hpp"}},[t._v("#")]),t._v(" base_define.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/base_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/base_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/codegen/api_controller/base_define.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint"}},[t._v("#")]),t._v(" ENDPOINT")]),t._v(" "),a("p",[t._v("Codegen macoro to be used in "),a("code",[t._v("oatpp::web::server::api::ApiController")]),t._v(" to generate Endpoint. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' METHOD - Http method ("GET", "POST", "PUT", etc.). ')]),a("li",[a("strong",[t._v("@param")]),t._v(" PATH - Path to endpoint (without host). ")]),a("li",[a("strong",[t._v("@param")]),t._v(" NAME - Name of the generated method. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" ENDPOINT(METHOD, PATH, ...)")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-interceptor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-interceptor"}},[t._v("#")]),t._v(" ENDPOINT_INTERCEPTOR")]),t._v(" "),a("p",[t._v("Endpoint interceptor")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" ENDPOINT_INTERCEPTOR(ENDPOINT_NAME, NAME)")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-async"}},[t._v("#")]),t._v(" ENDPOINT_ASYNC")]),t._v(" "),a("p",[t._v("Codegen macoro to be used in "),a("code",[t._v("oatpp::web::server::api::ApiController")]),t._v(" to generate Asynchronous Endpoint. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' METHOD - Http method ("GET", "POST", "PUT", etc.). ')]),a("li",[a("strong",[t._v("@param")]),t._v(" PATH - Path to endpoint (without host). ")]),a("li",[a("strong",[t._v("@param")]),t._v(" NAME - Name of the generated method. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" ENDPOINT_ASYNC(METHOD, PATH, NAME)")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-async-init"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-async-init"}},[t._v("#")]),t._v(" ENDPOINT_ASYNC_INIT")]),t._v(" "),a("p",[t._v("Auxiliary codegen macro for "),a("code",[t._v("ENDPOINT_ASYNC")]),t._v(" to generate correct constructor for Asynchronous Endpoint Coroutine. NAME - Name of the endpoint. Exact the same name as was passed to "),a("code",[t._v("ENDPOINT_ASYNC")]),t._v(" macro.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" ENDPOINT_ASYNC_INIT(NAME)")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-interceptor-async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-interceptor-async"}},[t._v("#")]),t._v(" ENDPOINT_INTERCEPTOR_ASYNC")]),t._v(" "),a("p",[t._v("Endpoint interceptor")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" ENDPOINT_INTERCEPTOR_ASYNC(ENDPOINT_NAME, NAME)")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/126.a46bb3ce.js b/docs/.vuepress/dist/assets/js/126.a46bb3ce.js deleted file mode 100644 index dff65f3c5..000000000 --- a/docs/.vuepress/dist/assets/js/126.a46bb3ce.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{498:function(e,t,o){"use strict";o.r(t);var n=o(42),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"base-undef-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#base-undef-hpp"}},[e._v("#")]),e._v(" base_undef.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/base_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/base_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/codegen/api_controller/base_undef.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/127.ff6a31ba.js b/docs/.vuepress/dist/assets/js/127.ff6a31ba.js deleted file mode 100644 index 04f20437e..000000000 --- a/docs/.vuepress/dist/assets/js/127.ff6a31ba.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{499:function(e,t,n){"use strict";n.r(t);var o=n(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"bundle-define-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bundle-define-hpp"}},[e._v("#")]),e._v(" bundle_define.hpp"),n("seo")],1),e._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/bundle_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),n("OutboundLink")],1),n("br"),e._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/bundle_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),n("OutboundLink")],1)]),e._v(" "),n("p",[n("code",[e._v("API: latest")]),n("br"),e._v(" "),n("code",[e._v("module: oatpp")]),n("br"),e._v(" "),n("code",[e._v('#include "oatpp/codegen/api_controller/bundle_define.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/128.789dab63.js b/docs/.vuepress/dist/assets/js/128.789dab63.js deleted file mode 100644 index 6e30d5598..000000000 --- a/docs/.vuepress/dist/assets/js/128.789dab63.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{500:function(e,t,n){"use strict";n.r(t);var o=n(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"bundle-undef-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bundle-undef-hpp"}},[e._v("#")]),e._v(" bundle_undef.hpp"),n("seo")],1),e._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/bundle_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),n("OutboundLink")],1),n("br"),e._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/bundle_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),n("OutboundLink")],1)]),e._v(" "),n("p",[n("code",[e._v("API: latest")]),n("br"),e._v(" "),n("code",[e._v("module: oatpp")]),n("br"),e._v(" "),n("code",[e._v('#include "oatpp/codegen/api_controller/bundle_undef.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/129.e8a0daa5.js b/docs/.vuepress/dist/assets/js/129.e8a0daa5.js deleted file mode 100644 index 052fcff24..000000000 --- a/docs/.vuepress/dist/assets/js/129.e8a0daa5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{501:function(e,t,o){"use strict";o.r(t);var r=o(42),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cors-define-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cors-define-hpp"}},[e._v("#")]),e._v(" cors_define.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/cors_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/cors_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/codegen/api_controller/cors_define.hpp"')])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/13.4decfee8.js b/docs/.vuepress/dist/assets/js/13.4decfee8.js deleted file mode 100644 index ba519a37c..000000000 --- a/docs/.vuepress/dist/assets/js/13.4decfee8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{385:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"client-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-hpp"}},[t._v("#")]),t._v(" Client.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/Client.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/issues/new?title=API%20question&body=In%20file:%20oatpp-consul/Client.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-consul")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-consul/Client.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client"}},[t._v("#")]),t._v(" Client")]),t._v(" "),a("p",[t._v("oatpp::consul::Client provides convenience methods above oatpp::consul::rest::Client")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Client")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::web::client::RequestExecutor")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-requestexecutor"}},[t._v("RequestExecutor")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor"}},[t._v("oatpp::web::client::RequestExecutor")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::mapping::ObjectMapper")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-objectmapper"}},[t._v("ObjectMapper")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-getrestclient"}},[t._v("getRestClient")])]),t._v(" "),a("td",[t._v("get oatpp::consul::rest::Client")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-getobjectmapper"}},[t._v("getObjectMapper")])]),t._v(" "),a("td",[t._v("Get object mapper initialized in the client instance.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::Object")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvgetmetadata"}},[t._v("kvGetMetadata")])]),t._v(" "),a("td",[t._v("Get metadata for key containing base64 encoded value along with other fields")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::Object")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvgetmetadataindc"}},[t._v("kvGetMetadataInDC")])]),t._v(" "),a("td",[t._v("Same as kvGetMetadata(key) but for given datacenter (DC)")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvget"}},[t._v("kvGet")])]),t._v(" "),a("td",[t._v("Get value by key")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvgetindc"}},[t._v("kvGetInDC")])]),t._v(" "),a("td",[t._v("Get value by key for given datacenter")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Type::ObjectWrapper")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvgetasdto"}},[t._v("kvGetAsDto")])]),t._v(" "),a("td",[t._v("Get value by key and deserialize it to DTO object using given objectMapper")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Type::ObjectWrapper")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvgetasdtoindc"}},[t._v("kvGetAsDtoInDC")])]),t._v(" "),a("td",[t._v("Get value by key for given datacenter and deserialize it to DTO object using given objectMapper")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvput"}},[t._v("kvPut")])]),t._v(" "),a("td",[t._v("Put value for key")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvputindc"}},[t._v("kvPutInDC")])]),t._v(" "),a("td",[t._v("Put value for key for given datacenter")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvdelete"}},[t._v("kvDelete")])]),t._v(" "),a("td",[t._v("Delete value for key")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-kvdeleteindc"}},[t._v("kvDeleteInDC")])]),t._v(" "),a("td",[t._v("Delete value for key for given datacenter")])])])]),t._v(" "),a("h3",{attrs:{id:"client-requestexecutor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-requestexecutor"}},[t._v("#")]),t._v(" Client::RequestExecutor")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor"}},[t._v("oatpp::web::client::RequestExecutor")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestExecutor RequestExecutor\n")])])]),a("h3",{attrs:{id:"client-objectmapper"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-objectmapper"}},[t._v("#")]),t._v(" Client::ObjectMapper")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper ObjectMapper\n")])])]),a("h3",{attrs:{id:"client-getrestclient"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-getrestclient"}},[t._v("#")]),t._v(" Client::getRestClient")]),t._v(" "),a("p",[t._v("get oatpp::consul::rest::Client rest::Client provides more flexible")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("rest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRestClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-getobjectmapper"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-getobjectmapper"}},[t._v("#")]),t._v(" Client::getObjectMapper")]),t._v(" "),a("p",[t._v("Get object mapper initialized in the client instance.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectMapper")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvgetmetadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvgetmetadata"}},[t._v("#")]),t._v(" Client::kvGetMetadata")]),t._v(" "),a("p",[t._v("Get metadata for key containing base64 encoded value along with other fields "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("rest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("KVMetadata"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetMetadata")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvgetmetadataindc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvgetmetadataindc"}},[t._v("#")]),t._v(" Client::kvGetMetadataInDC")]),t._v(" "),a("p",[t._v("Same as kvGetMetadata(key) but for given datacenter (DC) "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("rest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("KVMetadata"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetMetadataInDC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" datacenter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvget"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvget"}},[t._v("#")]),t._v(" Client::kvGet")]),t._v(" "),a("p",[t._v("Get value by key "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGet")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvgetindc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvgetindc"}},[t._v("#")]),t._v(" Client::kvGetInDC")]),t._v(" "),a("p",[t._v("Get value by key for given datacenter "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetInDC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" datacenter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvgetasdto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvgetasdto"}},[t._v("#")]),t._v(" Client::kvGetAsDto")]),t._v(" "),a("p",[t._v("Get value by key and deserialize it to DTO object using given objectMapper "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetAsDto")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvgetasdtoindc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvgetasdtoindc"}},[t._v("#")]),t._v(" Client::kvGetAsDtoInDC")]),t._v(" "),a("p",[t._v("Get value by key for given datacenter and deserialize it to DTO object using given objectMapper "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetAsDtoInDC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" datacenter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvput"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvput"}},[t._v("#")]),t._v(" Client::kvPut")]),t._v(" "),a("p",[t._v("Put value for key "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvPut")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvputindc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvputindc"}},[t._v("#")]),t._v(" Client::kvPutInDC")]),t._v(" "),a("p",[t._v("Put value for key for given datacenter "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvPutInDC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" datacenter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvdelete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvdelete"}},[t._v("#")]),t._v(" Client::kvDelete")]),t._v(" "),a("p",[t._v("Delete value for key "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvDelete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-kvdeleteindc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-kvdeleteindc"}},[t._v("#")]),t._v(" Client::kvDeleteInDC")]),t._v(" "),a("p",[t._v("Delete value for key for given datacenter "),a("ul",[a("li",[a("strong",[t._v("@throws")]),t._v(" - "),a("a",{attrs:{href:"#client-error"}},[t._v("Client::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvDeleteInDC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" datacenter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h2",{attrs:{id:"client-error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-error"}},[t._v("#")]),t._v(" Client::Error")]),t._v(" "),a("p",[t._v("Client call error.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Client")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Error")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("runtime_error "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-error-error"}},[t._v("Error")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-error-getmessage"}},[t._v("getMessage")])]),t._v(" "),a("td",[t._v("Get error message.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#client-error-gethttperrorcode"}},[t._v("getHttpErrorCode")])]),t._v(" "),a("td",[t._v("Get http error code.")])])])]),t._v(" "),a("h3",{attrs:{id:"client-error-error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-error-error"}},[t._v("#")]),t._v(" Client::Error::Error")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" message - error message. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" httpErrorCode - http error code. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 httpErrorCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("runtime_error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_message")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-error-getmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-error-getmessage"}},[t._v("#")]),t._v(" Client::Error::getMessage")]),t._v(" "),a("p",[t._v("Get error message. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"client-error-gethttperrorcode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-error-gethttperrorcode"}},[t._v("#")]),t._v(" Client::Error::getHttpErrorCode")]),t._v(" "),a("p",[t._v("Get http error code. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - http error code. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHttpErrorCode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/130.b74ecc2e.js b/docs/.vuepress/dist/assets/js/130.b74ecc2e.js deleted file mode 100644 index b902aec93..000000000 --- a/docs/.vuepress/dist/assets/js/130.b74ecc2e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{502:function(e,t,o){"use strict";o.r(t);var r=o(42),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cors-undef-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cors-undef-hpp"}},[e._v("#")]),e._v(" cors_undef.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/api_controller/cors_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/api_controller/cors_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/codegen/api_controller/cors_undef.hpp"')])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/131.dda7c1c3.js b/docs/.vuepress/dist/assets/js/131.dda7c1c3.js deleted file mode 100644 index ebccf5d0b..000000000 --- a/docs/.vuepress/dist/assets/js/131.dda7c1c3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{503:function(e,t,a){"use strict";a.r(t);var s=a(42),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"base-define-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#base-define-hpp"}},[e._v("#")]),e._v(" base_define.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/dto/base_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/dto/base_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/codegen/dto/base_define.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"dto-init"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dto-init"}},[e._v("#")]),e._v(" DTO_INIT")]),e._v(" "),a("p",[e._v("Codegen macoro to be used in classes extending oatpp::data::mapping::type::Object to generate required fields/methods/constructors for DTO object. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" TYPE_NAME - name of the DTO class. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" TYPE_EXTEND - name of the parent DTO class. If DTO extends oatpp::data::mapping::type::Object TYPE_EXETENDS should be "),a("code",[e._v("Object")]),e._v(". ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" DTO_INIT(TYPE_NAME, TYPE_EXTEND)")]),e._v("\n")])])]),a("h2",{attrs:{id:"dto-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dto-field"}},[e._v("#")]),e._v(" DTO_FIELD")]),e._v(" "),a("p",[e._v("Codegen macro to generate fields of DTO object. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" TYPE - type of the field. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" NAME - name of the field. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" QUALIFIER_NAME - additional (optional) field to specify serialized name of the field. If not specified it will be same as NAME. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" DTO_FIELD(TYPE, ...)")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/132.3e80d470.js b/docs/.vuepress/dist/assets/js/132.3e80d470.js deleted file mode 100644 index 23fe9f945..000000000 --- a/docs/.vuepress/dist/assets/js/132.3e80d470.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{504:function(e,t,o){"use strict";o.r(t);var n=o(42),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"base-undef-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#base-undef-hpp"}},[e._v("#")]),e._v(" base_undef.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/dto/base_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/dto/base_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/codegen/dto/base_undef.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/133.c7b4b612.js b/docs/.vuepress/dist/assets/js/133.c7b4b612.js deleted file mode 100644 index ce79c06d4..000000000 --- a/docs/.vuepress/dist/assets/js/133.c7b4b612.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{505:function(e,t,a){"use strict";a.r(t);var r=a(42),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"enum-define-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enum-define-hpp"}},[e._v("#")]),e._v(" enum_define.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/dto/enum_define.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/dto/enum_define.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/codegen/dto/enum_define.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#value"}},[e._v("#")]),e._v(" VALUE")]),e._v(" "),a("p",[e._v("Enum entry value. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" NAME - name of the enum. "),a("strong",[e._v("required")]),e._v(". ")]),a("li",[a("strong",[e._v("@param")]),e._v(" ORDINAL_VALUE - corresponding ordinal value. "),a("strong",[e._v("required")]),e._v(". ")]),a("li",[a("strong",[e._v("@param")]),e._v(" QUALIFIER - name qualifier to be used instead of the "),a("code",[e._v("NAME")]),e._v(". "),a("strong",[e._v("optional")]),e._v(". ")]),a("li",[a("strong",[e._v("@param")]),e._v(" DESCRIPTION - description of the enum value. "),a("strong",[e._v("optional")]),e._v(". ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" VALUE(NAME, ...)")]),e._v("\n")])])]),a("h2",{attrs:{id:"enum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enum"}},[e._v("#")]),e._v(" ENUM")]),e._v(" "),a("p",[e._v("Codegen macoro to generate oatpp mapping-enabled enum. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" NAME - name of the enum. "),a("strong",[e._v("required")]),e._v(". ")]),a("li",[a("strong",[e._v("@param")]),e._v(" UNDERLYING_TYPE - underlying ordinal type. "),a("strong",[e._v("required")]),e._v(". ")]),a("li",[a("strong",[e._v("@param")]),e._v(" ... - enum values defined with "),a("a",{attrs:{href:"#value"}},[e._v("VALUE(...)")]),e._v(". macro. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" ENUM(NAME, ...)")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/134.43ef1fd6.js b/docs/.vuepress/dist/assets/js/134.43ef1fd6.js deleted file mode 100644 index 6c7e3c3a6..000000000 --- a/docs/.vuepress/dist/assets/js/134.43ef1fd6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{506:function(e,t,n){"use strict";n.r(t);var o=n(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"enum-undef-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enum-undef-hpp"}},[e._v("#")]),e._v(" enum_undef.hpp"),n("seo")],1),e._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/codegen/dto/enum_undef.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),n("OutboundLink")],1),n("br"),e._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/codegen/dto/enum_undef.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),n("OutboundLink")],1)]),e._v(" "),n("p",[n("code",[e._v("API: latest")]),n("br"),e._v(" "),n("code",[e._v("module: oatpp")]),n("br"),e._v(" "),n("code",[e._v('#include "oatpp/codegen/dto/enum_undef.hpp"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/135.8854cffa.js b/docs/.vuepress/dist/assets/js/135.8854cffa.js deleted file mode 100644 index 4840418dc..000000000 --- a/docs/.vuepress/dist/assets/js/135.8854cffa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{507:function(r,a,t){"use strict";t.r(a);var s=t(42),e=Object(s.a)({},(function(){var r=this,a=r.$createElement,t=r._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[t("h1",{attrs:{id:"iodefinitions-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iodefinitions-hpp"}},[r._v("#")]),r._v(" IODefinitions.hpp"),t("seo")],1),r._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/IODefinitions.hpp",target:"_blank",rel:"noopener noreferrer"}},[r._v("This File On Github"),t("OutboundLink")],1),t("br"),r._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/IODefinitions.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[r._v("Ask A Question"),t("OutboundLink")],1)]),r._v(" "),t("p",[t("code",[r._v("API: latest")]),t("br"),r._v(" "),t("code",[r._v("module: oatpp")]),t("br"),r._v(" "),t("code",[r._v('#include "oatpp/core/IODefinitions.hpp"')])]),r._v(" "),t("h2",{attrs:{id:"unknown"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unknown"}},[r._v("#")]),r._v(" [unknown]")]),r._v(" "),t("p",[t("strong",[r._v("Namespace:")]),r._v(" "),t("code",[r._v("oatpp")])]),r._v(" "),t("p",[r._v("Represents I/O handle (ex.: file descriptor).")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token macro property"}},[r._v("#"),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[r._v("if")]),r._v(" defined(WIN32) || defined(_WIN32)")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token macro property"}},[r._v("#"),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[r._v("if")]),r._v(" defined(_WIN64)")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("typedef")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("unsigned")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("long")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("long")]),r._v(" v_io_handle\n")])])]),t("h2",{attrs:{id:"isvalidiohandle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#isvalidiohandle"}},[r._v("#")]),r._v(" isValidIOHandle")]),r._v(" "),t("p",[t("strong",[r._v("Namespace:")]),r._v(" "),t("code",[r._v("oatpp")])]),r._v(" "),t("p",[r._v("Check if IO handle is valid. "),t("ul",[t("li",[t("strong",[r._v("@param")]),r._v(" handle - IO handle. ")]),t("li",[t("strong",[r._v("@return")]),r._v(" - "),t("code",[r._v("true")]),r._v(" if valid. ")])])]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("bool")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("isValidIOHandle")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),r._v("v_io_handle handle"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n")])])]),t("h2",{attrs:{id:"v-io-size"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#v-io-size"}},[r._v("#")]),r._v(" v_io_size")]),r._v(" "),t("p",[t("strong",[r._v("Namespace:")]),r._v(" "),t("code",[r._v("oatpp")])]),r._v(" "),t("p",[r._v("All I/O buffer operations (like read/write(buffer, size)) should return v_io_size. "),t("br"),r._v(" Possible return values: "),t("ul",[t("li",[t("strong",[r._v("On Success")]),r._v(" - [1..max_int64].")]),r._v(" "),t("li",[t("strong",[r._v("On Error")]),r._v(" - IOError values.")])]),r._v(" All other values are considered to be a fatal error. application should be terminated.")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("typedef")]),r._v(" v_int64 v_io_size\n")])])]),t("h2",{attrs:{id:"ioerror"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ioerror"}},[r._v("#")]),r._v(" IOError")]),r._v(" "),t("p",[r._v("Final set of possible I/O operation error values. I/O operation should not return any other error values.")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("enum")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[r._v("IOError")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" v_io_size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(";")]),r._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n")])])]),t("h3",{attrs:{id:"ioerror-zero-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ioerror-zero-value"}},[r._v("#")]),r._v(" IOError::ZERO_VALUE")]),r._v(" "),t("p",[r._v("In oatpp 0 is considered to be an Error as for I/O operation size. "),t("br"),r._v(" As for argument value 0 should be handled separately of the main flow."),t("br"),r._v(" As for return value 0 should not be returned."),t("br"),r._v(" I/O method should return an error describing a reason why I/O is empty instead of a zero itself."),t("br"),r._v(" if zero is returned, client should treat it like a bad api implementation and as an error in the flow."),t("br")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[r._v("ZERO_VALUE "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("=")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[r._v("0")]),r._v("\n")])])]),t("h3",{attrs:{id:"ioerror-broken-pipe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ioerror-broken-pipe"}},[r._v("#")]),r._v(" IOError::BROKEN_PIPE")]),r._v(" "),t("p",[r._v("I/O operation is not possible any more. Client should give up trying and free all related resources.")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[r._v("BROKEN_PIPE "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("=")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[r._v("1001")]),r._v("\n")])])]),t("h3",{attrs:{id:"ioerror-retry-read"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ioerror-retry-read"}},[r._v("#")]),r._v(" IOError::RETRY_READ")]),r._v(" "),t("p",[r._v("I/O operation was interrupted because of some reason. Client may retry read immediately.")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[r._v("RETRY_READ "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("=")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[r._v("1002")]),r._v("\n")])])]),t("h3",{attrs:{id:"ioerror-retry-write"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ioerror-retry-write"}},[r._v("#")]),r._v(" IOError::RETRY_WRITE")]),r._v(" "),t("p",[r._v("I/O operation was interrupted because of some reason. Client may retry immediately.")]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[r._v("RETRY_WRITE "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("=")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[r._v("1003")]),r._v("\n")])])]),t("h2",{attrs:{id:"asyncioerror"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asyncioerror"}},[r._v("#")]),r._v(" AsyncIOError")]),r._v(" "),t("p",[r._v("Asynchronous I/O error. "),t("br"),r._v(" Extends "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Error/#error"}},[r._v("oatpp::async::Error")]),r._v(".")],1),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("class")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[r._v("AsyncIOError")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("public")]),r._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("async"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("Error "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n")])])]),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[r._v("#")]),r._v(" Methods")]),r._v(" "),t("table",[t("thead",[t("tr",[t("th",[r._v("Return Type")]),r._v(" "),t("th",[r._v("Name")]),r._v(" "),t("th",[r._v("Summary")])])]),r._v(" "),t("tbody",[t("tr",[t("td",[t("code",[r._v("[none]")])]),r._v(" "),t("td",[t("a",{attrs:{href:"#asyncioerror-asyncioerror"}},[r._v("AsyncIOError")])]),r._v(" "),t("td",[r._v("Multiple implementations: "),t("br"),t("ol",[t("li",[r._v("Constructor. ")]),t("li",[r._v("Constructor. ")])])])]),r._v(" "),t("tr",[t("td",[t("code",[r._v("v_io_size")])]),r._v(" "),t("td",[t("a",{attrs:{href:"#asyncioerror-getcode"}},[r._v("getCode")])]),r._v(" "),t("td",[r._v("Get I/O opersation error code.")])])])]),r._v(" "),t("h3",{attrs:{id:"asyncioerror-asyncioerror"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asyncioerror-asyncioerror"}},[r._v("#")]),r._v(" AsyncIOError::AsyncIOError")]),r._v(" "),t("ol",[t("li",[r._v("Constructor. "),t("ul",[t("li",[t("strong",[r._v("@param")]),r._v(" what - description of error type. ")]),t("li",[t("strong",[r._v("@param")]),r._v(" code - I/O opersation error code. "),t("a",{attrs:{href:"#ioerror"}},[r._v("IOError")]),r._v(". ")])]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[r._v("AsyncIOError")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("*")]),r._v(" what"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(",")]),r._v(" v_io_size code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("async"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("Error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),r._v("what"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(",")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("m_code")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),r._v("code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n")])])])]),r._v(" "),t("li",[r._v("Constructor. "),t("ul",[t("li",[t("strong",[r._v("@param")]),r._v(" code - I/O opersation error code. "),t("a",{attrs:{href:"#ioerror"}},[r._v("IOError")]),r._v(". ")])]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[r._v("AsyncIOError")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),r._v("v_io_size code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("async"),t("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("Error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[r._v('"AsyncIOError"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(",")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("m_code")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),r._v("code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n")])])])])]),r._v(" "),t("h3",{attrs:{id:"asyncioerror-getcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asyncioerror-getcode"}},[r._v("#")]),r._v(" AsyncIOError::getCode")]),r._v(" "),t("p",[r._v("Get I/O opersation error code. "),t("ul",[t("li",[t("strong",[r._v("@return")]),r._v(" - I/O opersation error code. "),t("a",{attrs:{href:"#ioerror"}},[r._v("IOError")]),r._v(". ")])])]),r._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[r._v("v_io_size "),t("span",{pre:!0,attrs:{class:"token function"}},[r._v("getCode")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/136.282c5c6e.js b/docs/.vuepress/dist/assets/js/136.282c5c6e.js deleted file mode 100644 index 07abff44a..000000000 --- a/docs/.vuepress/dist/assets/js/136.282c5c6e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{508:function(a,t,s){"use strict";s.r(t);var e=s(42),p=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"types-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types-hpp"}},[a._v("#")]),a._v(" Types.hpp"),s("seo")],1),a._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/Types.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),s("OutboundLink")],1),s("br"),a._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/Types.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),s("OutboundLink")],1)]),a._v(" "),s("p",[s("code",[a._v("API: latest")]),s("br"),a._v(" "),s("code",[a._v("module: oatpp")]),s("br"),a._v(" "),s("code",[a._v('#include "oatpp/core/Types.hpp"')])]),a._v(" "),s("h2",{attrs:{id:"type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type"}},[a._v("#")]),a._v(" Type")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[a._v("oatpp::data::mapping::type::Type")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Type Type\n")])])]),s("h2",{attrs:{id:"classid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid"}},[a._v("#")]),a._v(" ClassId")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#classid"}},[a._v("oatpp::data::mapping::type::ClassId")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ClassId ClassId\n")])])]),s("h2",{attrs:{id:"objectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#objectwrapper"}},[a._v("#")]),a._v(" ObjectWrapper")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("ObjectWrapper.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Clazz")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("__class"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" ObjectWrapper "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Clazz"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"void"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#void"}},[a._v("#")]),a._v(" Void")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("ObjectWrapper over the "),s("code",[a._v("void*")]),a._v(".")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Void Void\n")])])]),s("h2",{attrs:{id:"any"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any"}},[a._v("#")]),a._v(" Any")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[s("code",[a._v("Any")]),a._v(" - container for mapping-enabled types. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Any/#any"}},[a._v("oatpp::data::mapping::type::Any")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Any Any\n")])])]),s("h2",{attrs:{id:"string"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string"}},[a._v("#")]),a._v(" String")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled String type. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#string"}},[a._v("oatpp::data::mapping::type::String")]),a._v(" "),s("br"),a._v(" For "),s("code",[a._v("oatpp::String")]),a._v(" methods see "),s("code",[a._v("std::string")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String String\n")])])]),s("h2",{attrs:{id:"int8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int8"}},[a._v("#")]),a._v(" Int8")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 8-bits int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int8"}},[a._v("oatpp::data::mapping::type::Int8")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Int8 Int8\n")])])]),s("h2",{attrs:{id:"uint8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint8"}},[a._v("#")]),a._v(" UInt8")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 8-bits unsigned int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint8"}},[a._v("oatpp::data::mapping::type::UInt8")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UInt8 UInt8\n")])])]),s("h2",{attrs:{id:"int16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int16"}},[a._v("#")]),a._v(" Int16")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 16-bits int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int16"}},[a._v("oatpp::data::mapping::type::Int16")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Int16 Int16\n")])])]),s("h2",{attrs:{id:"uint16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint16"}},[a._v("#")]),a._v(" UInt16")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 16-bits unsigned int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint16"}},[a._v("oatpp::data::mapping::type::UInt16")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UInt16 UInt16\n")])])]),s("h2",{attrs:{id:"int32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int32"}},[a._v("#")]),a._v(" Int32")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 32-bits int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int32"}},[a._v("oatpp::data::mapping::type::Int32")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Int32 Int32\n")])])]),s("h2",{attrs:{id:"uint32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint32"}},[a._v("#")]),a._v(" UInt32")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 32-bits unsigned int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint32"}},[a._v("oatpp::data::mapping::type::UInt32")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UInt32 UInt32\n")])])]),s("h2",{attrs:{id:"int64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int64"}},[a._v("#")]),a._v(" Int64")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 64-bits int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int64"}},[a._v("oatpp::data::mapping::type::Int64")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Int64 Int64\n")])])]),s("h2",{attrs:{id:"uint64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint64"}},[a._v("#")]),a._v(" UInt64")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 64-bits unsigned int. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint64"}},[a._v("oatpp::data::mapping::type::UInt64")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UInt64 UInt64\n")])])]),s("h2",{attrs:{id:"float32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#float32"}},[a._v("#")]),a._v(" Float32")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 32-bits float. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float32"}},[a._v("oatpp::data::mapping::type::Float32")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Float32 Float32\n")])])]),s("h2",{attrs:{id:"float64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#float64"}},[a._v("#")]),a._v(" Float64")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled 64-bits float (double). Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float64"}},[a._v("oatpp::data::mapping::type::Float64")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Float64 Float64\n")])])]),s("h2",{attrs:{id:"boolean"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#boolean"}},[a._v("#")]),a._v(" Boolean")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled Boolean. Can hold nullptr value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#boolean"}},[a._v("oatpp::data::mapping::type::Boolean")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Boolean Boolean\n")])])]),s("h2",{attrs:{id:"baseobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject"}},[a._v("#")]),a._v(" BaseObject")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Base class for all Object-like Mapping-enabled structures. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/#baseobject"}},[a._v("oatpp::data::mapping::type::BaseObject")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("BaseObject BaseObject\n")])])]),s("h2",{attrs:{id:"dto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dto"}},[a._v("#")]),a._v(" DTO")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Base class for all DTO objects. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/#dto"}},[a._v("oatpp::data::mapping::type::DTO")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("DTO DTO\n")])])]),s("h2",{attrs:{id:"object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object"}},[a._v("#")]),a._v(" Object")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled DTO Object. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/#dtowrapper"}},[a._v("oatpp::data::mapping::type::DTOWrapper")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" Object "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("DTOWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"enum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#enum"}},[a._v("#")]),a._v(" Enum")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled Enum. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Enum/#enum"}},[a._v("oatpp::data::mapping::type::Enum")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" Enum "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Enum"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"vector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vector"}},[a._v("#")]),a._v(" Vector")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled Vector. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Vector/#vector"}},[a._v("oatpp::data::mapping::type::Vector")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" Vector "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"abstractvector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractvector"}},[a._v("#")]),a._v(" AbstractVector")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Abstract Vector.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("AbstractVector AbstractVector\n")])])]),s("h2",{attrs:{id:"list"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#list"}},[a._v("#")]),a._v(" List")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled List. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/List/#list"}},[a._v("oatpp::data::mapping::type::List")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" List "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"abstractlist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractlist"}},[a._v("#")]),a._v(" AbstractList")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Abstract List.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("AbstractList AbstractList\n")])])]),s("h2",{attrs:{id:"unorderedset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedset"}},[a._v("#")]),a._v(" UnorderedSet")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled UnorderedSet. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/UnorderedSet/#unorderedset"}},[a._v("oatpp::data::mapping::type::UnorderedSet")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" UnorderedSet "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UnorderedSet"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"abstractunorderedset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedset"}},[a._v("#")]),a._v(" AbstractUnorderedSet")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Abstract UnorderedSet.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("AbstractUnorderedSet AbstractUnorderedSet\n")])])]),s("h2",{attrs:{id:"pairlist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pairlist"}},[a._v("#")]),a._v(" PairList")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled PairList. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/PairList/#pairlist"}},[a._v("oatpp::data::mapping::type::PairList")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" PairList "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("PairList"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled PairList. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/PairList/#pairlist"}},[a._v("oatpp::data::mapping::type::PairList")])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" Fields "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("PairList"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"abstractfields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractfields"}},[a._v("#")]),a._v(" AbstractFields")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Abstract Fields")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" AbstractFields\n")])])]),s("h2",{attrs:{id:"unorderedmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedmap"}},[a._v("#")]),a._v(" UnorderedMap")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled UnorderedMap. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/UnorderedMap/#unorderedmap"}},[a._v("oatpp::data::mapping::type::UnorderedMap")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" UnorderedMap "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UnorderedMap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"unorderedfields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedfields"}},[a._v("#")]),a._v(" UnorderedFields")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Mapping-Enabled UnorderedMap. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/UnorderedMap/#unorderedmap"}},[a._v("oatpp::data::mapping::type::UnorderedMap")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" UnorderedFields "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UnorderedMap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("h2",{attrs:{id:"abstractunorderedfields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedfields"}},[a._v("#")]),a._v(" AbstractUnorderedFields")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp")])]),a._v(" "),s("p",[a._v("Abstract UnorderedFields")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" UnorderedFields"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" AbstractUnorderedFields\n")])])])])}),[],!1,null,null,null);t.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/137.e6a7db53.js b/docs/.vuepress/dist/assets/js/137.e6a7db53.js deleted file mode 100644 index 515b4582d..000000000 --- a/docs/.vuepress/dist/assets/js/137.e6a7db53.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{509:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"coroutine-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine-hpp"}},[t._v("#")]),t._v(" Coroutine.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/Coroutine.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/Coroutine.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/async/Coroutine.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"action"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[t._v("#")]),t._v(" Action")]),t._v(" "),s("p",[t._v("Class Action represents an asynchronous action.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-none"}},[t._v("TYPE_NONE")])]),t._v(" "),s("td",[t._v("None - invalid Action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-coroutine"}},[t._v("TYPE_COROUTINE")])]),t._v(" "),s("td",[t._v("Indicate that Action is to start coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-yield-to"}},[t._v("TYPE_YIELD_TO")])]),t._v(" "),s("td",[t._v("Indicate that Action is to YIELD control to other method of Coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-repeat"}},[t._v("TYPE_REPEAT")])]),t._v(" "),s("td",[t._v("Indicate that Action is to REPEAT call to current method of Coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-wait-repeat"}},[t._v("TYPE_WAIT_REPEAT")])]),t._v(" "),s("td",[t._v("Indicate that Action is to WAIT for some time and then REPEAT call to current method of Coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-io-wait"}},[t._v("TYPE_IO_WAIT")])]),t._v(" "),s("td",[t._v("Indicate that Action is waiting for IO and should be assigned to corresponding worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-io-repeat"}},[t._v("TYPE_IO_REPEAT")])]),t._v(" "),s("td",[t._v("Indicate that Action is to repeat previously successful I/O operation.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-finish"}},[t._v("TYPE_FINISH")])]),t._v(" "),s("td",[t._v("Indicate that Action is to FINISH current Coroutine and return control to a caller-Coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-error"}},[t._v("TYPE_ERROR")])]),t._v(" "),s("td",[t._v("Indicate that Error occurred.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-wait-list"}},[t._v("TYPE_WAIT_LIST")])]),t._v(" "),s("td",[t._v("Indicate that coroutine should be put on a wait-list provided.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-type-wait-list-with-timeout"}},[t._v("TYPE_WAIT_LIST_WITH_TIMEOUT")])]),t._v(" "),s("td",[t._v("Indicate that coroutine should be put on a wait-list provided with a timeout.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-wait-read"}},[t._v("CODE_IO_WAIT_READ")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-wait-write"}},[t._v("CODE_IO_WAIT_WRITE")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-wait-reschedule"}},[t._v("CODE_IO_WAIT_RESCHEDULE")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-repeat-read"}},[t._v("CODE_IO_REPEAT_READ")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-repeat-write"}},[t._v("CODE_IO_REPEAT_WRITE")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-code-io-repeat-reschedule"}},[t._v("CODE_IO_REPEAT_RESCHEDULE")])]),t._v(" "),s("td",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-action"}},[t._v("Action")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Constructor. Create start-coroutine Action. ")]),s("li",[t._v("Constructor. Create yield_to Action. ")]),s("li",[t._v("Constructor. Create Error Action. ")]),s("li",[t._v("Deleted copy-constructor. ")]),s("li",[t._v("Move-constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-clone"}},[t._v("clone")])]),t._v(" "),s("td",[t._v("Clone action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createactionbytype"}},[t._v("createActionByType")])]),t._v(" "),s("td",[t._v("Create action of specific type")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createiowaitaction"}},[t._v("createIOWaitAction")])]),t._v(" "),s("td",[t._v("Create TYPE_IO_WAIT Action")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createiorepeataction"}},[t._v("createIORepeatAction")])]),t._v(" "),s("td",[t._v("Create TYPE_IO_REPEAT Action")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createwaitrepeataction"}},[t._v("createWaitRepeatAction")])]),t._v(" "),s("td",[t._v("Create TYPE_WAIT_REPEAT Action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createwaitlistaction"}},[t._v("createWaitListAction")])]),t._v(" "),s("td",[t._v("Create TYPE_WAIT_LIST Action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-createwaitlistactionwithtimeout"}},[t._v("createWaitListActionWithTimeout")])]),t._v(" "),s("td",[t._v("Create TYPE_WAIT_LIST_WITH_TIMEOUT Action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-~action"}},[t._v("~Action")])]),t._v(" "),s("td",[t._v("Non-virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-iserror"}},[t._v("isError")])]),t._v(" "),s("td",[t._v("Check if action is an error reporting action.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-isnone"}},[t._v("isNone")])]),t._v(" "),s("td",[t._v("Check if action is of TYPE_NONE.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get Action type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-gettimepointmicroseconds"}},[t._v("getTimePointMicroseconds")])]),t._v(" "),s("td",[t._v("Get microseconds tick when timer should call coroutine again.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::v_io_handle")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-getiohandle"}},[t._v("getIOHandle")])]),t._v(" "),s("td",[t._v("Get I/O handle which is passed with this action to I/O worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("IOEventType")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-getioeventtype"}},[t._v("getIOEventType")])]),t._v(" "),s("td",[t._v("This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#action-getioeventcode"}},[t._v("getIOEventCode")])]),t._v(" "),s("td",[t._v("Convenience method to get I/O Event code.")])])])]),t._v(" "),s("h3",{attrs:{id:"action-type-none"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-none"}},[t._v("#")]),t._v(" Action::TYPE_NONE")]),t._v(" "),s("p",[t._v("None - invalid Action.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_NONE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-coroutine"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-coroutine"}},[t._v("#")]),t._v(" Action::TYPE_COROUTINE")]),t._v(" "),s("p",[t._v("Indicate that Action is to start coroutine.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_COROUTINE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-yield-to"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-yield-to"}},[t._v("#")]),t._v(" Action::TYPE_YIELD_TO")]),t._v(" "),s("p",[t._v("Indicate that Action is to YIELD control to other method of Coroutine.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_YIELD_TO "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-repeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-repeat"}},[t._v("#")]),t._v(" Action::TYPE_REPEAT")]),t._v(" "),s("p",[t._v("Indicate that Action is to REPEAT call to current method of Coroutine.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-wait-repeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-wait-repeat"}},[t._v("#")]),t._v(" Action::TYPE_WAIT_REPEAT")]),t._v(" "),s("p",[t._v("Indicate that Action is to WAIT for some time and then REPEAT call to current method of Coroutine.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_WAIT_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-io-wait"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-io-wait"}},[t._v("#")]),t._v(" Action::TYPE_IO_WAIT")]),t._v(" "),s("p",[t._v("Indicate that Action is waiting for IO and should be assigned to corresponding worker.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_IO_WAIT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-io-repeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-io-repeat"}},[t._v("#")]),t._v(" Action::TYPE_IO_REPEAT")]),t._v(" "),s("p",[t._v("Indicate that Action is to repeat previously successful I/O operation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_IO_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-finish"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-finish"}},[t._v("#")]),t._v(" Action::TYPE_FINISH")]),t._v(" "),s("p",[t._v("Indicate that Action is to FINISH current Coroutine and return control to a caller-Coroutine.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_FINISH "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-error"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-error"}},[t._v("#")]),t._v(" Action::TYPE_ERROR")]),t._v(" "),s("p",[t._v("Indicate that Error occurred.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_ERROR "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-wait-list"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-wait-list"}},[t._v("#")]),t._v(" Action::TYPE_WAIT_LIST")]),t._v(" "),s("p",[t._v("Indicate that coroutine should be put on a wait-list provided.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_WAIT_LIST "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-type-wait-list-with-timeout"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-type-wait-list-with-timeout"}},[t._v("#")]),t._v(" Action::TYPE_WAIT_LIST_WITH_TIMEOUT")]),t._v(" "),s("p",[t._v("Indicate that coroutine should be put on a wait-list provided with a timeout.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 TYPE_WAIT_LIST_WITH_TIMEOUT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-code-io-wait-read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-wait-read"}},[t._v("#")]),t._v(" Action::CODE_IO_WAIT_READ")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_WAIT_READ "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_WAIT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_READ\n")])])]),s("h3",{attrs:{id:"action-code-io-wait-write"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-wait-write"}},[t._v("#")]),t._v(" Action::CODE_IO_WAIT_WRITE")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_WAIT_WRITE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_WAIT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_WRITE\n")])])]),s("h3",{attrs:{id:"action-code-io-wait-reschedule"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-wait-reschedule"}},[t._v("#")]),t._v(" Action::CODE_IO_WAIT_RESCHEDULE")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_WAIT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_WAIT_RESCHEDULE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_WAIT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_READ "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_WRITE\n")])])]),s("h3",{attrs:{id:"action-code-io-repeat-read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-repeat-read"}},[t._v("#")]),t._v(" Action::CODE_IO_REPEAT_READ")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_REPEAT_READ "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_READ\n")])])]),s("h3",{attrs:{id:"action-code-io-repeat-write"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-repeat-write"}},[t._v("#")]),t._v(" Action::CODE_IO_REPEAT_WRITE")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_REPEAT_WRITE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_WRITE\n")])])]),s("h3",{attrs:{id:"action-code-io-repeat-reschedule"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-code-io-repeat-reschedule"}},[t._v("#")]),t._v(" Action::CODE_IO_REPEAT_RESCHEDULE")]),t._v(" "),s("p",[t._v("Convenience I/O Action Code. This code is applicable for Action of type TYPE_IO_REPEAT only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 CODE_IO_REPEAT_RESCHEDULE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" TYPE_IO_REPEAT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_READ "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" IOEventType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IO_EVENT_WRITE\n")])])]),s("h3",{attrs:{id:"action-action"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-action"}},[t._v("#")]),t._v(" Action::Action")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. Create start-coroutine Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" coroutine - pointer to "),s("a",{attrs:{href:"#abstractcoroutine"}},[t._v("AbstractCoroutine")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("AbstractCoroutine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" coroutine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. Create yield_to Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" functionPtr - pointer to function. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" FunctionPtr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" functionPtr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. Create Error Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" error - pointer to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Error/#error"}},[t._v("oatpp::async::Error")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Error"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Deleted copy-constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Move-constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"action-clone"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-clone"}},[t._v("#")]),t._v(" Action::clone")]),t._v(" "),s("p",[t._v("Clone action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" action - action to clone. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - cloned action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("clone")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createactionbytype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createactionbytype"}},[t._v("#")]),t._v(" Action::createActionByType")]),t._v(" "),s("p",[t._v("Create action of specific type "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" type ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createActionByType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createiowaitaction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createiowaitaction"}},[t._v("#")]),t._v(" Action::createIOWaitAction")]),t._v(" "),s("p",[t._v("Create TYPE_IO_WAIT Action "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ioHandle - oatpp::v_io_handle. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createIOWaitAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle ioHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" IOEventType ioEventType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createiorepeataction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createiorepeataction"}},[t._v("#")]),t._v(" Action::createIORepeatAction")]),t._v(" "),s("p",[t._v("Create TYPE_IO_REPEAT Action "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ioHandle - oatpp::v_io_handle. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createIORepeatAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle ioHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" IOEventType ioEventType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createwaitrepeataction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createwaitrepeataction"}},[t._v("#")]),t._v(" Action::createWaitRepeatAction")]),t._v(" "),s("p",[t._v("Create TYPE_WAIT_REPEAT Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" timePointMicroseconds - time since epoch. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createWaitRepeatAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 timePointMicroseconds"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createwaitlistaction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createwaitlistaction"}},[t._v("#")]),t._v(" Action::createWaitListAction")]),t._v(" "),s("p",[t._v("Create TYPE_WAIT_LIST Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" waitList - wait-list to put coroutine on. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createWaitListAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineWaitList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" waitList"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-createwaitlistactionwithtimeout"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-createwaitlistactionwithtimeout"}},[t._v("#")]),t._v(" Action::createWaitListActionWithTimeout")]),t._v(" "),s("p",[t._v("Create TYPE_WAIT_LIST_WITH_TIMEOUT Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" waitList - wait-list to put coroutine on. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" timeout - latest time point at which the coroutine should be continued. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createWaitListActionWithTimeout")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineWaitList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" waitList"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("steady_clock"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("time_point"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-action-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-action-2"}},[t._v("#")]),t._v(" Action::~Action")]),t._v(" "),s("p",[t._v("Non-virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-iserror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-iserror"}},[t._v("#")]),t._v(" Action::isError")]),t._v(" "),s("p",[t._v("Check if action is an error reporting action. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" "),s("code",[t._v("true")]),t._v(" if action is an error reporting action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-isnone"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-isnone"}},[t._v("#")]),t._v(" Action::isNone")]),t._v(" "),s("p",[t._v("Check if action is of TYPE_NONE. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isNone")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-gettype"}},[t._v("#")]),t._v(" Action::getType")]),t._v(" "),s("p",[t._v("Get Action type. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - action type. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-gettimepointmicroseconds"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-gettimepointmicroseconds"}},[t._v("#")]),t._v(" Action::getTimePointMicroseconds")]),t._v(" "),s("p",[t._v("Get microseconds tick when timer should call coroutine again. This method returns meaningful value only if Action is TYPE_WAIT_REPEAT. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - microseconds tick. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTimePointMicroseconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-getiohandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-getiohandle"}},[t._v("#")]),t._v(" Action::getIOHandle")]),t._v(" "),s("p",[t._v("Get I/O handle which is passed with this action to I/O worker. This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::v_io_handle. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_handle "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIOHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-getioeventtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-getioeventtype"}},[t._v("#")]),t._v(" Action::getIOEventType")]),t._v(" "),s("p",[t._v("This method returns meaningful value only if Action is TYPE_IO_WAIT or TYPE_IO_REPEAT. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - should return one of ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("IOEventType "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIOEventType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-getioeventcode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-getioeventcode"}},[t._v("#")]),t._v(" Action::getIOEventCode")]),t._v(" "),s("p",[t._v("Convenience method to get I/O Event code. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("getType() | getIOEventType()")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIOEventCode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"action-ioeventtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-ioeventtype"}},[t._v("#")]),t._v(" Action::IOEventType")]),t._v(" "),s("p",[t._v("Event type qualifier for Actions of type "),s("a",{attrs:{href:"#action-type-io-wait"}},[t._v("Action::TYPE_IO_WAIT")]),t._v(", "),s("a",{attrs:{href:"#action-type-io-repeat"}},[t._v("Action::TYPE_IO_REPEAT")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-ioeventtype-io-event-read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-ioeventtype-io-event-read"}},[t._v("#")]),t._v(" Action::IOEventType::IO_EVENT_READ")]),t._v(" "),s("p",[t._v("IO event type READ.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("IO_EVENT_READ "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("256")]),t._v("\n")])])]),s("h3",{attrs:{id:"action-ioeventtype-io-event-write"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#action-ioeventtype-io-event-write"}},[t._v("#")]),t._v(" Action::IOEventType::IO_EVENT_WRITE")]),t._v(" "),s("p",[t._v("IO event type WRITE.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("IO_EVENT_WRITE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("512")]),t._v("\n")])])]),s("h2",{attrs:{id:"coroutinestarter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinestarter"}},[t._v("#")]),t._v(" CoroutineStarter")]),t._v(" "),s("p",[t._v("CoroutineStarter of Coroutine calls.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineStarter")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinestarter-coroutinestarter"}},[t._v("CoroutineStarter")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Deleted copy-constructor. ")]),s("li",[t._v("Move constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinestarter-~coroutinestarter"}},[t._v("~CoroutineStarter")])]),t._v(" "),s("td",[t._v("Non-virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinestarter-next"}},[t._v("next")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Set final starter action. ")]),s("li",[t._v("Pipeline coroutine starter. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"coroutinestarter-coroutinestarter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinestarter-coroutinestarter"}},[t._v("#")]),t._v(" CoroutineStarter::CoroutineStarter")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" coroutine - coroutine. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineStarter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("AbstractCoroutine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" coroutine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Deleted copy-constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineStarter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" CoroutineStarter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Move constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other - other starter. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineStarter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineStarter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"coroutinestarter-coroutinestarter-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinestarter-coroutinestarter-2"}},[t._v("#")]),t._v(" CoroutineStarter::~CoroutineStarter")]),t._v(" "),s("p",[t._v("Non-virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineStarter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"coroutinestarter-next"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinestarter-next"}},[t._v("#")]),t._v(" CoroutineStarter::next")]),t._v(" "),s("ol",[s("li",[t._v("Set final starter action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" action - "),s("a",{attrs:{href:"#action"}},[t._v("Action")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#action"}},[t._v("Action")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Pipeline coroutine starter. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" starter - starter to add. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - this starter. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CoroutineStarter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineStarter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" starter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"coroutinehandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinehandle"}},[t._v("#")]),t._v(" CoroutineHandle")]),t._v(" "),s("p",[t._v("This class manages coroutines processing state and a chain of coroutine calls.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineHandle")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"abstractcoroutine"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine"}},[t._v("#")]),t._v(" AbstractCoroutine")]),t._v(" "),s("p",[t._v("Abstract Coroutine. Base class for Coroutines. It provides state management, coroutines stack management and error reporting functionality.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractCoroutine")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::async::Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-action"}},[t._v("Action")])]),t._v(" "),s("td",[t._v("Convenience typedef for Action")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-abstractcoroutine"}},[t._v("AbstractCoroutine")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-~abstractcoroutine"}},[t._v("~AbstractCoroutine")])]),t._v(" "),s("td",[t._v("Virtual Destructor")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-act"}},[t._v("act")])]),t._v(" "),s("td",[t._v("Entrypoint of Coroutine.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-call"}},[t._v("call")])]),t._v(" "),s("td",[t._v("Call function of Coroutine specified by ptr."),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-handleerror"}},[t._v("handleError")])]),t._v(" "),s("td",[t._v("Default implementation of handleError(error) function.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("AbstractCoroutine*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-getparent"}},[t._v("getParent")])]),t._v(" "),s("td",[t._v("Get parent coroutine")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-repeat"}},[t._v("repeat")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_REPEAT")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-waitrepeat"}},[t._v("waitRepeat")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_WAIT_REPEAT")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-waitfor"}},[t._v("waitFor")])]),t._v(" "),s("td",[t._v("Wait asynchronously for the specified time.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-iowait"}},[t._v("ioWait")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_IO_WAIT")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-iorepeat"}},[t._v("ioRepeat")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_IO_WAIT")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutine-error"}},[t._v("error")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Convenience method to generate error reporting Action. ")]),s("li",[t._v("Convenience method to generate error reporting Action. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"abstractcoroutine-action"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-action"}},[t._v("#")]),t._v(" AbstractCoroutine::Action")]),t._v(" "),s("p",[t._v("Convenience typedef for Action")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action Action\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-abstractcoroutine"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-abstractcoroutine"}},[t._v("#")]),t._v(" AbstractCoroutine::AbstractCoroutine")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("AbstractCoroutine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-abstractcoroutine-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-abstractcoroutine-2"}},[t._v("#")]),t._v(" AbstractCoroutine::~AbstractCoroutine")]),t._v(" "),s("p",[t._v("Virtual Destructor")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("AbstractCoroutine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-act"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-act"}},[t._v("#")]),t._v(" AbstractCoroutine::act")]),t._v(" "),s("p",[t._v("Entrypoint of Coroutine. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - Action ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-call"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-call"}},[t._v("#")]),t._v(" AbstractCoroutine::call")]),t._v(" "),s("p",[t._v("Call function of Coroutine specified by ptr."),s("br"),t._v(" This method is called from iterate()."),s("br"),t._v(" Coroutine keeps track of function ptr and calls corresponding function on each iteration. When Coroutine starts, function ptr points to act(). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ptr - pointer of the function to call. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("call")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" FunctionPtr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-handleerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-handleerror"}},[t._v("#")]),t._v(" AbstractCoroutine::handleError")]),t._v(" "),s("p",[t._v("Default implementation of handleError(error) function. User may override this function in order to handle errors. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" error - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Error/#error"}},[t._v("oatpp::async::Error")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. If handleError function returns Error, current coroutine will finish, return control to caller coroutine and handleError is called for caller coroutine. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Error"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-getparent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-getparent"}},[t._v("#")]),t._v(" AbstractCoroutine::getParent")]),t._v(" "),s("p",[t._v("Get parent coroutine "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - pointer to a parent coroutine ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("AbstractCoroutine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getParent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-repeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-repeat"}},[t._v("#")]),t._v(" AbstractCoroutine::repeat")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_REPEAT")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - repeat Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("repeat")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-waitrepeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-waitrepeat"}},[t._v("#")]),t._v(" AbstractCoroutine::waitRepeat")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_WAIT_REPEAT")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - TYPE_WAIT_REPEAT Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitRepeat")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-waitfor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-waitfor"}},[t._v("#")]),t._v(" AbstractCoroutine::waitFor")]),t._v(" "),s("p",[t._v("Wait asynchronously for the specified time. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - repeat Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitFor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-iowait"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-iowait"}},[t._v("#")]),t._v(" AbstractCoroutine::ioWait")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_IO_WAIT")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - TYPE_WAIT_FOR_IO Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ioWait")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle ioHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOEventType ioEventType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-iorepeat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-iorepeat"}},[t._v("#")]),t._v(" AbstractCoroutine::ioRepeat")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_IO_WAIT")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - TYPE_IO_REPEAT Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ioRepeat")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle ioHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOEventType ioEventType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutine-error"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutine-error"}},[t._v("#")]),t._v(" AbstractCoroutine::error")]),t._v(" "),s("ol",[s("li",[t._v("Convenience method to generate error reporting Action. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" error - oatpp:async::Error. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - error reporting Action. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Error"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convenience method to generate error reporting Action. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" E - Error class type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" Args - Error constructor arguments. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" args - actual error constructor arguments. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - error reporting "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("E")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" Args"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nAction "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"coroutine"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine"}},[t._v("#")]),t._v(" Coroutine")]),t._v(" "),s("p",[t._v("Coroutine template. "),s("br"),t._v(" Example usage:"),s("br"),t._v(" "),s("code",[t._v("class MyCoroutine : public oatpp::async::Coroutine")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - child class type ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Coroutine")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AbstractCoroutine "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutine-start"}},[t._v("start")])]),t._v(" "),s("td",[t._v("Create coroutine and return it's starter")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutine-call"}},[t._v("call")])]),t._v(" "),s("td",[t._v("Call function of Coroutine specified by ptr. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutine-yieldto"}},[t._v("yieldTo")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_YIELD_TO")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutine-finish"}},[t._v("finish")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_FINISH")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"coroutine-start"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine-start"}},[t._v("#")]),t._v(" Coroutine::start")]),t._v(" "),s("p",[t._v("Create coroutine and return it's starter "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" ConstructorArgs - coroutine constructor arguments. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" args - actual coroutine constructor arguments. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ConstructorArgs"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ConstructorArgs"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"coroutine-call"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine-call"}},[t._v("#")]),t._v(" Coroutine::call")]),t._v(" "),s("p",[t._v("Call function of Coroutine specified by ptr. "),s("br"),t._v(" Overridden "),s("code",[t._v("AbstractCoroutine::call()")]),t._v(" method. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ptr - pointer of the function to call. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("call")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" FunctionPtr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"coroutine-yieldto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine-yieldto"}},[t._v("#")]),t._v(" Coroutine::yieldTo")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_YIELD_TO")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" function - pointer to function. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - yield Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Function"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" function"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"coroutine-finish"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutine-finish"}},[t._v("#")]),t._v(" Coroutine::finish")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_FINISH")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - finish Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"abstractcoroutinewithresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutinewithresult"}},[t._v("#")]),t._v(" AbstractCoroutineWithResult")]),t._v(" "),s("p",[t._v("Abstract coroutine with result.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractCoroutineWithResult")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AbstractCoroutine "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"abstractcoroutinewithresult-starterforresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutinewithresult-starterforresult"}},[t._v("#")]),t._v(" AbstractCoroutineWithResult::StarterForResult")]),t._v(" "),s("p",[t._v("Class representing Coroutine call for result;")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractCoroutineWithResult")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AbstractCoroutine "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StarterForResult")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutinewithresult-starterforresult-starterforresult"}},[t._v("StarterForResult")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Deleted copy-constructor. ")]),s("li",[t._v("Move constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutinewithresult-starterforresult-~starterforresult"}},[t._v("~StarterForResult")])]),t._v(" "),s("td",[t._v("Non-virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractcoroutinewithresult-starterforresult-callbackto"}},[t._v("callbackTo")])]),t._v(" "),s("td",[t._v("Set callback for result and return coroutine starting Action.")])])])]),t._v(" "),s("h3",{attrs:{id:"abstractcoroutinewithresult-starterforresult-starterforresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutinewithresult-starterforresult-starterforresult"}},[t._v("#")]),t._v(" AbstractCoroutineWithResult::StarterForResult::StarterForResult")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" coroutine - coroutine. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StarterForResult")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("AbstractCoroutineWithResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" coroutine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_coroutine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("coroutine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Deleted copy-constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StarterForResult")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Move constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other - other starter. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StarterForResult")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("StarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_coroutine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("m_coroutine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"abstractcoroutinewithresult-starterforresult-starterforresult-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutinewithresult-starterforresult-starterforresult-2"}},[t._v("#")]),t._v(" AbstractCoroutineWithResult::StarterForResult::~StarterForResult")]),t._v(" "),s("p",[t._v("Non-virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StarterForResult")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"abstractcoroutinewithresult-starterforresult-callbackto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractcoroutinewithresult-starterforresult-callbackto"}},[t._v("#")]),t._v(" AbstractCoroutineWithResult::StarterForResult::callbackTo")]),t._v(" "),s("p",[t._v("Set callback for result and return coroutine starting Action. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" C - caller coroutine type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" Args - callback params. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" callback - callback to obtain result. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nAction "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("callback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"coroutinewithresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewithresult"}},[t._v("#")]),t._v(" CoroutineWithResult")]),t._v(" "),s("p",[t._v("Coroutine with result template. "),s("br"),t._v(" Example usage:"),s("br"),t._v(" "),s("code",[t._v("class CoroutineWithResult : public oatpp::async::CoroutineWithResult")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - child class type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" Args - return argumet type. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineWithResult")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AbstractCoroutineWithResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-6"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("CoroutineStarterForResult")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinewithresult-startforresult"}},[t._v("startForResult")])]),t._v(" "),s("td",[t._v("Call coroutine for result.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinewithresult-call"}},[t._v("call")])]),t._v(" "),s("td",[t._v("Call function of Coroutine specified by ptr. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinewithresult-yieldto"}},[t._v("yieldTo")])]),t._v(" "),s("td",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_YIELD_TO")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#coroutinewithresult--return"}},[t._v("_return")])]),t._v(" "),s("td",[t._v("Call caller's Callback passing returned value, and generate Action of "),s("code",[t._v("type == Action::TYPE_FINISH")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"coroutinewithresult-startforresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewithresult-startforresult"}},[t._v("#")]),t._v(" CoroutineWithResult::startForResult")]),t._v(" "),s("p",[t._v("Call coroutine for result. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" ConstructorArgs - coroutine consrtructor arguments. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" args - actual constructor arguments. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#abstractcoroutinewithresult-starterforresult"}},[t._v("AbstractCoroutineWithResult::StarterForResult")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ConstructorArgs"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("startForResult")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ConstructorArgs"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"coroutinewithresult-call"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewithresult-call"}},[t._v("#")]),t._v(" CoroutineWithResult::call")]),t._v(" "),s("p",[t._v("Call function of Coroutine specified by ptr. "),s("br"),t._v(" Overridden AbstractCoroutine::call() method. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ptr - pointer of the function to call. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("call")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" AbstractCoroutine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FunctionPtr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"coroutinewithresult-yieldto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewithresult-yieldto"}},[t._v("#")]),t._v(" CoroutineWithResult::yieldTo")]),t._v(" "),s("p",[t._v("Convenience method to generate Action of "),s("code",[t._v("type == Action::TYPE_YIELD_TO")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" function - pointer to function. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - yield Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Function"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" function"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"coroutinewithresult-return"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewithresult-return"}},[t._v("#")]),t._v(" CoroutineWithResult::_return")]),t._v(" "),s("p",[t._v("Call caller's Callback passing returned value, and generate Action of "),s("code",[t._v("type == Action::TYPE_FINISH")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" args - argumets to be passed to callback. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - finish Action. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Args"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/138.c783f20f.js b/docs/.vuepress/dist/assets/js/138.c783f20f.js deleted file mode 100644 index bc537c227..000000000 --- a/docs/.vuepress/dist/assets/js/138.c783f20f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{510:function(t,s,a){"use strict";a.r(s);var e=a(42),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"coroutinewaitlist-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-hpp"}},[t._v("#")]),t._v(" CoroutineWaitList.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/CoroutineWaitList.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/CoroutineWaitList.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/async/CoroutineWaitList.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"coroutinewaitlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist"}},[t._v("#")]),t._v(" CoroutineWaitList")]),t._v(" "),a("p",[t._v("List of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutine"}},[t._v("oatpp::async::Coroutine")]),t._v(" waiting to be notified.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineWaitList")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-coroutinewaitlist"}},[t._v("CoroutineWaitList")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Deleted copy-constructor. ")]),a("li",[t._v("Default constructor. ")]),a("li",[t._v("Move-constructor. ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-~coroutinewaitlist"}},[t._v("~CoroutineWaitList")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-setlistener"}},[t._v("setListener")])]),t._v(" "),a("td",[t._v("Set wait list listener. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-notifyfirst"}},[t._v("notifyFirst")])]),t._v(" "),a("td",[t._v("Put first-in-list coroutine back to its processor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-notifyall"}},[t._v("notifyAll")])]),t._v(" "),a("td",[t._v("Put all coroutines back to its processors and clear wait-list.")])])])]),t._v(" "),a("h3",{attrs:{id:"coroutinewaitlist-coroutinewaitlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-coroutinewaitlist"}},[t._v("#")]),t._v(" CoroutineWaitList::CoroutineWaitList")]),t._v(" "),a("ol",[a("li",[t._v("Deleted copy-constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" other ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineWaitList")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" CoroutineWaitList"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Default constructor."),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineWaitList")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Move-constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" other ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineWaitList")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineWaitList"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"coroutinewaitlist-coroutinewaitlist-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-coroutinewaitlist-2"}},[t._v("#")]),t._v(" CoroutineWaitList::~CoroutineWaitList")]),t._v(" "),a("p",[t._v("Virtual destructor. Will call notifyAllAndClear().")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CoroutineWaitList")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"coroutinewaitlist-setlistener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-setlistener"}},[t._v("#")]),t._v(" CoroutineWaitList::setListener")]),t._v(" "),a("p",[t._v("Set wait list listener. "),a("br"),t._v(" Listener will be called when processor puts coroutine on a wait-list. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" listener ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setListener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Listener"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" listener"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"coroutinewaitlist-notifyfirst"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-notifyfirst"}},[t._v("#")]),t._v(" CoroutineWaitList::notifyFirst")]),t._v(" "),a("p",[t._v("Put first-in-list coroutine back to its processor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("notifyFirst")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"coroutinewaitlist-notifyall"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-notifyall"}},[t._v("#")]),t._v(" CoroutineWaitList::notifyAll")]),t._v(" "),a("p",[t._v("Put all coroutines back to its processors and clear wait-list.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("notifyAll")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"coroutinewaitlist-listener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-listener"}},[t._v("#")]),t._v(" CoroutineWaitList::Listener")]),t._v(" "),a("p",[t._v("Listener for new items in the wait-list.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineWaitList")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Listener")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-listener-~listener"}},[t._v("~Listener")])]),t._v(" "),a("td",[t._v("Default virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#coroutinewaitlist-listener-onnewitem"}},[t._v("onNewItem")])]),t._v(" "),a("td",[t._v("Called when new item is pushed to the list.")])])])]),t._v(" "),a("h3",{attrs:{id:"coroutinewaitlist-listener-listener"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-listener-listener"}},[t._v("#")]),t._v(" CoroutineWaitList::Listener::~Listener")]),t._v(" "),a("p",[t._v("Default virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Listener")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"coroutinewaitlist-listener-onnewitem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutinewaitlist-listener-onnewitem"}},[t._v("#")]),t._v(" CoroutineWaitList::Listener::onNewItem")]),t._v(" "),a("p",[t._v("Called when new item is pushed to the list. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" list - list where new item was pushed to. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onNewItem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineWaitList"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" list"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/139.664b50bd.js b/docs/.vuepress/dist/assets/js/139.664b50bd.js deleted file mode 100644 index 6fdb82418..000000000 --- a/docs/.vuepress/dist/assets/js/139.664b50bd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{511:function(r,t,a){"use strict";a.r(t);var s=a(42),e=Object(s.a)({},(function(){var r=this,t=r.$createElement,a=r._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[a("h1",{attrs:{id:"error-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-hpp"}},[r._v("#")]),r._v(" Error.hpp"),a("seo")],1),r._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/Error.hpp",target:"_blank",rel:"noopener noreferrer"}},[r._v("This File On Github"),a("OutboundLink")],1),a("br"),r._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/Error.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[r._v("Ask A Question"),a("OutboundLink")],1)]),r._v(" "),a("p",[a("code",[r._v("API: latest")]),a("br"),r._v(" "),a("code",[r._v("module: oatpp")]),a("br"),r._v(" "),a("code",[r._v('#include "oatpp/core/async/Error.hpp"')])]),r._v(" "),a("h2",{attrs:{id:"error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error"}},[r._v("#")]),r._v(" Error")]),r._v(" "),a("p",[r._v("Class to hold and communicate errors between Coroutines")]),r._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("class")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[r._v("Error")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("public")]),r._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[r._v("#")]),r._v(" Methods")]),r._v(" "),a("table",[a("thead",[a("tr",[a("th",[r._v("Return Type")]),r._v(" "),a("th",[r._v("Name")]),r._v(" "),a("th",[r._v("Summary")])])]),r._v(" "),a("tbody",[a("tr",[a("td",[a("code",[r._v("[none]")])]),r._v(" "),a("td",[a("a",{attrs:{href:"#error-error"}},[r._v("Error")])]),r._v(" "),a("td",[r._v("Constructor.")])]),r._v(" "),a("tr",[a("td",[a("code",[r._v("[none]")])]),r._v(" "),a("td",[a("a",{attrs:{href:"#error-~error"}},[r._v("~Error")])]),r._v(" "),a("td",[r._v("Virtual destructor.")])]),r._v(" "),a("tr",[a("td",[a("code",[r._v("const char*")])]),r._v(" "),a("td",[a("a",{attrs:{href:"#error-what"}},[r._v("what")])]),r._v(" "),a("td",[r._v("Error explanation.")])]),r._v(" "),a("tr",[a("td",[a("code",[r._v("bool")])]),r._v(" "),a("td",[a("a",{attrs:{href:"#error-is"}},[r._v("is")])]),r._v(" "),a("td",[r._v("Check if error belongs to specified class.")])])])]),r._v(" "),a("h3",{attrs:{id:"error-error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-error"}},[r._v("#")]),r._v(" Error::Error")]),r._v(" "),a("p",[r._v("Constructor. "),a("ul",[a("li",[a("strong",[r._v("@param")]),r._v(" what - error explanation. ")])])]),r._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[r._v("Error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("string"),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("&")]),r._v(" what"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n")])])]),a("h3",{attrs:{id:"error-error-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-error-2"}},[r._v("#")]),r._v(" Error::~Error")]),r._v(" "),a("p",[r._v("Virtual destructor.")]),r._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("virtual")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[r._v("Error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("=")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("default")]),r._v("\n")])])]),a("h3",{attrs:{id:"error-what"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-what"}},[r._v("#")]),r._v(" Error::what")]),r._v(" "),a("p",[r._v("Error explanation. "),a("ul",[a("li",[a("strong",[r._v("@return")])])])]),r._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("*")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[r._v("what")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])]),a("h3",{attrs:{id:"error-is"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-is"}},[r._v("#")]),r._v(" Error::is")]),r._v(" "),a("p",[r._v("Check if error belongs to specified class. "),a("ul",[a("li",[a("strong",[r._v("@tparam")]),r._v(" ErrorClass ")]),a("li",[a("strong",[r._v("@return")]),r._v(" - "),a("code",[r._v("true")]),r._v(" if error is of specified class ")])])]),r._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("class")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[r._v("ErrorClass")]),a("span",{pre:!0,attrs:{class:"token operator"}},[r._v(">")]),r._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("bool")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[r._v("is")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/14.0d8a7fd1.js b/docs/.vuepress/dist/assets/js/14.0d8a7fd1.js deleted file mode 100644 index 57a517568..000000000 --- a/docs/.vuepress/dist/assets/js/14.0d8a7fd1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{386:function(t,e,s){"use strict";s.r(e);var a=s(42),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"client-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client-hpp"}},[t._v("#")]),t._v(" Client.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/issues/new?title=API%20question&body=In%20file:%20oatpp-consul/rest/Client.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-consul")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-consul/rest/Client.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client"}},[t._v("#")]),t._v(" Client")]),t._v(" "),s("p",[t._v("oatpp::consul::rest::Client provides consul rest API calls for Simple and Async oatpp API. "),s("br"),t._v(" For more convenient methods see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-consul/Client/#client"}},[t._v("oatpp::consul::Client")]),t._v(". "),s("br"),t._v(" See Rest Client full declaration on github: "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("rest/Client.hpp"),s("OutboundLink")],1),t._v(";")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Client")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/140.0db40956.js b/docs/.vuepress/dist/assets/js/140.0db40956.js deleted file mode 100644 index 1fe5f2fbd..000000000 --- a/docs/.vuepress/dist/assets/js/140.0db40956.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{512:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"executor-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-hpp"}},[t._v("#")]),t._v(" Executor.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/Executor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/Executor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/async/Executor.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"executor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor"}},[t._v("#")]),t._v(" Executor")]),t._v(" "),a("p",[t._v("Asynchronous Executor."),a("br"),t._v(" Executes coroutines in multiple "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Processor/#processor"}},[t._v("oatpp::async::Processor")]),t._v(" allocating one thread per processor.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Executor")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-value-suggested"}},[t._v("VALUE_SUGGESTED")])]),t._v(" "),a("td",[t._v("Special value to indicate that Executor should choose it's own the value of specified parameter.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-io-worker-type-naive"}},[t._v("IO_WORKER_TYPE_NAIVE")])]),t._v(" "),a("td",[t._v("IO Worker type naive.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-io-worker-type-event"}},[t._v("IO_WORKER_TYPE_EVENT")])]),t._v(" "),a("td",[t._v("IO Worker type event.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-executor"}},[t._v("Executor")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-~executor"}},[t._v("~Executor")])]),t._v(" "),a("td",[t._v("Non-virtual Destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-join"}},[t._v("join")])]),t._v(" "),a("td",[t._v("Join all worker-threads.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-detach"}},[t._v("detach")])]),t._v(" "),a("td",[t._v("Detach all worker-threads.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Stop Executor. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-execute"}},[t._v("execute")])]),t._v(" "),a("td",[t._v("Execute Coroutine.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-gettaskscount"}},[t._v("getTasksCount")])]),t._v(" "),a("td",[t._v("Get number of all not finished tasks.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#executor-waittasksfinished"}},[t._v("waitTasksFinished")])]),t._v(" "),a("td",[t._v("Wait until all tasks are finished.")])])])]),t._v(" "),a("h3",{attrs:{id:"executor-value-suggested"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-value-suggested"}},[t._v("#")]),t._v(" Executor::VALUE_SUGGESTED")]),t._v(" "),a("p",[t._v("Special value to indicate that Executor should choose it's own the value of specified parameter.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 VALUE_SUGGESTED "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-io-worker-type-naive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-io-worker-type-naive"}},[t._v("#")]),t._v(" Executor::IO_WORKER_TYPE_NAIVE")]),t._v(" "),a("p",[t._v("IO Worker type naive.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 IO_WORKER_TYPE_NAIVE "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-io-worker-type-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-io-worker-type-event"}},[t._v("#")]),t._v(" Executor::IO_WORKER_TYPE_EVENT")]),t._v(" "),a("p",[t._v("IO Worker type event.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 IO_WORKER_TYPE_EVENT "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-executor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-executor"}},[t._v("#")]),t._v(" Executor::Executor")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" processorWorkersCount - number of data processing workers. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" ioWorkersCount - number of I/O processing workers. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" timerWorkersCount - number of timer processing workers. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" IOWorkerType ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 processorWorkersCount "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 ioWorkersCount "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 timerWorkersCount "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 ioWorkerType "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" VALUE_SUGGESTED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-executor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-executor-2"}},[t._v("#")]),t._v(" Executor::~Executor")]),t._v(" "),a("p",[t._v("Non-virtual Destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-join"}},[t._v("#")]),t._v(" Executor::join")]),t._v(" "),a("p",[t._v("Join all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-detach"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-detach"}},[t._v("#")]),t._v(" Executor::detach")]),t._v(" "),a("p",[t._v("Detach all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-stop"}},[t._v("#")]),t._v(" Executor::stop")]),t._v(" "),a("p",[t._v("Stop Executor. "),a("br"),t._v(" After all worker-threads are stopped. Join should unblock.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-execute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-execute"}},[t._v("#")]),t._v(" Executor::execute")]),t._v(" "),a("p",[t._v("Execute Coroutine. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" CoroutineType - type of coroutine to execute. ")]),a("li",[a("strong",[t._v("@tparam")]),t._v(" Args - types of arguments to be passed to Coroutine constructor. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" params - actual arguments to be passed to Coroutine constructor. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" CoroutineType"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" Args"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("execute")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-gettaskscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-gettaskscount"}},[t._v("#")]),t._v(" Executor::getTasksCount")]),t._v(" "),a("p",[t._v("Get number of all not finished tasks. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - number of all not finished tasks. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTasksCount")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"executor-waittasksfinished"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#executor-waittasksfinished"}},[t._v("#")]),t._v(" Executor::waitTasksFinished")]),t._v(" "),a("p",[t._v("Wait until all tasks are finished. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" timeout ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitTasksFinished")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("minutes")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/141.34f300d9.js b/docs/.vuepress/dist/assets/js/141.34f300d9.js deleted file mode 100644 index cb0834434..000000000 --- a/docs/.vuepress/dist/assets/js/141.34f300d9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{513:function(t,a,s){"use strict";s.r(a);var r=s(42),o=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"lock-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-hpp"}},[t._v("#")]),t._v(" Lock.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/Lock.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/Lock.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/async/Lock.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"lock"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock"}},[t._v("#")]),t._v(" Lock")]),t._v(" "),s("p",[t._v("Lock (mutex) for coroutines/threads synchronization. "),s("br"),t._v(" - When called from a thread - must be used with "),s("code",[t._v("std::lock_guard")]),t._v(". - When called from coroutine - must be used with "),s("a",{attrs:{href:"#lockguard"}},[t._v("LockGuard")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Lock")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),t._v(" CoroutineWaitList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Listener "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lock-lock"}},[t._v("Lock")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lock-waitasync"}},[t._v("waitAsync")])]),t._v(" "),s("td",[t._v("Wait until lock is unlocked, and repeat.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lock-lock"}},[t._v("lock")])]),t._v(" "),s("td",[t._v("Lock on current thread. !Should NOT be called from within the Coroutine!")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lock-unlock"}},[t._v("unlock")])]),t._v(" "),s("td",[t._v("Unlock")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lock-try-lock"}},[t._v("try_lock")])]),t._v(" "),s("td",[t._v("Try to lock.")])])])]),t._v(" "),s("h3",{attrs:{id:"lock-lock"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-lock"}},[t._v("#")]),t._v(" Lock::Lock")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Lock")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lock-waitasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-waitasync"}},[t._v("#")]),t._v(" Lock::waitAsync")]),t._v(" "),s("p",[t._v("Wait until lock is unlocked, and repeat. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lock-lock-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-lock-2"}},[t._v("#")]),t._v(" Lock::lock")]),t._v(" "),s("p",[t._v("Lock on current thread. !Should NOT be called from within the Coroutine!")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("lock")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lock-unlock"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-unlock"}},[t._v("#")]),t._v(" Lock::unlock")]),t._v(" "),s("p",[t._v("Unlock")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("unlock")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lock-try-lock"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lock-try-lock"}},[t._v("#")]),t._v(" Lock::try_lock")]),t._v(" "),s("p",[t._v("Try to lock. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if the lock was acquired, "),s("code",[t._v("false")]),t._v(" otherwise. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("try_lock")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"lockguard"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard"}},[t._v("#")]),t._v(" LockGuard")]),t._v(" "),s("p",[t._v("Asynchronous lock guard. "),s("br"),t._v(" Should be used as a lock guard in coroutines.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("LockGuard")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-coroutinestarter"}},[t._v("CoroutineStarter")])]),t._v(" "),s("td",[t._v("Convenince typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-lockguard"}},[t._v("LockGuard")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Constructor with lock. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-~lockguard"}},[t._v("~LockGuard")])]),t._v(" "),s("td",[t._v("Non-virtual destructor. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-setlockobject"}},[t._v("setLockObject")])]),t._v(" "),s("td",[t._v("Set lock object.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-lockasync"}},[t._v("lockAsync")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Lock the lock. ")]),s("li",[t._v("Lock and guard the lock. "),s("br")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Action")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-lockasyncinline"}},[t._v("lockAsyncInline")])]),t._v(" "),s("td",[t._v("Lock the lock. (Async-inline usage. Should be called from a separate method of coroutine).")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#lockguard-unlock"}},[t._v("unlock")])]),t._v(" "),s("td",[t._v("Unlock guarded lock.")])])])]),t._v(" "),s("h3",{attrs:{id:"lockguard-coroutinestarter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-coroutinestarter"}},[t._v("#")]),t._v(" LockGuard::CoroutineStarter")]),t._v(" "),s("p",[t._v("Convenince typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter CoroutineStarter\n")])])]),s("h3",{attrs:{id:"lockguard-lockguard"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-lockguard"}},[t._v("#")]),t._v(" LockGuard::LockGuard")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("LockGuard")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor with lock."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("LockGuard")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Lock"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" lock"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"lockguard-lockguard-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-lockguard-2"}},[t._v("#")]),t._v(" LockGuard::~LockGuard")]),t._v(" "),s("p",[t._v("Non-virtual destructor. "),s("br"),t._v(" Will unlock the Lock if owns lock.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("LockGuard")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lockguard-setlockobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-setlockobject"}},[t._v("#")]),t._v(" LockGuard::setLockObject")]),t._v(" "),s("p",[t._v("Set lock object. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" lock - lock object. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLockObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Lock"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" lock"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lockguard-lockasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-lockasync"}},[t._v("#")]),t._v(" LockGuard::lockAsync")]),t._v(" "),s("ol",[s("li",[t._v("Lock the lock. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("lockAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Lock and guard the lock. "),s("br"),t._v(" Same as "),s("code",[t._v("setLockObject(lock) + lockAsync();")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" lock - lock to lock and guard. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("lockAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Lock"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" lock"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"lockguard-lockasyncinline"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-lockasyncinline"}},[t._v("#")]),t._v(" LockGuard::lockAsyncInline")]),t._v(" "),s("p",[t._v("Lock the lock. (Async-inline usage. Should be called from a separate method of coroutine). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" nextAction - action to take after lock is locked. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("lockAsyncInline")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" nextAction"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"lockguard-unlock"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lockguard-unlock"}},[t._v("#")]),t._v(" LockGuard::unlock")]),t._v(" "),s("p",[t._v("Unlock guarded lock.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("unlock")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"synchronize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#synchronize"}},[t._v("#")]),t._v(" synchronize")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::async")])]),t._v(" "),s("p",[t._v("Synchronize coroutine execution by lock. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" lock - "),s("a",{attrs:{href:"#lock"}},[t._v("Lock")]),t._v(" for synchronization. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" starter - Coroutine to execute in synchronized manner. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - starter of synchronization coroutine (wrapper coroutine). "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("synchronize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Lock "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("lock"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" CoroutineStarter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" starter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/142.c82f9ca4.js b/docs/.vuepress/dist/assets/js/142.c82f9ca4.js deleted file mode 100644 index 7928e40bd..000000000 --- a/docs/.vuepress/dist/assets/js/142.c82f9ca4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{514:function(s,t,a){"use strict";a.r(t);var r=a(42),e=Object(r.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"processor-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-hpp"}},[s._v("#")]),s._v(" Processor.hpp"),a("seo")],1),s._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/Processor.hpp",target:"_blank",rel:"noopener noreferrer"}},[s._v("This File On Github"),a("OutboundLink")],1),a("br"),s._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/Processor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[s._v("Ask A Question"),a("OutboundLink")],1)]),s._v(" "),a("p",[a("code",[s._v("API: latest")]),a("br"),s._v(" "),a("code",[s._v("module: oatpp")]),a("br"),s._v(" "),a("code",[s._v('#include "oatpp/core/async/Processor.hpp"')])]),s._v(" "),a("h2",{attrs:{id:"processor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor"}},[s._v("#")]),s._v(" Processor")]),s._v(" "),a("p",[s._v("Asynchronous Processor."),a("br"),s._v(" Responsible for processing and managing multiple Coroutines. Do not use bare processor to run coroutines. Use "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[s._v("oatpp::async::Executor")]),s._v(" instead;.")],1),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Processor")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[s._v("#")]),s._v(" Methods")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("Return Type")]),s._v(" "),a("th",[s._v("Name")]),s._v(" "),a("th",[s._v("Summary")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-addworker"}},[s._v("addWorker")])]),s._v(" "),a("td",[s._v("Add dedicated co-worker to processor.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-pushonetask"}},[s._v("pushOneTask")])]),s._v(" "),a("td",[s._v("Push one Coroutine back to processor.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-pushtasks"}},[s._v("pushTasks")])]),s._v(" "),a("td",[s._v("Push list of Coroutines back to processor.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-execute"}},[s._v("execute")])]),s._v(" "),a("td",[s._v("Execute Coroutine.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-waitfortasks"}},[s._v("waitForTasks")])]),s._v(" "),a("td",[s._v("Sleep and wait for tasks.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("bool")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-iterate"}},[s._v("iterate")])]),s._v(" "),a("td",[s._v("Iterate Coroutines.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("void")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-stop"}},[s._v("stop")])]),s._v(" "),a("td",[s._v("Stop waiting for new tasks.")])]),s._v(" "),a("tr",[a("td",[a("code",[s._v("v_int32")])]),s._v(" "),a("td",[a("a",{attrs:{href:"#processor-gettaskscount"}},[s._v("getTasksCount")])]),s._v(" "),a("td",[s._v("Get number of all not-finished tasks including tasks rescheduled for processor's co-workers.")])])])]),s._v(" "),a("h3",{attrs:{id:"processor-addworker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-addworker"}},[s._v("#")]),s._v(" Processor::addWorker")]),s._v(" "),a("p",[s._v("Add dedicated co-worker to processor. "),a("ul",[a("li",[a("strong",[s._v("@param")]),s._v(" worker - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/Worker/#worker"}},[s._v("oatpp::async::worker::Worker")]),s._v(". ")],1)])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("addWorker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("worker"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("Worker"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" worker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-pushonetask"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-pushonetask"}},[s._v("#")]),s._v(" Processor::pushOneTask")]),s._v(" "),a("p",[s._v("Push one Coroutine back to processor. "),a("ul",[a("li",[a("strong",[s._v("@param")]),s._v(" coroutine - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[s._v("oatpp::async::CoroutineHandle")]),s._v(" previously popped-out(rescheduled to coworker) from this processor. ")],1)])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("pushOneTask")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v(" coroutine"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-pushtasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-pushtasks"}},[s._v("#")]),s._v(" Processor::pushTasks")]),s._v(" "),a("p",[s._v("Push list of Coroutines back to processor. "),a("ul",[a("li",[a("strong",[s._v("@param")]),s._v(" tasks - oatpp::async::utils::FastQueue of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[s._v("oatpp::async::CoroutineHandle")]),s._v(" previously popped-out(rescheduled to coworker) from this processor. ")],1)])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("pushTasks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("utils"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("FastQueue"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" tasks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-execute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-execute"}},[s._v("#")]),s._v(" Processor::execute")]),s._v(" "),a("p",[s._v("Execute Coroutine. "),a("ul",[a("li",[a("strong",[s._v("@tparam")]),s._v(" CoroutineType - type of coroutine to execute. ")]),a("li",[a("strong",[s._v("@tparam")]),s._v(" Args - types of arguments to be passed to Coroutine constructor. ")]),a("li",[a("strong",[s._v("@param")]),s._v(" params - actual arguments to be passed to Coroutine constructor. ")])])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("typename")]),s._v(" CoroutineType"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("typename")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v(" Args"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("execute")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-waitfortasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-waitfortasks"}},[s._v("#")]),s._v(" Processor::waitForTasks")]),s._v(" "),a("p",[s._v("Sleep and wait for tasks.")]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("waitForTasks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-iterate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-iterate"}},[s._v("#")]),s._v(" Processor::iterate")]),s._v(" "),a("p",[s._v("Iterate Coroutines. "),a("ul",[a("li",[a("strong",[s._v("@param")]),s._v(" numIterations - number of iterations. ")]),a("li",[a("strong",[s._v("@return")]),s._v(" - "),a("code",[s._v("true")]),s._v(" if there are active Coroutines. ")])])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("bool")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("iterate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("v_int32 numIterations"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-stop"}},[s._v("#")]),s._v(" Processor::stop")]),s._v(" "),a("p",[s._v("Stop waiting for new tasks.")]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("h3",{attrs:{id:"processor-gettaskscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#processor-gettaskscount"}},[s._v("#")]),s._v(" Processor::getTasksCount")]),s._v(" "),a("p",[s._v("Get number of all not-finished tasks including tasks rescheduled for processor's co-workers. "),a("ul",[a("li",[a("strong",[s._v("@return")]),s._v(" - number of not-finished tasks. ")])])]),s._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[s._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getTasksCount")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/143.3f2714a9.js b/docs/.vuepress/dist/assets/js/143.3f2714a9.js deleted file mode 100644 index 0d7d7ca5e..000000000 --- a/docs/.vuepress/dist/assets/js/143.3f2714a9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{515:function(t,e,s){"use strict";s.r(e);var o=s(42),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"fastqueue-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fastqueue-hpp"}},[t._v("#")]),t._v(" FastQueue.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/utils/FastQueue.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/utils/FastQueue.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/async/utils/FastQueue.hpp"')])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/144.89c2bae1.js b/docs/.vuepress/dist/assets/js/144.89c2bae1.js deleted file mode 100644 index c9d03bf0e..000000000 --- a/docs/.vuepress/dist/assets/js/144.89c2bae1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{516:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"ioeventworker-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-hpp"}},[t._v("#")]),t._v(" IOEventWorker.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/worker/IOEventWorker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/worker/IOEventWorker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/async/worker/IOEventWorker.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"ioeventworker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker"}},[t._v("#")]),t._v(" IOEventWorker")]),t._v(" "),a("p",[t._v("Event-based implementation of I/O worker. "),a("ul",[a("li",[a("code",[t._v("kqueue")]),t._v(" based implementation - for Mac/BSD systems")]),t._v(" "),a("li",[a("code",[t._v("epoll")]),t._v(" based implementation - for Linux systems")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOEventWorker")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-ioeventworker"}},[t._v("IOEventWorker")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-~ioeventworker"}},[t._v("~IOEventWorker")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-pushtasks"}},[t._v("pushTasks")])]),t._v(" "),a("td",[t._v("Push list of tasks to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-pushonetask"}},[t._v("pushOneTask")])]),t._v(" "),a("td",[t._v("Push one task to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-run"}},[t._v("run")])]),t._v(" "),a("td",[t._v("Run worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Break run loop.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-join"}},[t._v("join")])]),t._v(" "),a("td",[t._v("Join all worker-threads.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworker-detach"}},[t._v("detach")])]),t._v(" "),a("td",[t._v("Detach all worker-threads.")])])])]),t._v(" "),a("h3",{attrs:{id:"ioeventworker-ioeventworker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-ioeventworker"}},[t._v("#")]),t._v(" IOEventWorker::IOEventWorker")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOEventWorker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOEventWorkerForeman"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" foreman"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Action"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOEventType specialization"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ioeventworker-ioeventworker-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-ioeventworker-2"}},[t._v("#")]),t._v(" IOEventWorker::~IOEventWorker")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOEventWorker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ioeventworker-pushtasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-pushtasks"}},[t._v("#")]),t._v(" IOEventWorker::pushTasks")]),t._v(" "),a("p",[t._v("Push list of tasks to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tasks - oatpp::async::utils::FastQueue of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushTasks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FastQueue"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tasks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworker-pushonetask"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-pushonetask"}},[t._v("#")]),t._v(" IOEventWorker::pushOneTask")]),t._v(" "),a("p",[t._v("Push one task to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" task - CoroutineHandle. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushOneTask")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" task"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworker-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-run"}},[t._v("#")]),t._v(" IOEventWorker::run")]),t._v(" "),a("p",[t._v("Run worker.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ioeventworker-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-stop"}},[t._v("#")]),t._v(" IOEventWorker::stop")]),t._v(" "),a("p",[t._v("Break run loop.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworker-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-join"}},[t._v("#")]),t._v(" IOEventWorker::join")]),t._v(" "),a("p",[t._v("Join all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworker-detach"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworker-detach"}},[t._v("#")]),t._v(" IOEventWorker::detach")]),t._v(" "),a("p",[t._v("Detach all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"ioeventworkerforeman"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman"}},[t._v("#")]),t._v(" IOEventWorkerForeman")]),t._v(" "),a("p",[t._v("Class responsible to assign I/O tasks to specific "),a("a",{attrs:{href:"#ioeventworker"}},[t._v("IOEventWorker")]),t._v(' according to worker\'s "specialization". '),a("br"),t._v(" Needed in order to support full-duplex I/O mode without duplicating file-descriptors.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOEventWorkerForeman")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-ioeventworkerforeman"}},[t._v("IOEventWorkerForeman")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-~ioeventworkerforeman"}},[t._v("~IOEventWorkerForeman")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-pushtasks"}},[t._v("pushTasks")])]),t._v(" "),a("td",[t._v("Push list of tasks to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-pushonetask"}},[t._v("pushOneTask")])]),t._v(" "),a("td",[t._v("Push one task to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Break run loop.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-join"}},[t._v("join")])]),t._v(" "),a("td",[t._v("Join all worker-threads.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ioeventworkerforeman-detach"}},[t._v("detach")])]),t._v(" "),a("td",[t._v("Detach all worker-threads.")])])])]),t._v(" "),a("h3",{attrs:{id:"ioeventworkerforeman-ioeventworkerforeman"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-ioeventworkerforeman"}},[t._v("#")]),t._v(" IOEventWorkerForeman::IOEventWorkerForeman")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOEventWorkerForeman")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-ioeventworkerforeman-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-ioeventworkerforeman-2"}},[t._v("#")]),t._v(" IOEventWorkerForeman::~IOEventWorkerForeman")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOEventWorkerForeman")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-pushtasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-pushtasks"}},[t._v("#")]),t._v(" IOEventWorkerForeman::pushTasks")]),t._v(" "),a("p",[t._v("Push list of tasks to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tasks - oatpp::async::utils::FastQueue of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushTasks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FastQueue"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tasks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-pushonetask"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-pushonetask"}},[t._v("#")]),t._v(" IOEventWorkerForeman::pushOneTask")]),t._v(" "),a("p",[t._v("Push one task to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" task - CoroutineHandle. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushOneTask")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" task"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-stop"}},[t._v("#")]),t._v(" IOEventWorkerForeman::stop")]),t._v(" "),a("p",[t._v("Break run loop.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-join"}},[t._v("#")]),t._v(" IOEventWorkerForeman::join")]),t._v(" "),a("p",[t._v("Join all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ioeventworkerforeman-detach"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ioeventworkerforeman-detach"}},[t._v("#")]),t._v(" IOEventWorkerForeman::detach")]),t._v(" "),a("p",[t._v("Detach all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/145.00ef72c6.js b/docs/.vuepress/dist/assets/js/145.00ef72c6.js deleted file mode 100644 index 74af50920..000000000 --- a/docs/.vuepress/dist/assets/js/145.00ef72c6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{517:function(t,a,s){"use strict";s.r(a);var r=s(42),e=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"ioworker-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-hpp"}},[t._v("#")]),t._v(" IOWorker.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/worker/IOWorker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/worker/IOWorker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/async/worker/IOWorker.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"ioworker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker"}},[t._v("#")]),t._v(" IOWorker")]),t._v(" "),s("p",[t._v("Naive implementation of IOWorker. Polls all I/O handles in a loop. Reschedules long-waiting handles to Timer.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOWorker")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Worker "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-ioworker"}},[t._v("IOWorker")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-pushtasks"}},[t._v("pushTasks")])]),t._v(" "),s("td",[t._v("Push list of tasks to worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-pushonetask"}},[t._v("pushOneTask")])]),t._v(" "),s("td",[t._v("Push one task to worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-run"}},[t._v("run")])]),t._v(" "),s("td",[t._v("Run worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-stop"}},[t._v("stop")])]),t._v(" "),s("td",[t._v("Break run loop.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-join"}},[t._v("join")])]),t._v(" "),s("td",[t._v("Join all worker-threads.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ioworker-detach"}},[t._v("detach")])]),t._v(" "),s("td",[t._v("Detach all worker-threads.")])])])]),t._v(" "),s("h3",{attrs:{id:"ioworker-ioworker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-ioworker"}},[t._v("#")]),t._v(" IOWorker::IOWorker")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOWorker")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"ioworker-pushtasks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-pushtasks"}},[t._v("#")]),t._v(" IOWorker::pushTasks")]),t._v(" "),s("p",[t._v("Push list of tasks to worker. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" tasks - oatpp::async::utils::FastQueue of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushTasks")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FastQueue"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tasks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"ioworker-pushonetask"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-pushonetask"}},[t._v("#")]),t._v(" IOWorker::pushOneTask")]),t._v(" "),s("p",[t._v("Push one task to worker. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" task - CoroutineHandle. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushOneTask")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" task"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"ioworker-run"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-run"}},[t._v("#")]),t._v(" IOWorker::run")]),t._v(" "),s("p",[t._v("Run worker.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"ioworker-stop"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-stop"}},[t._v("#")]),t._v(" IOWorker::stop")]),t._v(" "),s("p",[t._v("Break run loop.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"ioworker-join"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-join"}},[t._v("#")]),t._v(" IOWorker::join")]),t._v(" "),s("p",[t._v("Join all worker-threads.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"ioworker-detach"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ioworker-detach"}},[t._v("#")]),t._v(" IOWorker::detach")]),t._v(" "),s("p",[t._v("Detach all worker-threads.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/146.aadfee59.js b/docs/.vuepress/dist/assets/js/146.aadfee59.js deleted file mode 100644 index 9505c8e4f..000000000 --- a/docs/.vuepress/dist/assets/js/146.aadfee59.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{518:function(t,r,a){"use strict";a.r(r);var s=a(42),e=Object(s.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"timerworker-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-hpp"}},[t._v("#")]),t._v(" TimerWorker.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/worker/TimerWorker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/worker/TimerWorker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/async/worker/TimerWorker.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"timerworker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker"}},[t._v("#")]),t._v(" TimerWorker")]),t._v(" "),a("p",[t._v("Timer worker. Used to wait for timer-scheduled coroutines.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TimerWorker")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Worker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-timerworker"}},[t._v("TimerWorker")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-pushtasks"}},[t._v("pushTasks")])]),t._v(" "),a("td",[t._v("Push list of tasks to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-pushonetask"}},[t._v("pushOneTask")])]),t._v(" "),a("td",[t._v("Push one task to worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-run"}},[t._v("run")])]),t._v(" "),a("td",[t._v("Run worker.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Break run loop.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-join"}},[t._v("join")])]),t._v(" "),a("td",[t._v("Join all worker-threads.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#timerworker-detach"}},[t._v("detach")])]),t._v(" "),a("td",[t._v("Detach all worker-threads.")])])])]),t._v(" "),a("h3",{attrs:{id:"timerworker-timerworker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-timerworker"}},[t._v("#")]),t._v(" TimerWorker::TimerWorker")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" granularity - minimum possible time to wait. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("TimerWorker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" granularity "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("milliseconds")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"timerworker-pushtasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-pushtasks"}},[t._v("#")]),t._v(" TimerWorker::pushTasks")]),t._v(" "),a("p",[t._v("Push list of tasks to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tasks - oatpp::aysnc::utils::FastQueue of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushTasks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FastQueue"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tasks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"timerworker-pushonetask"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-pushonetask"}},[t._v("#")]),t._v(" TimerWorker::pushOneTask")]),t._v(" "),a("p",[t._v("Push one task to worker. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" task - CoroutineHandle. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushOneTask")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" task"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"timerworker-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-run"}},[t._v("#")]),t._v(" TimerWorker::run")]),t._v(" "),a("p",[t._v("Run worker.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"timerworker-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-stop"}},[t._v("#")]),t._v(" TimerWorker::stop")]),t._v(" "),a("p",[t._v("Break run loop.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"timerworker-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-join"}},[t._v("#")]),t._v(" TimerWorker::join")]),t._v(" "),a("p",[t._v("Join all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"timerworker-detach"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timerworker-detach"}},[t._v("#")]),t._v(" TimerWorker::detach")]),t._v(" "),a("p",[t._v("Detach all worker-threads.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);r.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/147.21142741.js b/docs/.vuepress/dist/assets/js/147.21142741.js deleted file mode 100644 index 9c798c200..000000000 --- a/docs/.vuepress/dist/assets/js/147.21142741.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{519:function(t,a,s){"use strict";s.r(a);var r=s(42),e=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"worker-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-hpp"}},[t._v("#")]),t._v(" Worker.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/async/worker/Worker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/async/worker/Worker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/async/worker/Worker.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"worker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker"}},[t._v("#")]),t._v(" Worker")]),t._v(" "),s("p",[t._v("Worker base class. Workers are used by "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(" to reschedule worker-specific tasks from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Processor/#processor"}},[t._v("oatpp::async::Processor")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Worker")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-worker"}},[t._v("Worker")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-~worker"}},[t._v("~Worker")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-pushtasks"}},[t._v("pushTasks")])]),t._v(" "),s("td",[t._v("Push list of tasks to worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-pushonetask"}},[t._v("pushOneTask")])]),t._v(" "),s("td",[t._v("Push one task to worker.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-stop"}},[t._v("stop")])]),t._v(" "),s("td",[t._v("Break run loop.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-join"}},[t._v("join")])]),t._v(" "),s("td",[t._v("Join all worker-threads.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-detach"}},[t._v("detach")])]),t._v(" "),s("td",[t._v("Detach all worker-threads.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Type")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#worker-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get worker type.")])])])]),t._v(" "),s("h3",{attrs:{id:"worker-worker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-worker"}},[t._v("#")]),t._v(" Worker::Worker")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" type - worker type - one of "),s("a",{attrs:{href:"#worker-type"}},[t._v("Worker::Type")]),t._v(" values. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Worker")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Type type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-worker-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-worker-2"}},[t._v("#")]),t._v(" Worker::~Worker")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Worker")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-pushtasks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-pushtasks"}},[t._v("#")]),t._v(" Worker::pushTasks")]),t._v(" "),s("p",[t._v("Push list of tasks to worker. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" tasks - oatpp::async::utils::FastQueue of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushTasks")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FastQueue"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tasks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-pushonetask"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-pushonetask"}},[t._v("#")]),t._v(" Worker::pushOneTask")]),t._v(" "),s("p",[t._v("Push one task to worker. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" task - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinehandle"}},[t._v("oatpp::async::CoroutineHandle")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushOneTask")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CoroutineHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" task"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-stop"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-stop"}},[t._v("#")]),t._v(" Worker::stop")]),t._v(" "),s("p",[t._v("Break run loop.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-join"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-join"}},[t._v("#")]),t._v(" Worker::join")]),t._v(" "),s("p",[t._v("Join all worker-threads.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-detach"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-detach"}},[t._v("#")]),t._v(" Worker::detach")]),t._v(" "),s("p",[t._v("Detach all worker-threads.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("detach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-gettype"}},[t._v("#")]),t._v(" Worker::getType")]),t._v(" "),s("p",[t._v("Get worker type. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - one of "),s("a",{attrs:{href:"#worker-type"}},[t._v("Worker::Type")]),t._v(" values. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Type "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"worker-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-type"}},[t._v("#")]),t._v(" Worker::Type")]),t._v(" "),s("p",[t._v("Worker type")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" async "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" worker "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Worker")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-type-processor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-type-processor"}},[t._v("#")]),t._v(" Worker::Type::PROCESSOR")]),t._v(" "),s("p",[t._v("Worker type - general processor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("PROCESSOR "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-type-timer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-type-timer"}},[t._v("#")]),t._v(" Worker::Type::TIMER")]),t._v(" "),s("p",[t._v("Worker type - timer processor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("TIMER "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-type-io"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-type-io"}},[t._v("#")]),t._v(" Worker::Type::IO")]),t._v(" "),s("p",[t._v("Worker type - I/O processor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("IO "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),s("h3",{attrs:{id:"worker-type-types-count"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#worker-type-types-count"}},[t._v("#")]),t._v(" Worker::Type::TYPES_COUNT")]),t._v(" "),s("p",[t._v("Number of types in this enum.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("TYPES_COUNT "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/148.bbb814c0.js b/docs/.vuepress/dist/assets/js/148.bbb814c0.js deleted file mode 100644 index 1246fdd7b..000000000 --- a/docs/.vuepress/dist/assets/js/148.bbb814c0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{520:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"commandlinearguments-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-hpp"}},[t._v("#")]),t._v(" CommandLineArguments.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/base/CommandLineArguments.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/base/CommandLineArguments.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/base/CommandLineArguments.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"commandlinearguments"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments"}},[t._v("#")]),t._v(" CommandLineArguments")]),t._v(" "),e("p",[t._v("Class for storing and managing Command Line arguments.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CommandLineArguments")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-commandlinearguments"}},[t._v("CommandLineArguments")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-hasargument"}},[t._v("hasArgument")])]),t._v(" "),e("td",[t._v("Check the specified argument is present.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-getargumentindex"}},[t._v("getArgumentIndex")])]),t._v(" "),e("td",[t._v("Get index of the argument specified by name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-getargumentstartingwith"}},[t._v("getArgumentStartingWith")])]),t._v(" "),e("td",[t._v("Get argument which starts with the prefix. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-getnamedargumentvalue"}},[t._v("getNamedArgumentValue")])]),t._v(" "),e("td",[t._v("Get value preceded by the argument. "),e("br")])])])]),t._v(" "),e("h3",{attrs:{id:"commandlinearguments-commandlinearguments"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-commandlinearguments"}},[t._v("#")]),t._v(" CommandLineArguments::CommandLineArguments")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("CommandLineArguments")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argc - count of arguments in argv[] array. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argv - array of arguments. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("CommandLineArguments")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"commandlinearguments-hasargument"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-hasargument"}},[t._v("#")]),t._v(" CommandLineArguments::hasArgument")]),t._v(" "),e("p",[t._v("Check the specified argument is present. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argName - name of the target argument. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if present. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("hasArgument")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-getargumentindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-getargumentindex"}},[t._v("#")]),t._v(" CommandLineArguments::getArgumentIndex")]),t._v(" "),e("p",[t._v("Get index of the argument specified by name. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argName - name of the target argument. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - index of the argument in argv[] array. -1 if there is no such argument. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getArgumentIndex")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-getargumentstartingwith"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-getargumentstartingwith"}},[t._v("#")]),t._v(" CommandLineArguments::getArgumentStartingWith")]),t._v(" "),e("p",[t._v("Get argument which starts with the prefix. "),e("br"),t._v(" Example: "),e("br"),t._v(" For command line: "),e("code",[t._v("-k -c 1000 -n 100 'http://127.0.0.1:8000/'")]),t._v(" "),e("br"),t._v(" "),e("code",[t._v('getArgumentWhichStartsWith("http") == http://127.0.0.1:8000/')]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argNamePrefix - prefix to search. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" defaultValue - default value to return in case not found. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - argument which starts with the specified prefix. defaultValue if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getArgumentStartingWith")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argNamePrefix"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" defaultValue "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-getnamedargumentvalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-getnamedargumentvalue"}},[t._v("#")]),t._v(" CommandLineArguments::getNamedArgumentValue")]),t._v(" "),e("p",[t._v("Get value preceded by the argument. "),e("br"),t._v(" Example: "),e("br"),t._v(" For command line: "),e("code",[t._v("-k -c 1000 -n 100")]),t._v(" "),e("br"),t._v(" "),e("code",[t._v('getNamedArgumentValue("-c") == "1000"')]),t._v(", "),e("code",[t._v('getNamedArgumentValue("-n") == "100"')]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argName - name of the preceded argument. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" defaultValue - default value to return in case not found. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - value preceded by the argument. defaultValue if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedArgumentValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" defaultValue "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h2",{attrs:{id:"commandlinearguments-parser"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-parser"}},[t._v("#")]),t._v(" CommandLineArguments::Parser")]),t._v(" "),e("p",[t._v("Command Line arguments parser.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CommandLineArguments")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-parser-hasargument"}},[t._v("hasArgument")])]),t._v(" "),e("td",[t._v("Check the specified argument is present among command line arguments.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-parser-getargumentindex"}},[t._v("getArgumentIndex")])]),t._v(" "),e("td",[t._v("get index of the argument with the name == argName")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-parser-getargumentstartingwith"}},[t._v("getArgumentStartingWith")])]),t._v(" "),e("td",[t._v("Get argument which starts with the prefix. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#commandlinearguments-parser-getnamedargumentvalue"}},[t._v("getNamedArgumentValue")])]),t._v(" "),e("td",[t._v("Get value preceded by the argument. "),e("br")])])])]),t._v(" "),e("h3",{attrs:{id:"commandlinearguments-parser-hasargument"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-parser-hasargument"}},[t._v("#")]),t._v(" CommandLineArguments::Parser::hasArgument")]),t._v(" "),e("p",[t._v("Check the specified argument is present among command line arguments. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argc - count of arguments in argv array. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argv - array of arguments. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argName - name of the target argument. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if "),e("code",[t._v("getArgumentIndex(argName) >= 0")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("hasArgument")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-parser-getargumentindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-parser-getargumentindex"}},[t._v("#")]),t._v(" CommandLineArguments::Parser::getArgumentIndex")]),t._v(" "),e("p",[t._v("get index of the argument with the name == argName")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getArgumentIndex")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-parser-getargumentstartingwith"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-parser-getargumentstartingwith"}},[t._v("#")]),t._v(" CommandLineArguments::Parser::getArgumentStartingWith")]),t._v(" "),e("p",[t._v("Get argument which starts with the prefix. "),e("br"),t._v(" Example: "),e("br"),t._v(" For command line: "),e("code",[t._v("-k -c 1000 -n 100 http://127.0.0.1:8000/")]),t._v(" "),e("br"),t._v(" "),e("code",[t._v('getArgumentWhichStartsWith("http") == http://127.0.0.1:8000/')]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argc - count of arguments in argv array. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argv - array of arguments. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argNamePrefix - prefix to search. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" defaultValue - default value to return in case not found. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - argument which starts with the specified prefix. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getArgumentStartingWith")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argNamePrefix"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" defaultValue "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"commandlinearguments-parser-getnamedargumentvalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#commandlinearguments-parser-getnamedargumentvalue"}},[t._v("#")]),t._v(" CommandLineArguments::Parser::getNamedArgumentValue")]),t._v(" "),e("p",[t._v("Get value preceded by the argument. "),e("br"),t._v(" Example: "),e("br"),t._v(" For command line: "),e("code",[t._v("-k -c 1000 -n 100")]),t._v(" "),e("br"),t._v(" "),e("code",[t._v('getNamedArgumentValue("-c") == "1000"')]),t._v(", "),e("code",[t._v('getNamedArgumentValue("-n") == "100"')]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" argc - count of arguments in argv array. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argv - array of arguments. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" argName - name of the preceded argument. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" defaultValue - default value to return in case not found. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - value preceded by the argument. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedArgumentValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" defaultValue "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/149.8e963ef8.js b/docs/.vuepress/dist/assets/js/149.8e963ef8.js deleted file mode 100644 index 7a8cd0921..000000000 --- a/docs/.vuepress/dist/assets/js/149.8e963ef8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{521:function(t,e,o){"use strict";o.r(e);var r=o(42),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"config-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#config-hpp"}},[t._v("#")]),t._v(" Config.hpp"),o("seo")],1),t._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/base/Config.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),o("OutboundLink")],1),o("br"),t._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/base/Config.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),o("OutboundLink")],1)]),t._v(" "),o("p",[o("code",[t._v("API: latest")]),o("br"),t._v(" "),o("code",[t._v("module: oatpp")]),o("br"),t._v(" "),o("code",[t._v('#include "oatpp/core/base/Config.hpp"')])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/15.75c83c3b.js b/docs/.vuepress/dist/assets/js/15.75c83c3b.js deleted file mode 100644 index 6a1e5172c..000000000 --- a/docs/.vuepress/dist/assets/js/15.75c83c3b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{387:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"dtos-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dtos-hpp"}},[t._v("#")]),t._v(" DTOs.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/issues/new?title=API%20question&body=In%20file:%20oatpp-consul/rest/DTOs.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-consul")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-consul/rest/DTOs.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"kvmetadata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata"}},[t._v("#")]),t._v(" KVMetadata")]),t._v(" "),e("p",[t._v("DTO object representing Consul KV Metadata Response. "),e("br"),t._v(" For More info see "),e("a",{attrs:{href:"https://www.consul.io/api/kv.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul KV Store Endpoints"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("KVMetadata")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-key"}},[t._v("key")])]),t._v(" "),e("td",[t._v("Full path of the entry.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-value"}},[t._v("value")])]),t._v(" "),e("td",[t._v("Value. "),e("br"),t._v(' May contain base64 encoded value if no "raw" parameter were specified in request ex.:'),e("code",[t._v('"v1/kv/{key}?raw"')]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-session"}},[t._v("session")])]),t._v(" "),e("td",[t._v("Session.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-createindex"}},[t._v("createIndex")])]),t._v(" "),e("td",[t._v("Internal index value that represents when the entry was created.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-modifyindex"}},[t._v("modifyIndex")])]),t._v(" "),e("td",[t._v("Last index that modified this key.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-lockindex"}},[t._v("lockIndex")])]),t._v(" "),e("td",[t._v("The number of times this key has successfully been acquired in a lock. If the lock is held, the Session key provides the session that owns the lock.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-flags"}},[t._v("flags")])]),t._v(" "),e("td",[t._v("An opaque unsigned integer that can be attached to each entry.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#kvmetadata-getvaluedecoded"}},[t._v("getValueDecoded")])]),t._v(" "),e("td",[t._v("Get base64 decoded "),e("a",{attrs:{href:"#kvmetadata-value"}},[t._v("KVMetadata::value")]),t._v(".")])])])]),t._v(" "),e("h3",{attrs:{id:"kvmetadata-key"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-key"}},[t._v("#")]),t._v(" KVMetadata::key")]),t._v(" "),e("p",[t._v("Full path of the entry.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Key"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-value"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-value"}},[t._v("#")]),t._v(" KVMetadata::value")]),t._v(" "),e("p",[t._v("Value. "),e("br"),t._v(' May contain base64 encoded value if no "raw" parameter were specified in request ex.:'),e("code",[t._v('"v1/kv/{key}?raw"')]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-session"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-session"}},[t._v("#")]),t._v(" KVMetadata::session")]),t._v(" "),e("p",[t._v("Session.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" session"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Session"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-createindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-createindex"}},[t._v("#")]),t._v(" KVMetadata::createIndex")]),t._v(" "),e("p",[t._v("Internal index value that represents when the entry was created.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreateIndex"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-modifyindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-modifyindex"}},[t._v("#")]),t._v(" KVMetadata::modifyIndex")]),t._v(" "),e("p",[t._v("Last index that modified this key.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" modifyIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ModifyIndex"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-lockindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-lockindex"}},[t._v("#")]),t._v(" KVMetadata::lockIndex")]),t._v(" "),e("p",[t._v("The number of times this key has successfully been acquired in a lock. If the lock is held, the Session key provides the session that owns the lock.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" lockIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LockIndex"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-flags"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-flags"}},[t._v("#")]),t._v(" KVMetadata::flags")]),t._v(" "),e("p",[t._v("An opaque unsigned integer that can be attached to each entry.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" flags"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Flags"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"kvmetadata-getvaluedecoded"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kvmetadata-getvaluedecoded"}},[t._v("#")]),t._v(" KVMetadata::getValueDecoded")]),t._v(" "),e("p",[t._v("Get base64 decoded "),e("a",{attrs:{href:"#kvmetadata-value"}},[t._v("KVMetadata::value")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - decoded "),e("a",{attrs:{href:"#kvmetadata-value"}},[t._v("KVMetadata::value")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValueDecoded")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h2",{attrs:{id:"agentcheckregisterpayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload")]),t._v(" "),e("p",[t._v("DTO Object representing Consul Agent Register Check."),e("br"),t._v(" For more information see "),e("a",{attrs:{href:"https://www.consul.io/api/agent/check.html#register-check",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul Agent Register Check"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AgentCheckRegisterPayload")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-name"}},[t._v("name")])]),t._v(" "),e("td",[t._v("Name of the check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-id"}},[t._v("id")])]),t._v(" "),e("td",[t._v("Unique ID for this check on the node.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-interval"}},[t._v("interval")])]),t._v(" "),e("td",[t._v("Frequency at which to run this check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-notes"}},[t._v("notes")])]),t._v(" "),e("td",[t._v("Arbitrary information.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-deregistercriticalserviceafter"}},[t._v("deregisterCriticalServiceAfter")])]),t._v(" "),e("td",[t._v("Specifies that checks associated with a service should deregister after this time.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("List")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-args"}},[t._v("args")])]),t._v(" "),e("td",[t._v("Command arguments to run to update the status of the check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-dockercontainerid"}},[t._v("dockerContainerID")])]),t._v(" "),e("td",[t._v("Specifies that the check is a Docker check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-grpc"}},[t._v("grpc")])]),t._v(" "),e("td",[t._v("Specifies a gRPC check's endpoint that supports the standard "),e("a",{attrs:{href:"https://github.com/grpc/grpc/blob/master/doc/health-checking.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("gRPC health checking protocol"),e("OutboundLink")],1),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-grpcusetls"}},[t._v("grpcUseTLS")])]),t._v(" "),e("td",[t._v("Set "),e("code",[t._v("true")]),t._v("to use TLS for this gRPC health check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-http"}},[t._v("http")])]),t._v(" "),e("td",[t._v("HTTP check's endpoint. Default Method is GET.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-method"}},[t._v("method")])]),t._v(" "),e("td",[t._v("Specifies a different HTTP method to be used for an HTTP check. If not specified GET is used.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-header"}},[t._v("header")])]),t._v(" "),e("td",[t._v("Set of headers that should be set for HTTP checks.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-timeout"}},[t._v("timeout")])]),t._v(" "),e("td",[t._v("Timeout for outgoing connections")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-tlsskipverify"}},[t._v("tlsSkipVerify")])]),t._v(" "),e("td",[t._v("Specifies if the certificate for an HTTPS check should not be verified.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-tcp"}},[t._v("tcp")])]),t._v(" "),e("td",[t._v("Specifies a TCP to connect against the value of TCP (expected to be an IP or hostname plus port combination) every Interval.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-ttl"}},[t._v("ttl")])]),t._v(" "),e("td",[t._v("Specifies this is a TTL check, and the TTL endpoint must be used periodically to update the state of the check.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-serviceid"}},[t._v("serviceID")])]),t._v(" "),e("td",[t._v("Specifies the ID of a service to associate the registered check with an existing service provided by the agent.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload-status"}},[t._v("status")])]),t._v(" "),e("td",[t._v("Initial status of the health check.")])])])]),t._v(" "),e("h3",{attrs:{id:"agentcheckregisterpayload-name"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-name"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::name")]),t._v(" "),e("p",[t._v("Name of the check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-id"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::id")]),t._v(" "),e("p",[t._v("Unique ID for this check on the node.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-interval"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-interval"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::interval")]),t._v(" "),e("p",[t._v("Frequency at which to run this check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" interval"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Interval"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-notes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-notes"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::notes")]),t._v(" "),e("p",[t._v("Arbitrary information.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" notes"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Notes"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-deregistercriticalserviceafter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-deregistercriticalserviceafter"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::deregisterCriticalServiceAfter")]),t._v(" "),e("p",[t._v("Specifies that checks associated with a service should deregister after this time.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" deregisterCriticalServiceAfter"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"DeregisterCriticalServiceAfter"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-args"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-args"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::args")]),t._v(" "),e("p",[t._v("Command arguments to run to update the status of the check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" args"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Args"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-dockercontainerid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-dockercontainerid"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::dockerContainerID")]),t._v(" "),e("p",[t._v("Specifies that the check is a Docker check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" dockerContainerID"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"DockerContainerID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-grpc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-grpc"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::grpc")]),t._v(" "),e("p",[t._v("Specifies a gRPC check's endpoint that supports the standard "),e("a",{attrs:{href:"https://github.com/grpc/grpc/blob/master/doc/health-checking.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("gRPC health checking protocol"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" grpc"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GRPC"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-grpcusetls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-grpcusetls"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::grpcUseTLS")]),t._v(" "),e("p",[t._v("Set "),e("code",[t._v("true")]),t._v("to use TLS for this gRPC health check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" grpcUseTLS"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GRPCUseTLS"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-http"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-http"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::http")]),t._v(" "),e("p",[t._v("HTTP check's endpoint. Default Method is GET.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" http"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"HTTP"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-method"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-method"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::method")]),t._v(" "),e("p",[t._v("Specifies a different HTTP method to be used for an HTTP check. If not specified GET is used.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Method"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-header"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-header"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::header")]),t._v(" "),e("p",[t._v("Set of headers that should be set for HTTP checks.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" header"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Header"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-timeout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-timeout"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::timeout")]),t._v(" "),e("p",[t._v("Timeout for outgoing connections")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" timeout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Timeout"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-tlsskipverify"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-tlsskipverify"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::tlsSkipVerify")]),t._v(" "),e("p",[t._v("Specifies if the certificate for an HTTPS check should not be verified.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" tlsSkipVerify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TLSSkipVerify"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-tcp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-tcp"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::tcp")]),t._v(" "),e("p",[t._v("Specifies a TCP to connect against the value of TCP (expected to be an IP or hostname plus port combination) every Interval.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" tcp"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TCP"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-ttl"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-ttl"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::ttl")]),t._v(" "),e("p",[t._v("Specifies this is a TTL check, and the TTL endpoint must be used periodically to update the state of the check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ttl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TTL"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-serviceid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-serviceid"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::serviceID")]),t._v(" "),e("p",[t._v("Specifies the ID of a service to associate the registered check with an existing service provided by the agent.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceID"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentcheckregisterpayload-status"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentcheckregisterpayload-status"}},[t._v("#")]),t._v(" AgentCheckRegisterPayload::status")]),t._v(" "),e("p",[t._v("Initial status of the health check.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" status"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Status"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"agentserviceregisterpayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload")]),t._v(" "),e("p",[t._v("DTO Object representing Consul Agent Register Service."),e("br"),t._v(" For more information see "),e("a",{attrs:{href:"https://www.consul.io/api/agent/service.html#register-service",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul Agent Register Service"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AgentServiceRegisterPayload")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-name"}},[t._v("name")])]),t._v(" "),e("td",[t._v("Logical name of the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-id"}},[t._v("id")])]),t._v(" "),e("td",[t._v("Unique ID for this service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("List")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-tags"}},[t._v("tags")])]),t._v(" "),e("td",[t._v("List of tags to assign to the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-address"}},[t._v("address")])]),t._v(" "),e("td",[t._v("Specifies the address of the service. If not provided, the agent's address is used as the address for the service during DNS queries.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-meta"}},[t._v("meta")])]),t._v(" "),e("td",[t._v("Specifies arbitrary KV metadata linked to the service instance.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-port"}},[t._v("port")])]),t._v(" "),e("td",[t._v("Port of the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-kind"}},[t._v("kind")])]),t._v(" "),e("td",[t._v('The kind of service. Defaults to "" which is a typical Consul service. This value may also be "connect-proxy" for services that are Connect-capable proxies representing another service.')])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-proxydestination"}},[t._v("proxyDestination")])]),t._v(" "),e("td",[t._v("Deprecated.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Object")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-check"}},[t._v("check")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentcheckregisterpayload"}},[t._v("AgentCheckRegisterPayload")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("List>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-checks"}},[t._v("checks")])]),t._v(" "),e("td",[t._v("List of "),e("a",{attrs:{href:"#agentcheckregisterpayload"}},[t._v("AgentCheckRegisterPayload")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#agentserviceregisterpayload-enabletagoverride"}},[t._v("enableTagOverride")])]),t._v(" "),e("td",[t._v("Specifies to disable the anti-entropy feature for this service's tags.")])])])]),t._v(" "),e("h3",{attrs:{id:"agentserviceregisterpayload-name"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-name"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::name")]),t._v(" "),e("p",[t._v("Logical name of the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-id"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::id")]),t._v(" "),e("p",[t._v("Unique ID for this service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-tags"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-tags"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::tags")]),t._v(" "),e("p",[t._v("List of tags to assign to the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" tags"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Tags"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-address"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-address"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::address")]),t._v(" "),e("p",[t._v("Specifies the address of the service. If not provided, the agent's address is used as the address for the service during DNS queries.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" address"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Address"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-meta"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-meta"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::meta")]),t._v(" "),e("p",[t._v("Specifies arbitrary KV metadata linked to the service instance.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" meta"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Meta"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-port"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-port"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::port")]),t._v(" "),e("p",[t._v("Port of the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" port"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Port"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-kind"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-kind"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::kind")]),t._v(" "),e("p",[t._v('The kind of service. Defaults to "" which is a typical Consul service. This value may also be "connect-proxy" for services that are Connect-capable proxies representing another service.')]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kind"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Kind"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-proxydestination"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-proxydestination"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::proxyDestination")]),t._v(" "),e("p",[t._v("Deprecated.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" proxyDestination"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ProxyDestination"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-check"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-check"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::check")]),t._v(" "),e("p",[e("a",{attrs:{href:"#agentcheckregisterpayload"}},[t._v("AgentCheckRegisterPayload")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AgentCheckRegisterPayload"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" check"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Check"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-checks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-checks"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::checks")]),t._v(" "),e("p",[t._v("List of "),e("a",{attrs:{href:"#agentcheckregisterpayload"}},[t._v("AgentCheckRegisterPayload")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AgentCheckRegisterPayload"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" checks"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Checks"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"agentserviceregisterpayload-enabletagoverride"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#agentserviceregisterpayload-enabletagoverride"}},[t._v("#")]),t._v(" AgentServiceRegisterPayload::enableTagOverride")]),t._v(" "),e("p",[t._v("Specifies to disable the anti-entropy feature for this service's tags.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" enableTagOverride"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EnableTagOverride"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"sessionpayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload"}},[t._v("#")]),t._v(" SessionPayload")]),t._v(" "),e("p",[t._v("DTO Object representing Consul Agent Session."),e("br"),t._v(" For more information see "),e("a",{attrs:{href:"https://www.consul.io/api/session.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul Session HTTP Endpoint"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SessionPayload")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-4"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("Int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-createindex"}},[t._v("createIndex")])]),t._v(" "),e("td",[t._v("Internal index value that represents when the entry was created.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-id"}},[t._v("id")])]),t._v(" "),e("td",[t._v("id.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-lockdelay"}},[t._v("lockDelay")])]),t._v(" "),e("td",[t._v("The duration for the lock delay. This must be greater than 0")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-node"}},[t._v("node")])]),t._v(" "),e("td",[t._v("The name of the node. This must refer to a node that is already registered.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-name"}},[t._v("name")])]),t._v(" "),e("td",[t._v("A human-readable name for the session.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("List")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-cheks"}},[t._v("cheks")])]),t._v(" "),e("td",[t._v("A list of associated health check IDs (commonly CheckID in API responses).")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-behavior"}},[t._v("behavior")])]),t._v(" "),e("td",[t._v("Controls the behavior to take when a session is invalidated. Valid values are: "),e("br"),t._v(" "),e("ul",[e("li",[t._v("release - causes any locks that are held to be released")]),t._v(" "),e("li",[t._v("delete - causes any locks that are held to be deleted")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#sessionpayload-ttl"}},[t._v("ttl")])]),t._v(" "),e("td",[t._v("The number of seconds (between 10s and 86400s).")])])])]),t._v(" "),e("h3",{attrs:{id:"sessionpayload-createindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-createindex"}},[t._v("#")]),t._v(" SessionPayload::createIndex")]),t._v(" "),e("p",[t._v("Internal index value that represents when the entry was created.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreateIndex"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-id"}},[t._v("#")]),t._v(" SessionPayload::id")]),t._v(" "),e("p",[t._v("id.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-lockdelay"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-lockdelay"}},[t._v("#")]),t._v(" SessionPayload::lockDelay")]),t._v(" "),e("p",[t._v("The duration for the lock delay. This must be greater than 0")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" lockDelay"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LockDelay"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-node"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-node"}},[t._v("#")]),t._v(" SessionPayload::node")]),t._v(" "),e("p",[t._v("The name of the node. This must refer to a node that is already registered.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" node"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Node"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-name"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-name"}},[t._v("#")]),t._v(" SessionPayload::name")]),t._v(" "),e("p",[t._v("A human-readable name for the session.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-cheks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-cheks"}},[t._v("#")]),t._v(" SessionPayload::cheks")]),t._v(" "),e("p",[t._v("A list of associated health check IDs (commonly CheckID in API responses).")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" cheks"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Checks"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-behavior"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-behavior"}},[t._v("#")]),t._v(" SessionPayload::behavior")]),t._v(" "),e("p",[t._v("Controls the behavior to take when a session is invalidated. Valid values are: "),e("br"),t._v(" "),e("ul",[e("li",[t._v("release - causes any locks that are held to be released")]),t._v(" "),e("li",[t._v("delete - causes any locks that are held to be deleted")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" behavior"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Behavior"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"sessionpayload-ttl"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sessionpayload-ttl"}},[t._v("#")]),t._v(" SessionPayload::ttl")]),t._v(" "),e("p",[t._v("The number of seconds (between 10s and 86400s).")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ttl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TTL"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"serviceaddresspayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serviceaddresspayload"}},[t._v("#")]),t._v(" ServiceAddressPayload")]),t._v(" "),e("p",[t._v("The structure representing LAN and WAN addresses for the service instance.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ServiceAddressPayload")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-5"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serviceaddresspayload-address"}},[t._v("address")])]),t._v(" "),e("td",[t._v("IP address.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serviceaddresspayload-port"}},[t._v("port")])]),t._v(" "),e("td",[t._v("Port.")])])])]),t._v(" "),e("h3",{attrs:{id:"serviceaddresspayload-address"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serviceaddresspayload-address"}},[t._v("#")]),t._v(" ServiceAddressPayload::address")]),t._v(" "),e("p",[t._v("IP address.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" address"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Address"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"serviceaddresspayload-port"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serviceaddresspayload-port"}},[t._v("#")]),t._v(" ServiceAddressPayload::port")]),t._v(" "),e("p",[t._v("Port.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" port"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Port"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"catalogservicepayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload"}},[t._v("#")]),t._v(" CatalogServicePayload")]),t._v(" "),e("p",[t._v("DTO Object representing Consul Catalog Service."),e("br"),t._v(" For more information see "),e("a",{attrs:{href:"https://www.consul.io/api/catalog.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul Catalog HTTP API"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" consul "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" rest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CatalogServicePayload")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-6"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-id"}},[t._v("id")])]),t._v(" "),e("td",[t._v("ID.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-node"}},[t._v("node")])]),t._v(" "),e("td",[t._v("The name of the Consul node on which the service is registered.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-address"}},[t._v("address")])]),t._v(" "),e("td",[t._v("The IP address of the Consul node on which the service is registered.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-datacenter"}},[t._v("datacenter")])]),t._v(" "),e("td",[t._v("The data center of the Consul node on which the service is registered.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-taggedaddresses"}},[t._v("taggedAddresses")])]),t._v(" "),e("td",[t._v("The list of explicit LAN and WAN IP addresses for the agent.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-nodemeta"}},[t._v("nodeMeta")])]),t._v(" "),e("td",[t._v("The list of user-defined metadata key/value pairs for the node.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-serviceid"}},[t._v("serviceId")])]),t._v(" "),e("td",[t._v("The unique service instance identifier")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-servicename"}},[t._v("serviceName")])]),t._v(" "),e("td",[t._v("The name of the service")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-serviceaddress"}},[t._v("serviceAddress")])]),t._v(" "),e("td",[t._v("The IP address of the service host — if empty, node address should be used")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-servicetaggedaddresses"}},[t._v("serviceTaggedAddresses")])]),t._v(" "),e("td",[t._v("The map of explicit LAN and WAN addresses for the service instance. "),e("a",{attrs:{href:"#serviceaddresspayload"}},[t._v("ServiceAddressPayload")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("List")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-servicetags"}},[t._v("serviceTags")])]),t._v(" "),e("td",[t._v("The list of tags for the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Fields")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-servicemeta"}},[t._v("serviceMeta")])]),t._v(" "),e("td",[t._v("The list of user-defined metadata key/value pairs for the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-serviceport"}},[t._v("servicePort")])]),t._v(" "),e("td",[t._v("The the port number of the service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Object")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-serviceweights"}},[t._v("serviceWeights")])]),t._v(" "),e("td",[t._v("ServiceWeights.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-serviceenabletagoverride"}},[t._v("serviceEnableTagOverride")])]),t._v(" "),e("td",[t._v("Indicates whether service tags can be overridden on this service.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#catalogservicepayload-createindex"}},[t._v("createIndex")])]),t._v(" "),e("td",[t._v("Internal index value that represents when the entry was created.")])])])]),t._v(" "),e("h3",{attrs:{id:"catalogservicepayload-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-id"}},[t._v("#")]),t._v(" CatalogServicePayload::id")]),t._v(" "),e("p",[t._v("ID.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-node"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-node"}},[t._v("#")]),t._v(" CatalogServicePayload::node")]),t._v(" "),e("p",[t._v("The name of the Consul node on which the service is registered.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" node"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Node"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-address"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-address"}},[t._v("#")]),t._v(" CatalogServicePayload::address")]),t._v(" "),e("p",[t._v("The IP address of the Consul node on which the service is registered.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" address"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Address"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-datacenter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-datacenter"}},[t._v("#")]),t._v(" CatalogServicePayload::datacenter")]),t._v(" "),e("p",[t._v("The data center of the Consul node on which the service is registered.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" datacenter"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Datacenter"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-taggedaddresses"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-taggedaddresses"}},[t._v("#")]),t._v(" CatalogServicePayload::taggedAddresses")]),t._v(" "),e("p",[t._v("The list of explicit LAN and WAN IP addresses for the agent.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" taggedAddresses"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TaggedAddresses"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-nodemeta"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-nodemeta"}},[t._v("#")]),t._v(" CatalogServicePayload::nodeMeta")]),t._v(" "),e("p",[t._v("The list of user-defined metadata key/value pairs for the node.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" nodeMeta"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NodeMeta"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-serviceid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-serviceid"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceId")]),t._v(" "),e("p",[t._v("The unique service instance identifier")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceID"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-servicename"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-servicename"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceName")]),t._v(" "),e("p",[t._v("The name of the service")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceName"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-serviceaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-serviceaddress"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceAddress")]),t._v(" "),e("p",[t._v("The IP address of the service host — if empty, node address should be used")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceAddress"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceAddress"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-servicetaggedaddresses"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-servicetaggedaddresses"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceTaggedAddresses")]),t._v(" "),e("p",[t._v("The map of explicit LAN and WAN addresses for the service instance. "),e("a",{attrs:{href:"#serviceaddresspayload"}},[t._v("ServiceAddressPayload")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ServiceAddressPayload"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceTaggedAddresses"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceTaggedAddresses"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-servicetags"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-servicetags"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceTags")]),t._v(" "),e("p",[t._v("The list of tags for the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceTags"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceTags"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-servicemeta"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-servicemeta"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceMeta")]),t._v(" "),e("p",[t._v("The list of user-defined metadata key/value pairs for the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceMeta"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceMeta"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-serviceport"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-serviceport"}},[t._v("#")]),t._v(" CatalogServicePayload::servicePort")]),t._v(" "),e("p",[t._v("The the port number of the service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" servicePort"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServicePort"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-serviceweights"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-serviceweights"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceWeights")]),t._v(" "),e("p",[t._v("ServiceWeights.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("WeightsPayload"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceWeights"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceWeights"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-serviceenabletagoverride"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-serviceenabletagoverride"}},[t._v("#")]),t._v(" CatalogServicePayload::serviceEnableTagOverride")]),t._v(" "),e("p",[t._v("Indicates whether service tags can be overridden on this service.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serviceEnableTagOverride"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ServiceEnableTagOverride"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"catalogservicepayload-createindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#catalogservicepayload-createindex"}},[t._v("#")]),t._v(" CatalogServicePayload::createIndex")]),t._v(" "),e("p",[t._v("Internal index value that represents when the entry was created.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreateIndex"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/150.1a1807df.js b/docs/.vuepress/dist/assets/js/150.1a1807df.js deleted file mode 100644 index 17545ef88..000000000 --- a/docs/.vuepress/dist/assets/js/150.1a1807df.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{522:function(t,e,a){"use strict";a.r(e);var n=a(42),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"countable-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#countable-hpp"}},[t._v("#")]),t._v(" Countable.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/base/Countable.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/base/Countable.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/base/Countable.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"countable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#countable"}},[t._v("#")]),t._v(" Countable")]),t._v(" "),a("p",[t._v("Class instantiations of which can be counted.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Countable")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#countable-countable"}},[t._v("Countable")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Constructor. Increment counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-incobjects"}},[t._v("oatpp::base::Environment::incObjects()")]),t._v(". ")],1),a("li",[t._v("Copy constructor. Increment counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-incobjects"}},[t._v("oatpp::base::Environment::incObjects()")]),t._v(". ")],1)])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#countable-~countable"}},[t._v("~Countable")])]),t._v(" "),a("td",[t._v("Virtual destructor. Decrement counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-decobjects"}},[t._v("oatpp::base::Environment::decObjects()")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"countable-countable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#countable-countable"}},[t._v("#")]),t._v(" Countable::Countable")]),t._v(" "),a("ol",[a("li",[t._v("Constructor. Increment counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-incobjects"}},[t._v("oatpp::base::Environment::incObjects()")]),t._v("."),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Countable")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1),t._v(" "),a("li",[t._v("Copy constructor. Increment counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-incobjects"}},[t._v("oatpp::base::Environment::incObjects()")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" other ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Countable")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Countable"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1)]),t._v(" "),a("h3",{attrs:{id:"countable-countable-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#countable-countable-2"}},[t._v("#")]),t._v(" Countable::~Countable")]),t._v(" "),a("p",[t._v("Virtual destructor. Decrement counter calling "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Environment/#environment-decobjects"}},[t._v("oatpp::base::Environment::decObjects()")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Countable")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/151.047cdba4.js b/docs/.vuepress/dist/assets/js/151.047cdba4.js deleted file mode 100644 index 2ea3100b5..000000000 --- a/docs/.vuepress/dist/assets/js/151.047cdba4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{523:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"environment-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-hpp"}},[t._v("#")]),t._v(" Environment.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/base/Environment.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/base/Environment.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/base/Environment.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"v-buff-size"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#v-buff-size"}},[t._v("#")]),t._v(" v_buff_size")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" ``")]),t._v(" "),e("p",[t._v("This type is the integer type capable of storing a pointer. Thus is capable of storing size of allocated memory. "),e("br"),t._v(" Use this type to define a size for the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" intptr_t v_buff_size\n")])])]),e("h2",{attrs:{id:"logger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger"}},[t._v("#")]),t._v(" Logger")]),t._v(" "),e("p",[t._v("Interface for system-wide Logger."),e("br"),t._v(" All calls to "),e("code",[t._v("OATPP_DISABLE_LOGV")]),t._v(", "),e("code",[t._v("OATPP_DISABLE_LOGD")]),t._v(", "),e("code",[t._v("OATPP_DISABLE_LOGI")]),t._v(", "),e("code",[t._v("OATPP_DISABLE_LOGW")]),t._v(", "),e("code",[t._v("OATPP_DISABLE_LOGE")]),t._v(" will come here.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Logger")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-priority-v"}},[t._v("PRIORITY_V")])]),t._v(" "),e("td",[t._v("Log priority V-verbouse.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-priority-d"}},[t._v("PRIORITY_D")])]),t._v(" "),e("td",[t._v("Log priority D-debug.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-priority-i"}},[t._v("PRIORITY_I")])]),t._v(" "),e("td",[t._v("Log priority I-Info.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-priority-w"}},[t._v("PRIORITY_W")])]),t._v(" "),e("td",[t._v("Log priority W-Warning.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-priority-e"}},[t._v("PRIORITY_E")])]),t._v(" "),e("td",[t._v("Log priority E-error.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-~logger"}},[t._v("~Logger")])]),t._v(" "),e("td",[t._v("Virtual Destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-log"}},[t._v("log")])]),t._v(" "),e("td",[t._v("Log message with priority, tag, message.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-islogpriorityenabled"}},[t._v("isLogPriorityEnabled")])]),t._v(" "),e("td",[t._v("Returns wether or not a priority should be logged/printed")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logger-getmaxformattingbuffersize"}},[t._v("getMaxFormattingBufferSize")])]),t._v(" "),e("td",[t._v("Should return the maximum amount of bytes that should be allocated for a single log message")])])])]),t._v(" "),e("h3",{attrs:{id:"logger-priority-v"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-priority-v"}},[t._v("#")]),t._v(" Logger::PRIORITY_V")]),t._v(" "),e("p",[t._v("Log priority V-verbouse.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_uint32 PRIORITY_V "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-priority-d"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-priority-d"}},[t._v("#")]),t._v(" Logger::PRIORITY_D")]),t._v(" "),e("p",[t._v("Log priority D-debug.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_uint32 PRIORITY_D "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-priority-i"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-priority-i"}},[t._v("#")]),t._v(" Logger::PRIORITY_I")]),t._v(" "),e("p",[t._v("Log priority I-Info.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_uint32 PRIORITY_I "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-priority-w"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-priority-w"}},[t._v("#")]),t._v(" Logger::PRIORITY_W")]),t._v(" "),e("p",[t._v("Log priority W-Warning.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_uint32 PRIORITY_W "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-priority-e"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-priority-e"}},[t._v("#")]),t._v(" Logger::PRIORITY_E")]),t._v(" "),e("p",[t._v("Log priority E-error.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_uint32 PRIORITY_E "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-logger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-logger"}},[t._v("#")]),t._v(" Logger::~Logger")]),t._v(" "),e("p",[t._v("Virtual Destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Logger")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-log"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-log"}},[t._v("#")]),t._v(" Logger::log")]),t._v(" "),e("p",[t._v("Log message with priority, tag, message. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - priority channel of the message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" tag - tag of the log message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" message - message. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-islogpriorityenabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-islogpriorityenabled"}},[t._v("#")]),t._v(" Logger::isLogPriorityEnabled")]),t._v(" "),e("p",[t._v("Returns wether or not a priority should be logged/printed "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - true if given priority should be logged ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isLogPriorityEnabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"logger-getmaxformattingbuffersize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger-getmaxformattingbuffersize"}},[t._v("#")]),t._v(" Logger::getMaxFormattingBufferSize")]),t._v(" "),e("p",[t._v("Should return the maximum amount of bytes that should be allocated for a single log message "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - maximum buffer size ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMaxFormattingBufferSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"logcategory"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory"}},[t._v("#")]),t._v(" LogCategory")]),t._v(" "),e("p",[t._v('Describes a logging category (i.e. a logging "namespace")')]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("LogCategory")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const std::string")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-tag"}},[t._v("tag")])]),t._v(" "),e("td",[t._v("The tag for this category")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-categoryenabled"}},[t._v("categoryEnabled")])]),t._v(" "),e("td",[t._v("Generally enable or disable this category")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-enabledpriorities"}},[t._v("enabledPriorities")])]),t._v(" "),e("td",[t._v("Priorities to print that are logged in this category")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-logcategory"}},[t._v("LogCategory")])]),t._v(" "),e("td",[t._v("Constructs a logging category.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-enablepriority"}},[t._v("enablePriority")])]),t._v(" "),e("td",[t._v("Enables logging of a priorities for this category")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-disablepriority"}},[t._v("disablePriority")])]),t._v(" "),e("td",[t._v("Disabled logging of a priorities for this category")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#logcategory-islogpriorityenabled"}},[t._v("isLogPriorityEnabled")])]),t._v(" "),e("td",[t._v("Returns wether or not a priority of this category should be logged/printed")])])])]),t._v(" "),e("h3",{attrs:{id:"logcategory-tag"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-tag"}},[t._v("#")]),t._v(" LogCategory::tag")]),t._v(" "),e("p",[t._v("The tag for this category")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string tag\n")])])]),e("h3",{attrs:{id:"logcategory-categoryenabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-categoryenabled"}},[t._v("#")]),t._v(" LogCategory::categoryEnabled")]),t._v(" "),e("p",[t._v("Generally enable or disable this category")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" categoryEnabled\n")])])]),e("h3",{attrs:{id:"logcategory-enabledpriorities"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-enabledpriorities"}},[t._v("#")]),t._v(" LogCategory::enabledPriorities")]),t._v(" "),e("p",[t._v("Priorities to print that are logged in this category")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_uint32 enabledPriorities\n")])])]),e("h3",{attrs:{id:"logcategory-logcategory"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-logcategory"}},[t._v("#")]),t._v(" LogCategory::LogCategory")]),t._v(" "),e("p",[t._v("Constructs a logging category. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pTag - Tag of this logging category ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pCategoryEnabled - Enable or disable the category completely ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pEnabledPriorities - Bitmap of initially active logging categories. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("LogCategory")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string pTag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" pCategoryEnabled"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 pEnabledPriorities "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PRIORITY_V"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PRIORITY_D"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PRIORITY_I"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PRIORITY_W"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PRIORITY_E"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("tag")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("move")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pTag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("categoryEnabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pCategoryEnabled"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("enabledPriorities")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pEnabledPriorities"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"logcategory-enablepriority"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-enablepriority"}},[t._v("#")]),t._v(" LogCategory::enablePriority")]),t._v(" "),e("p",[t._v("Enables logging of a priorities for this category "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - the priority level to enable ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("enablePriority")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"logcategory-disablepriority"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-disablepriority"}},[t._v("#")]),t._v(" LogCategory::disablePriority")]),t._v(" "),e("p",[t._v("Disabled logging of a priorities for this category "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - the priority level to disable ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("disablePriority")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"logcategory-islogpriorityenabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logcategory-islogpriorityenabled"}},[t._v("#")]),t._v(" LogCategory::isLogPriorityEnabled")]),t._v(" "),e("p",[t._v("Returns wether or not a priority of this category should be logged/printed "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - true if given priority should be logged ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isLogPriorityEnabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"defaultlogger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger"}},[t._v("#")]),t._v(" DefaultLogger")]),t._v(" "),e("p",[t._v("Default Logger implementation.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultLogger")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Logger "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-defaultlogger"}},[t._v("DefaultLogger")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-log"}},[t._v("log")])]),t._v(" "),e("td",[t._v("Log message with priority, tag, message.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-enablepriority"}},[t._v("enablePriority")])]),t._v(" "),e("td",[t._v("Enables logging of a priorities for this instance")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-disablepriority"}},[t._v("disablePriority")])]),t._v(" "),e("td",[t._v("Disables logging of a priority for this instance")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-islogpriorityenabled"}},[t._v("isLogPriorityEnabled")])]),t._v(" "),e("td",[t._v("Returns wether or not a priority should be logged/printed")])])])]),t._v(" "),e("h3",{attrs:{id:"defaultlogger-defaultlogger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-defaultlogger"}},[t._v("#")]),t._v(" DefaultLogger::DefaultLogger")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" config - Logger config. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultLogger")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"%Y-%m-%d %H:%M:%S"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" PRIORITY_V"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" PRIORITY_D"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" PRIORITY_I"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" PRIORITY_W"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" PRIORITY_E"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"defaultlogger-log"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-log"}},[t._v("#")]),t._v(" DefaultLogger::log")]),t._v(" "),e("p",[t._v("Log message with priority, tag, message. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - log-priority channel of the message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" tag - tag of the log message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" message - message. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"defaultlogger-enablepriority"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-enablepriority"}},[t._v("#")]),t._v(" DefaultLogger::enablePriority")]),t._v(" "),e("p",[t._v("Enables logging of a priorities for this instance "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - the priority level to enable ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("enablePriority")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"defaultlogger-disablepriority"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-disablepriority"}},[t._v("#")]),t._v(" DefaultLogger::disablePriority")]),t._v(" "),e("p",[t._v("Disables logging of a priority for this instance "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - the priority level to disable ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("disablePriority")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"defaultlogger-islogpriorityenabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-islogpriorityenabled"}},[t._v("#")]),t._v(" DefaultLogger::isLogPriorityEnabled")]),t._v(" "),e("p",[t._v("Returns wether or not a priority should be logged/printed "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - true if given priority should be logged ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isLogPriorityEnabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h2",{attrs:{id:"defaultlogger-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-config"}},[t._v("#")]),t._v(" DefaultLogger::Config")]),t._v(" "),e("p",[t._v("Default Logger Config.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultLogger")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Logger "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-config-timeformat"}},[t._v("timeFormat")])]),t._v(" "),e("td",[t._v("Time format of the log message. If nullptr then do not print time.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-config-printticks"}},[t._v("printTicks")])]),t._v(" "),e("td",[t._v("Print micro-ticks in the log message.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-config-logmask"}},[t._v("logMask")])]),t._v(" "),e("td",[t._v("Log mask to enable/disable certain priorities")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultlogger-config-config"}},[t._v("Config")])]),t._v(" "),e("td",[t._v("Constructor.")])])])]),t._v(" "),e("h3",{attrs:{id:"defaultlogger-config-timeformat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-config-timeformat"}},[t._v("#")]),t._v(" DefaultLogger::Config::timeFormat")]),t._v(" "),e("p",[t._v("Time format of the log message. If nullptr then do not print time.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" timeFormat\n")])])]),e("h3",{attrs:{id:"defaultlogger-config-printticks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-config-printticks"}},[t._v("#")]),t._v(" DefaultLogger::Config::printTicks")]),t._v(" "),e("p",[t._v("Print micro-ticks in the log message.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" printTicks\n")])])]),e("h3",{attrs:{id:"defaultlogger-config-logmask"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-config-logmask"}},[t._v("#")]),t._v(" DefaultLogger::Config::logMask")]),t._v(" "),e("p",[t._v("Log mask to enable/disable certain priorities")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_uint32 logMask\n")])])]),e("h3",{attrs:{id:"defaultlogger-config-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultlogger-config-config"}},[t._v("#")]),t._v(" DefaultLogger::Config::Config")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tfmt - time format. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" printMicroTicks - show ticks in microseconds. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" tfmt"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" printMicroTicks"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 initialLogMask"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("timeFormat")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("tfmt"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("printTicks")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("printMicroTicks"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("logMask")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("initialLogMask"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"environment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment"}},[t._v("#")]),t._v(" Environment")]),t._v(" "),e("p",[t._v("Class to manage application environment."),e("br"),t._v(" Manage object counters, manage components, and do system health-checks.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Environment")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-init"}},[t._v("init")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Initialize environment and do basic health-checks. ")]),e("li",[t._v("Initialize environment and do basic health-checks. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-destroy"}},[t._v("destroy")])]),t._v(" "),e("td",[t._v("De-initialize environment and do basic health-checks.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-incobjects"}},[t._v("incObjects")])]),t._v(" "),e("td",[t._v("increment counter of objects.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-decobjects"}},[t._v("decObjects")])]),t._v(" "),e("td",[t._v("decrement counter of objects.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_counter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getobjectscount"}},[t._v("getObjectsCount")])]),t._v(" "),e("td",[t._v("Get count of objects currently allocated and stored in the memory.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_counter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getobjectscreated"}},[t._v("getObjectsCreated")])]),t._v(" "),e("td",[t._v("Get count of objects created for a whole system lifetime.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_counter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getthreadlocalobjectscount"}},[t._v("getThreadLocalObjectsCount")])]),t._v(" "),e("td",[t._v("Same as "),e("code",[t._v("getObjectsCount()")]),t._v(" but "),e("code",[t._v("thread_local")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_counter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getthreadlocalobjectscreated"}},[t._v("getThreadLocalObjectsCreated")])]),t._v(" "),e("td",[t._v("Same as "),e("code",[t._v("getObjectsCreated()")]),t._v(" but "),e("code",[t._v("thread_local")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-setlogger"}},[t._v("setLogger")])]),t._v(" "),e("td",[t._v("Set environment logger.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getlogger"}},[t._v("getLogger")])]),t._v(" "),e("td",[t._v("Gets the current environment logger")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-printcompilationconfig"}},[t._v("printCompilationConfig")])]),t._v(" "),e("td",[t._v("Print debug information of compilation config."),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-log"}},[t._v("log")])]),t._v(" "),e("td",[t._v("Call "),e("code",[t._v("Logger::log()")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-logformatted"}},[t._v("logFormatted")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Format message and call "),e("code",[t._v("Logger::log()")]),e("br")]),e("li",[t._v("Format message and call "),e("code",[t._v("Logger::log()")]),e("br")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getcomponent"}},[t._v("getComponent")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Get component object by typeName. ")]),e("li",[t._v("Get component object by typeName and componentName. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-getmicrotickcount"}},[t._v("getMicroTickCount")])]),t._v(" "),e("td",[t._v("Get ticks count in microseconds.")])])])]),t._v(" "),e("h3",{attrs:{id:"environment-init"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-init"}},[t._v("#")]),t._v(" Environment::init")]),t._v(" "),e("ol",[e("li",[t._v("Initialize environment and do basic health-checks."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Initialize environment and do basic health-checks. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" logger - system-wide logger. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"environment-destroy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-destroy"}},[t._v("#")]),t._v(" Environment::destroy")]),t._v(" "),e("p",[t._v("De-initialize environment and do basic health-checks. Check for memory leaks.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-incobjects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-incobjects"}},[t._v("#")]),t._v(" Environment::incObjects")]),t._v(" "),e("p",[t._v("increment counter of objects.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("incObjects")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-decobjects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-decobjects"}},[t._v("#")]),t._v(" Environment::decObjects")]),t._v(" "),e("p",[t._v("decrement counter of objects.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decObjects")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-getobjectscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getobjectscount"}},[t._v("#")]),t._v(" Environment::getObjectsCount")]),t._v(" "),e("p",[t._v("Get count of objects currently allocated and stored in the memory. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_counter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectsCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-getobjectscreated"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getobjectscreated"}},[t._v("#")]),t._v(" Environment::getObjectsCreated")]),t._v(" "),e("p",[t._v("Get count of objects created for a whole system lifetime. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - count of objects. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_counter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectsCreated")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-getthreadlocalobjectscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getthreadlocalobjectscount"}},[t._v("#")]),t._v(" Environment::getThreadLocalObjectsCount")]),t._v(" "),e("p",[t._v("Same as "),e("code",[t._v("getObjectsCount()")]),t._v(" but "),e("code",[t._v("thread_local")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - count of objects. "),e("br"),t._v(" "),e("em",[t._v("0 - if built with "),e("code",[t._v("-DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL")]),t._v(" flag")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_counter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getThreadLocalObjectsCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-getthreadlocalobjectscreated"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getthreadlocalobjectscreated"}},[t._v("#")]),t._v(" Environment::getThreadLocalObjectsCreated")]),t._v(" "),e("p",[t._v("Same as "),e("code",[t._v("getObjectsCreated()")]),t._v(" but "),e("code",[t._v("thread_local")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - count of objects. "),e("br"),t._v(" "),e("em",[t._v("0 - if built with "),e("code",[t._v("-DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL")]),t._v(" flag")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_counter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getThreadLocalObjectsCreated")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-setlogger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-setlogger"}},[t._v("#")]),t._v(" Environment::setLogger")]),t._v(" "),e("p",[t._v("Set environment logger. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" logger - system-wide logger. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLogger")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-getlogger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getlogger"}},[t._v("#")]),t._v(" Environment::getLogger")]),t._v(" "),e("p",[t._v("Gets the current environment logger "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - current logger ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Logger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getLogger")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-printcompilationconfig"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-printcompilationconfig"}},[t._v("#")]),t._v(" Environment::printCompilationConfig")]),t._v(" "),e("p",[t._v("Print debug information of compilation config."),e("br"),t._v(" Print values for: "),e("br"),t._v(" - "),e("code",[t._v("OATPP_DISABLE_ENV_OBJECT_COUNTERS")]),e("br"),t._v(" - "),e("code",[t._v("OATPP_THREAD_HARDWARE_CONCURRENCY")]),e("br")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("printCompilationConfig")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-log"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-log"}},[t._v("#")]),t._v(" Environment::log")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("Logger::log()")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - log-priority channel of the message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" tag - tag of the log message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" message - message. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-logformatted"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-logformatted"}},[t._v("#")]),t._v(" Environment::logFormatted")]),t._v(" "),e("ol",[e("li",[t._v("Format message and call "),e("code",[t._v("Logger::log()")]),e("br"),t._v(" Message is formatted using "),e("code",[t._v("vsnprintf")]),t._v(" method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - log-priority channel of the message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" tag - tag of the log message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" message - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - format arguments. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("logFormatted")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tag"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format message and call "),e("code",[t._v("Logger::log()")]),e("br"),t._v(" Message is formatted using "),e("code",[t._v("vsnprintf")]),t._v(" method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" priority - log-priority channel of the message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" category - category of the log message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" message - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - format arguments. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("logFormatted")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 priority"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" LogCategory"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" category"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"environment-getcomponent"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getcomponent"}},[t._v("#")]),t._v(" Environment::getComponent")]),t._v(" "),e("ol",[e("li",[t._v("Get component object by typeName. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" typeName - type name of the component. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - pointer to a component object. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getComponent")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" typeName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Get component object by typeName and componentName. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" typeName - type name of the component. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" componentName - component qualifier name. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - pointer to a component object. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getComponent")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" typeName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" componentName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"environment-getmicrotickcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-getmicrotickcount"}},[t._v("#")]),t._v(" Environment::getMicroTickCount")]),t._v(" "),e("p",[t._v("Get ticks count in microseconds. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - ticks count in microseconds. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMicroTickCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"environment-component"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-component"}},[t._v("#")]),t._v(" Environment::Component")]),t._v(" "),e("p",[t._v("Class representing system component. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - component type. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" base "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Environment")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Component")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-6"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-component-component"}},[t._v("Component")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-component-~component"}},[t._v("~Component")])]),t._v(" "),e("td",[t._v("Non-virtual Destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("T")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#environment-component-getobject"}},[t._v("getObject")])]),t._v(" "),e("td",[t._v("Get object stored in the component.")])])])]),t._v(" "),e("h3",{attrs:{id:"environment-component-component"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-component-component"}},[t._v("#")]),t._v(" Environment::Component::Component")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name - component name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" object - component object. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_type")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typeid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_object")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" object - component object. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NoName"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"environment-component-component-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-component-component-2"}},[t._v("#")]),t._v(" Environment::Component::~Component")]),t._v(" "),e("p",[t._v("Non-virtual Destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"environment-component-getobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#environment-component-getobject"}},[t._v("#")]),t._v(" Environment::Component::getObject")]),t._v(" "),e("p",[t._v("Get object stored in the component. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - object. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("T "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObject")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-assert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-assert"}},[t._v("#")]),t._v(" OATPP_ASSERT")]),t._v(" "),e("p",[t._v("Default oatpp assert method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" EXP - expression that must be "),e("code",[t._v("true")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_ASSERT(EXP)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-declare-log-category"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-declare-log-category"}},[t._v("#")]),t._v(" OATPP_DECLARE_LOG_CATEGORY")]),t._v(" "),e("p",[t._v("Convenience macro to declare a logging category directly in a class header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" NAME - variable-name of the category which is later used to reference the category. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_DECLARE_LOG_CATEGORY(NAME)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-log-category"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-log-category"}},[t._v("#")]),t._v(" OATPP_LOG_CATEGORY")]),t._v(" "),e("p",[t._v("Convenience macro to implement a logging category directly in a class header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" NAME - variable-name of the category which is later used to reference the category. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" TAG - tag printed with each message printed usig this category. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ENABLED - enable or disable a category (bool). ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOG_CATEGORY(NAME, TAG, ENABLED)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-logv"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-logv"}},[t._v("#")]),t._v(" OATPP_LOGV")]),t._v(" "),e("p",[t._v("Log message with "),e("a",{attrs:{href:"#logger-priority-v"}},[t._v("Logger::PRIORITY_V")]),t._v(" "),e("br"),t._v(" "),e("em",[t._v("To disable this log compile oatpp with "),e("code",[t._v("#define OATPP_DISABLE_LOGV")])]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" TAG - message tag. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ...(1) - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - optional format parameter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOGV(TAG, ...)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-logd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-logd"}},[t._v("#")]),t._v(" OATPP_LOGD")]),t._v(" "),e("p",[t._v("Log message with "),e("a",{attrs:{href:"#logger-priority-d"}},[t._v("Logger::PRIORITY_D")]),t._v(" "),e("br"),t._v(" "),e("em",[t._v("To disable this log compile oatpp with "),e("code",[t._v("#define OATPP_DISABLE_LOGD")])]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" TAG - message tag. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ...(1) - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - optional format parameter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOGD(TAG, ...)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-logi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-logi"}},[t._v("#")]),t._v(" OATPP_LOGI")]),t._v(" "),e("p",[t._v("Log message with "),e("a",{attrs:{href:"#logger-priority-i"}},[t._v("Logger::PRIORITY_I")]),t._v(" "),e("br"),t._v(" "),e("em",[t._v("To disable this log compile oatpp with "),e("code",[t._v("#define OATPP_DISABLE_LOGI")])]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" TAG - message tag. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ...(1) - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - optional format parameter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOGI(TAG, ...)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-logw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-logw"}},[t._v("#")]),t._v(" OATPP_LOGW")]),t._v(" "),e("p",[t._v("Log message with "),e("a",{attrs:{href:"#logger-priority-w"}},[t._v("Logger::PRIORITY_W")]),t._v(" "),e("br"),t._v(" "),e("em",[t._v("To disable this log compile oatpp with "),e("code",[t._v("#define OATPP_DISABLE_LOGW")])]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" TAG - message tag. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ...(1) - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - optional format parameter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOGW(TAG, ...)")]),t._v("\n")])])]),e("h2",{attrs:{id:"oatpp-loge"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-loge"}},[t._v("#")]),t._v(" OATPP_LOGE")]),t._v(" "),e("p",[t._v("Log message with "),e("a",{attrs:{href:"#logger-priority-e"}},[t._v("Logger::PRIORITY_E")]),t._v(" "),e("br"),t._v(" "),e("em",[t._v("To disable this log compile oatpp with "),e("code",[t._v("#define OATPP_DISABLE_LOGE")])]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" TAG - message tag. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ...(1) - message. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ... - optional format parameter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_LOGE(TAG, ...)")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/152.efa7f300.js b/docs/.vuepress/dist/assets/js/152.efa7f300.js deleted file mode 100644 index 0948787c0..000000000 --- a/docs/.vuepress/dist/assets/js/152.efa7f300.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{524:function(e,t,o){"use strict";o.r(t);var r=o(42),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"objecthandle-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#objecthandle-hpp"}},[e._v("#")]),e._v(" ObjectHandle.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/base/ObjectHandle.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/base/ObjectHandle.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/core/base/ObjectHandle.hpp"')])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/153.dfcfafd2.js b/docs/.vuepress/dist/assets/js/153.dfcfafd2.js deleted file mode 100644 index e8b3b5cc0..000000000 --- a/docs/.vuepress/dist/assets/js/153.dfcfafd2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{525:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"spinlock-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock-hpp"}},[t._v("#")]),t._v(" SpinLock.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/concurrency/SpinLock.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/concurrency/SpinLock.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/concurrency/SpinLock.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"spinlock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock"}},[t._v("#")]),t._v(" SpinLock")]),t._v(" "),a("p",[t._v("SpinLock implementation based on atomic. Meets the "),a("code",[t._v("Lockable")]),t._v(" requirements.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" concurrency "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpinLock")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#spinlock-spinlock"}},[t._v("SpinLock")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#spinlock-lock"}},[t._v("lock")])]),t._v(" "),a("td",[t._v("Lock spin-lock")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#spinlock-unlock"}},[t._v("unlock")])]),t._v(" "),a("td",[t._v("Unlock spin-lock")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#spinlock-try-lock"}},[t._v("try_lock")])]),t._v(" "),a("td",[t._v("Try to lock.")])])])]),t._v(" "),a("h3",{attrs:{id:"spinlock-spinlock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock-spinlock"}},[t._v("#")]),t._v(" SpinLock::SpinLock")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SpinLock")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"spinlock-lock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock-lock"}},[t._v("#")]),t._v(" SpinLock::lock")]),t._v(" "),a("p",[t._v("Lock spin-lock")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("lock")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"spinlock-unlock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock-unlock"}},[t._v("#")]),t._v(" SpinLock::unlock")]),t._v(" "),a("p",[t._v("Unlock spin-lock")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unlock")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"spinlock-try-lock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#spinlock-try-lock"}},[t._v("#")]),t._v(" SpinLock::try_lock")]),t._v(" "),a("p",[t._v("Try to lock. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" if the lock was acquired, "),a("code",[t._v("false")]),t._v(" otherwise. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("try_lock")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/154.e5c2450b.js b/docs/.vuepress/dist/assets/js/154.e5c2450b.js deleted file mode 100644 index 789cbe0b4..000000000 --- a/docs/.vuepress/dist/assets/js/154.e5c2450b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{527:function(t,e,a){"use strict";a.r(e);var r=a(42),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"thread-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#thread-hpp"}},[t._v("#")]),t._v(" Thread.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/concurrency/Thread.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/concurrency/Thread.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/concurrency/Thread.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"setthreadaffinitytoonecpu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setthreadaffinitytoonecpu"}},[t._v("#")]),t._v(" setThreadAffinityToOneCpu")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::concurrency")])]),t._v(" "),a("p",[t._v("Set thread affinity to one CPU. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" nativeHandle - "),a("code",[t._v("std::thread::native_handle_type")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" cpuIndex - index of CPU. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - zero on success. Negative value on failure. -1 if platform that runs application does not support this call. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setThreadAffinityToOneCpu")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("thread"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("native_handle_type nativeHandle"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 cpuIndex"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"setthreadaffinitytocpurange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setthreadaffinitytocpurange"}},[t._v("#")]),t._v(" setThreadAffinityToCpuRange")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::concurrency")])]),t._v(" "),a("p",[t._v("Set thread affinity [firstCpuIndex..lastCpuIndex]. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" nativeHandle - "),a("code",[t._v("std::thread::native_handle_type")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" firstCpuIndex - from CPU-index. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" lastCpuIndex - to CPU-index included. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - zero on success. Negative value on failure. -1 if platform that runs application does not support this call. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setThreadAffinityToCpuRange")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("thread"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("native_handle_type nativeHandle"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 firstCpuIndex"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 lastCpuIndex"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"gethardwareconcurrency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gethardwareconcurrency"}},[t._v("#")]),t._v(" getHardwareConcurrency")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::concurrency")])]),t._v(" "),a("p",[t._v("Get hardware concurrency. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - OATPP_THREAD_HARDWARE_CONCURRENCY config value if set "),a("br"),t._v(" else return std::thread::hardware_concurrency() "),a("br"),t._v(" else return 1. "),a("br")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHardwareConcurrency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/155.4b04dcee.js b/docs/.vuepress/dist/assets/js/155.4b04dcee.js deleted file mode 100644 index 4635c4480..000000000 --- a/docs/.vuepress/dist/assets/js/155.4b04dcee.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{526:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bundle-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-hpp"}},[t._v("#")]),t._v(" Bundle.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/Bundle.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/Bundle.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/Bundle.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bundle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle"}},[t._v("#")]),t._v(" Bundle")]),t._v(" "),e("p",[t._v("Bundle of auxiliary data.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Bundle")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bundle-bundle"}},[t._v("Bundle")])]),t._v(" "),e("td",[t._v("Default constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bundle-~bundle"}},[t._v("~Bundle")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bundle-put"}},[t._v("put")])]),t._v(" "),e("td",[t._v("Put data by key.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("WrapperType")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bundle-get"}},[t._v("get")])]),t._v(" "),e("td",[t._v("Get data by key.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const std::unordered_map&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bundle-getall"}},[t._v("getAll")])]),t._v(" "),e("td",[t._v("Get map of data stored in the bundle.")])])])]),t._v(" "),e("h3",{attrs:{id:"bundle-bundle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-bundle"}},[t._v("#")]),t._v(" Bundle::Bundle")]),t._v(" "),e("p",[t._v("Default constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Bundle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"bundle-bundle-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-bundle-2"}},[t._v("#")]),t._v(" Bundle::~Bundle")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Bundle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"bundle-put"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-put"}},[t._v("#")]),t._v(" Bundle::put")]),t._v(" "),e("p",[t._v("Put data by key. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" polymorph ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("put")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bundle-get"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-get"}},[t._v("#")]),t._v(" Bundle::get")]),t._v(" "),e("p",[t._v("Get data by key. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" WrapperType ")]),e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" WrapperType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"bundle-getall"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bundle-getall"}},[t._v("#")]),t._v(" Bundle::getAll")]),t._v(" "),e("p",[t._v("Get map of data stored in the bundle. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAll")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/156.6599211c.js b/docs/.vuepress/dist/assets/js/156.6599211c.js deleted file mode 100644 index 885ef2331..000000000 --- a/docs/.vuepress/dist/assets/js/156.6599211c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{528:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fifobuffer-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-hpp"}},[t._v("#")]),t._v(" FIFOBuffer.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/buffer/FIFOBuffer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/buffer/FIFOBuffer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/buffer/FIFOBuffer.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"fifobuffer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer"}},[t._v("#")]),t._v(" FIFOBuffer")]),t._v(" "),e("p",[t._v("FIFO operations over the buffer !FIFOBuffer is NOT an IOStream despite having similar APIs!")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FIFOBuffer")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-fifobuffer"}},[t._v("FIFOBuffer")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-setbufferposition"}},[t._v("setBufferPosition")])]),t._v(" "),e("td",[t._v("Set read and write positions in buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-availabletoread"}},[t._v("availableToRead")])]),t._v(" "),e("td",[t._v("Amount of bytes currently available to read from buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-availabletowrite"}},[t._v("availableToWrite")])]),t._v(" "),e("td",[t._v("Amount of buffer space currently available for data writes.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-getbuffersize"}},[t._v("getBufferSize")])]),t._v(" "),e("td",[t._v("Get FIFOBuffer size.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("read up to count bytes from the buffer to data")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-peek"}},[t._v("peek")])]),t._v(" "),e("td",[t._v("Peek up to count of bytes int he buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-commitreadoffset"}},[t._v("commitReadOffset")])]),t._v(" "),e("td",[t._v("Commit read offset")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("write up to count bytes from data to buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-readandwritetostream"}},[t._v("readAndWriteToStream")])]),t._v(" "),e("td",[t._v("call read and then write bytes read to output stream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-readfromstreamandwrite"}},[t._v("readFromStreamAndWrite")])]),t._v(" "),e("td",[t._v("call stream.read() and then write bytes read to buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-flushtostream"}},[t._v("flushToStream")])]),t._v(" "),e("td",[t._v("flush all availableToRead bytes to stream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifobuffer-flushtostreamasync"}},[t._v("flushToStreamAsync")])]),t._v(" "),e("td",[t._v("flush all availableToRead bytes to stream in asynchronous manner")])])])]),t._v(" "),e("h3",{attrs:{id:"fifobuffer-fifobuffer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-fifobuffer"}},[t._v("#")]),t._v(" FIFOBuffer::FIFOBuffer")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer used for reads/writes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" bufferSize - buffer size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" readPosition - initial read position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" writePosition - initial write position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then "),e("a",{attrs:{href:"#fifobuffer-availabletoread"}},[t._v("FIFOBuffer::availableToRead()")]),t._v(" returns buffer size, and "),e("a",{attrs:{href:"#fifobuffer-availabletowrite"}},[t._v("FIFOBuffer::availableToWrite()")]),t._v(" returns 0. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FIFOBuffer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size bufferSize"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size readPosition "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size writePosition "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" canRead "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-setbufferposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-setbufferposition"}},[t._v("#")]),t._v(" FIFOBuffer::setBufferPosition")]),t._v(" "),e("p",[t._v("Set read and write positions in buffer. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" readPosition - read position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" writePosition - write position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then "),e("a",{attrs:{href:"#fifobuffer-availabletoread"}},[t._v("FIFOBuffer::availableToRead()")]),t._v(" returns buffer size, and "),e("a",{attrs:{href:"#fifobuffer-availabletowrite"}},[t._v("FIFOBuffer::availableToWrite()")]),t._v(" returns 0. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setBufferPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size readPosition"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size writePosition"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" canRead"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-availabletoread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-availabletoread"}},[t._v("#")]),t._v(" FIFOBuffer::availableToRead")]),t._v(" "),e("p",[t._v("Amount of bytes currently available to read from buffer. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-availabletowrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-availabletowrite"}},[t._v("#")]),t._v(" FIFOBuffer::availableToWrite")]),t._v(" "),e("p",[t._v("Amount of buffer space currently available for data writes. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-getbuffersize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-getbuffersize"}},[t._v("#")]),t._v(" FIFOBuffer::getBufferSize")]),t._v(" "),e("p",[t._v("Get FIFOBuffer size. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - FIFOBuffer size. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBufferSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-read"}},[t._v("#")]),t._v(" FIFOBuffer::read")]),t._v(" "),e("p",[t._v("read up to count bytes from the buffer to data "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-peek"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-peek"}},[t._v("#")]),t._v(" FIFOBuffer::peek")]),t._v(" "),e("p",[t._v("Peek up to count of bytes int he buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("peek")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-commitreadoffset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-commitreadoffset"}},[t._v("#")]),t._v(" FIFOBuffer::commitReadOffset")]),t._v(" "),e("p",[t._v("Commit read offset "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitReadOffset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-write"}},[t._v("#")]),t._v(" FIFOBuffer::write")]),t._v(" "),e("p",[t._v("write up to count bytes from data to buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-readandwritetostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-readandwritetostream"}},[t._v("#")]),t._v(" FIFOBuffer::readAndWriteToStream")]),t._v(" "),e("p",[t._v("call read and then write bytes read to output stream "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readAndWriteToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-readfromstreamandwrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-readfromstreamandwrite"}},[t._v("#")]),t._v(" FIFOBuffer::readFromStreamAndWrite")]),t._v(" "),e("p",[t._v("call stream.read() and then write bytes read to buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readFromStreamAndWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ReadCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-flushtostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-flushtostream"}},[t._v("#")]),t._v(" FIFOBuffer::flushToStream")]),t._v(" "),e("p",[t._v("flush all availableToRead bytes to stream "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifobuffer-flushtostreamasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifobuffer-flushtostreamasync"}},[t._v("#")]),t._v(" FIFOBuffer::flushToStreamAsync")]),t._v(" "),e("p",[t._v("flush all availableToRead bytes to stream in asynchronous manner "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - data::stream::OutputStream. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - async::CoroutineStarter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStreamAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"synchronizedfifobuffer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer")]),t._v(" "),e("p",[t._v("Same as FIFOBuffer + synchronization with SpinLock")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SynchronizedFIFOBuffer")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-synchronizedfifobuffer"}},[t._v("SynchronizedFIFOBuffer")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-setbufferposition"}},[t._v("setBufferPosition")])]),t._v(" "),e("td",[t._v("Set read and write positions in buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-availabletoread"}},[t._v("availableToRead")])]),t._v(" "),e("td",[t._v("Amount of bytes currently available to read from buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-availabletowrite"}},[t._v("availableToWrite")])]),t._v(" "),e("td",[t._v("Amount of buffer space currently available for data writes.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("read up to count bytes from the buffer to data")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#synchronizedfifobuffer-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("write up to count bytes from data to buffer")])])])]),t._v(" "),e("h3",{attrs:{id:"synchronizedfifobuffer-synchronizedfifobuffer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-synchronizedfifobuffer"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::SynchronizedFIFOBuffer")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer used for reads/writes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" bufferSize - buffer size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" readPosition - initial read position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" writePosition - initial write position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then "),e("a",{attrs:{href:"#synchronizedfifobuffer-availabletoread"}},[t._v("SynchronizedFIFOBuffer::availableToRead()")]),t._v(" returns buffer size, and "),e("a",{attrs:{href:"#synchronizedfifobuffer-availabletowrite"}},[t._v("SynchronizedFIFOBuffer::availableToWrite()")]),t._v(" returns 0. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SynchronizedFIFOBuffer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size bufferSize"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size readPosition "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size writePosition "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" canRead "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"synchronizedfifobuffer-setbufferposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-setbufferposition"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::setBufferPosition")]),t._v(" "),e("p",[t._v("Set read and write positions in buffer. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" readPosition - read position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" writePosition - write position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" canRead - flag to resolve ambiguity when readPosition == writePosition. If(readPosition == writePosition canRead) then "),e("a",{attrs:{href:"#synchronizedfifobuffer-availabletoread"}},[t._v("SynchronizedFIFOBuffer::availableToRead()")]),t._v(" returns buffer size, and "),e("a",{attrs:{href:"#synchronizedfifobuffer-availabletowrite"}},[t._v("SynchronizedFIFOBuffer::availableToWrite()")]),t._v(" returns 0. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setBufferPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size readPosition"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size writePosition"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" canRead"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"synchronizedfifobuffer-availabletoread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-availabletoread"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::availableToRead")]),t._v(" "),e("p",[t._v("Amount of bytes currently available to read from buffer. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"synchronizedfifobuffer-availabletowrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-availabletowrite"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::availableToWrite")]),t._v(" "),e("p",[t._v("Amount of buffer space currently available for data writes. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"synchronizedfifobuffer-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-read"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::read")]),t._v(" "),e("p",[t._v("read up to count bytes from the buffer to data "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"synchronizedfifobuffer-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#synchronizedfifobuffer-write"}},[t._v("#")]),t._v(" SynchronizedFIFOBuffer::write")]),t._v(" "),e("p",[t._v("write up to count bytes from data to buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/157.306be6b2.js b/docs/.vuepress/dist/assets/js/157.306be6b2.js deleted file mode 100644 index ada660215..000000000 --- a/docs/.vuepress/dist/assets/js/157.306be6b2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{529:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"iobuffer-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-hpp"}},[t._v("#")]),t._v(" IOBuffer.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/buffer/IOBuffer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/buffer/IOBuffer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/data/buffer/IOBuffer.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"iobuffer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer"}},[t._v("#")]),t._v(" IOBuffer")]),t._v(" "),a("p",[t._v("Predefined buffer implementation for I/O operations. Allocates buffer bytes using oatpp::base::memory::ThreadDistributedMemoryPool.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOBuffer")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("const v_buff_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-buffer-size"}},[t._v("BUFFER_SIZE")])]),t._v(" "),a("td",[t._v("Buffer size constant.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-iobuffer"}},[t._v("IOBuffer")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared IOBuffer.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-~iobuffer"}},[t._v("~IOBuffer")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-getdata"}},[t._v("getData")])]),t._v(" "),a("td",[t._v("Get pointer to buffer data.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_buff_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#iobuffer-getsize"}},[t._v("getSize")])]),t._v(" "),a("td",[t._v("Get buffer size.")])])])]),t._v(" "),a("h3",{attrs:{id:"iobuffer-buffer-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-buffer-size"}},[t._v("#")]),t._v(" IOBuffer::BUFFER_SIZE")]),t._v(" "),a("p",[t._v("Buffer size constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_buff_size BUFFER_SIZE\n")])])]),a("h3",{attrs:{id:"iobuffer-iobuffer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-iobuffer"}},[t._v("#")]),t._v(" IOBuffer::IOBuffer")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOBuffer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"iobuffer-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-createshared"}},[t._v("#")]),t._v(" IOBuffer::createShared")]),t._v(" "),a("p",[t._v("Create shared IOBuffer. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IOBuffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"iobuffer-iobuffer-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-iobuffer-2"}},[t._v("#")]),t._v(" IOBuffer::~IOBuffer")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("IOBuffer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"iobuffer-getdata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-getdata"}},[t._v("#")]),t._v(" IOBuffer::getData")]),t._v(" "),a("p",[t._v("Get pointer to buffer data. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"iobuffer-getsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#iobuffer-getsize"}},[t._v("#")]),t._v(" IOBuffer::getSize")]),t._v(" "),a("p",[t._v("Get buffer size. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - should always return "),a("a",{attrs:{href:"#iobuffer-buffer-size"}},[t._v("IOBuffer::BUFFER_SIZE")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/158.cd919c82.js b/docs/.vuepress/dist/assets/js/158.cd919c82.js deleted file mode 100644 index 4cb94a796..000000000 --- a/docs/.vuepress/dist/assets/js/158.cd919c82.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{530:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"processor-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-hpp"}},[t._v("#")]),t._v(" Processor.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/buffer/Processor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/buffer/Processor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/buffer/Processor.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"inlinereaddata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata"}},[t._v("#")]),t._v(" InlineReadData")]),t._v(" "),e("p",[t._v("Convenience structure for stream Async-Inline read operations.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("InlineReadData")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-currbufferptr"}},[t._v("currBufferPtr")])]),t._v(" "),e("td",[t._v("Pointer to current position in the buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-bytesleft"}},[t._v("bytesLeft")])]),t._v(" "),e("td",[t._v("Bytes left to read to the buffer.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-inlinereaddata"}},[t._v("InlineReadData")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-set"}},[t._v("set")])]),t._v(" "),e("td",[t._v("Set "),e("code",[t._v("currBufferPtr")]),t._v(" and "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-inc"}},[t._v("inc")])]),t._v(" "),e("td",[t._v("Increase position in the read buffer by "),e("code",[t._v("amount")]),t._v(" bytes. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinereaddata-seteof"}},[t._v("setEof")])]),t._v(" "),e("td",[t._v("Same as "),e("code",[t._v("inc(bytesLeft).")])])])])]),t._v(" "),e("h3",{attrs:{id:"inlinereaddata-currbufferptr"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-currbufferptr"}},[t._v("#")]),t._v(" InlineReadData::currBufferPtr")]),t._v(" "),e("p",[t._v("Pointer to current position in the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" currBufferPtr\n")])])]),e("h3",{attrs:{id:"inlinereaddata-bytesleft"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-bytesleft"}},[t._v("#")]),t._v(" InlineReadData::bytesLeft")]),t._v(" "),e("p",[t._v("Bytes left to read to the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size bytesLeft\n")])])]),e("h3",{attrs:{id:"inlinereaddata-inlinereaddata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-inlinereaddata"}},[t._v("#")]),t._v(" InlineReadData::InlineReadData")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("InlineReadData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("InlineReadData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"inlinereaddata-set"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-set"}},[t._v("#")]),t._v(" InlineReadData::set")]),t._v(" "),e("p",[t._v("Set "),e("code",[t._v("currBufferPtr")]),t._v(" and "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to buffer to store read data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size - size in bytes of the buffer. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("set")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"inlinereaddata-inc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-inc"}},[t._v("#")]),t._v(" InlineReadData::inc")]),t._v(" "),e("p",[t._v("Increase position in the read buffer by "),e("code",[t._v("amount")]),t._v(" bytes. "),e("br"),t._v(" This will increase "),e("code",[t._v("currBufferPtr")]),t._v(" and descrease "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" amount ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("inc")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size amount"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"inlinereaddata-seteof"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinereaddata-seteof"}},[t._v("#")]),t._v(" InlineReadData::setEof")]),t._v(" "),e("p",[t._v("Same as "),e("code",[t._v("inc(bytesLeft).")])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEof")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"inlinewritedata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata"}},[t._v("#")]),t._v(" InlineWriteData")]),t._v(" "),e("p",[t._v("Convenience structure for stream Async-Inline write operations.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("InlineWriteData")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const void*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-currbufferptr"}},[t._v("currBufferPtr")])]),t._v(" "),e("td",[t._v("Pointer to current position in the buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-bytesleft"}},[t._v("bytesLeft")])]),t._v(" "),e("td",[t._v("Bytes left to write from the buffer.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-inlinewritedata"}},[t._v("InlineWriteData")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-set"}},[t._v("set")])]),t._v(" "),e("td",[t._v("Set "),e("code",[t._v("currBufferPtr")]),t._v(" and "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-inc"}},[t._v("inc")])]),t._v(" "),e("td",[t._v("Increase position in the write buffer by "),e("code",[t._v("amount")]),t._v(" bytes. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#inlinewritedata-seteof"}},[t._v("setEof")])]),t._v(" "),e("td",[t._v("Same as "),e("code",[t._v("inc(bytesLeft).")])])])])]),t._v(" "),e("h3",{attrs:{id:"inlinewritedata-currbufferptr"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-currbufferptr"}},[t._v("#")]),t._v(" InlineWriteData::currBufferPtr")]),t._v(" "),e("p",[t._v("Pointer to current position in the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" currBufferPtr\n")])])]),e("h3",{attrs:{id:"inlinewritedata-bytesleft"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-bytesleft"}},[t._v("#")]),t._v(" InlineWriteData::bytesLeft")]),t._v(" "),e("p",[t._v("Bytes left to write from the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size bytesLeft\n")])])]),e("h3",{attrs:{id:"inlinewritedata-inlinewritedata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-inlinewritedata"}},[t._v("#")]),t._v(" InlineWriteData::InlineWriteData")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("InlineWriteData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("InlineWriteData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"inlinewritedata-set"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-set"}},[t._v("#")]),t._v(" InlineWriteData::set")]),t._v(" "),e("p",[t._v("Set "),e("code",[t._v("currBufferPtr")]),t._v(" and "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to buffer containing data to be written. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size - size in bytes of the buffer. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("set")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"inlinewritedata-inc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-inc"}},[t._v("#")]),t._v(" InlineWriteData::inc")]),t._v(" "),e("p",[t._v("Increase position in the write buffer by "),e("code",[t._v("amount")]),t._v(" bytes. "),e("br"),t._v(" This will increase "),e("code",[t._v("currBufferPtr")]),t._v(" and descrease "),e("code",[t._v("bytesLeft")]),t._v(" values. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" amount ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("inc")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size amount"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"inlinewritedata-seteof"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinewritedata-seteof"}},[t._v("#")]),t._v(" InlineWriteData::setEof")]),t._v(" "),e("p",[t._v("Same as "),e("code",[t._v("inc(bytesLeft).")])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEof")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"processor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor"}},[t._v("#")]),t._v(" Processor")]),t._v(" "),e("p",[t._v("Buffer processor. Note: all processors are considered to be stateful.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Processor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processor-~processor"}},[t._v("~Processor")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processor-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),e("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processor-iterate"}},[t._v("iterate")])]),t._v(" "),e("td",[t._v("Process data.")])])])]),t._v(" "),e("h3",{attrs:{id:"processor-processor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-processor"}},[t._v("#")]),t._v(" Processor::~Processor")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Processor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-suggestinputstreamreadsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" Processor::suggestInputStreamReadSize")]),t._v(" "),e("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-iterate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-iterate"}},[t._v("#")]),t._v(" Processor::iterate")]),t._v(" "),e("p",[t._v("Process data. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),e("code",[t._v("dataIn")]),t._v(" buffer pointer to "),e("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h2",{attrs:{id:"processor-error"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-error"}},[t._v("#")]),t._v(" Processor::Error")]),t._v(" "),e("p",[t._v("Enum of processing errors.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Processor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-error-ok"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-error-ok"}},[t._v("#")]),t._v(" Processor::Error::OK")]),t._v(" "),e("p",[t._v("No error.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("OK "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-error-provide-data-in"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-error-provide-data-in"}},[t._v("#")]),t._v(" Processor::Error::PROVIDE_DATA_IN")]),t._v(" "),e("p",[t._v("Caller must set fields of "),e("code",[t._v("dataIn")]),t._v(" parameter.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("PROVIDE_DATA_IN "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-error-flush-data-out"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-error-flush-data-out"}},[t._v("#")]),t._v(" Processor::Error::FLUSH_DATA_OUT")]),t._v(" "),e("p",[t._v("Caller must read all the data from the "),e("code",[t._v("dataOut")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("FLUSH_DATA_OUT "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),e("h3",{attrs:{id:"processor-error-finished"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processor-error-finished"}},[t._v("#")]),t._v(" Processor::Error::FINISHED")]),t._v(" "),e("p",[t._v("Processing is finished.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("FINISHED "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//*********************************************//")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Other values are processor-specific errors. //")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//*********************************************//")]),t._v("\n")])])]),e("h2",{attrs:{id:"processingpipeline"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processingpipeline"}},[t._v("#")]),t._v(" ProcessingPipeline")]),t._v(" "),e("p",[t._v("Pipeline of buffer processors.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" buffer "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProcessingPipeline")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Processor "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processingpipeline-processingpipeline"}},[t._v("ProcessingPipeline")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processingpipeline-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),e("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#processingpipeline-iterate"}},[t._v("iterate")])]),t._v(" "),e("td",[t._v("Process data.")])])])]),t._v(" "),e("h3",{attrs:{id:"processingpipeline-processingpipeline"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processingpipeline-processingpipeline"}},[t._v("#")]),t._v(" ProcessingPipeline::ProcessingPipeline")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" m_processors - the array of processors defining the pipeline. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ProcessingPipeline")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Processor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" m_processors"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"processingpipeline-suggestinputstreamreadsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processingpipeline-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" ProcessingPipeline::suggestInputStreamReadSize")]),t._v(" "),e("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"processingpipeline-iterate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processingpipeline-iterate"}},[t._v("#")]),t._v(" ProcessingPipeline::iterate")]),t._v(" "),e("p",[t._v("Process data. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),e("code",[t._v("dataIn")]),t._v(" buffer pointer to "),e("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/159.d0f19644.js b/docs/.vuepress/dist/assets/js/159.d0f19644.js deleted file mode 100644 index a92e4a27a..000000000 --- a/docs/.vuepress/dist/assets/js/159.d0f19644.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[159],{531:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"objectmapper-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-hpp"}},[t._v("#")]),t._v(" ObjectMapper.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/ObjectMapper.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/ObjectMapper.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/mapping/ObjectMapper.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper"}},[t._v("#")]),t._v(" ObjectMapper")]),t._v(" "),e("p",[t._v("Abstract ObjectMapper class.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-objectmapper"}},[t._v("ObjectMapper")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const Info&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-getinfo"}},[t._v("getInfo")])]),t._v(" "),e("td",[t._v("Get ObjectMapper metadata.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Serialize object to stream. Implement this method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("mapping::type::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Deserialize object. Implement this method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-writetostring"}},[t._v("writeToString")])]),t._v(" "),e("td",[t._v("Serialize object to String.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Wrapper")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-readfromcaret"}},[t._v("readFromCaret")])]),t._v(" "),e("td",[t._v("Deserialize object.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Wrapper")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-readfromstring"}},[t._v("readFromString")])]),t._v(" "),e("td",[t._v("Deserialize object.")])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-objectmapper"}},[t._v("#")]),t._v(" ObjectMapper::ObjectMapper")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" info - Metadata for ObjectMapper. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" info"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-getinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-getinfo"}},[t._v("#")]),t._v(" ObjectMapper::getInfo")]),t._v(" "),e("p",[t._v("Get ObjectMapper metadata. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - ObjectMapper metadata. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInfo")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-write"}},[t._v("#")]),t._v(" ObjectMapper::write")]),t._v(" "),e("p",[t._v("Serialize object to stream. Implement this method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#consistentoutputstream"}},[t._v("oatpp::data::stream::ConsistentOutputStream")]),t._v(" to serialize object to. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" variant - Object to serialize. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" variant"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-read"}},[t._v("#")]),t._v(" ObjectMapper::read")]),t._v(" "),e("p",[t._v("Deserialize object. Implement this method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" caret - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(" over serialized buffer. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" type - pointer to object type. See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - deserialized object wrapped in "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-writetostring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-writetostring"}},[t._v("#")]),t._v(" ObjectMapper::writeToString")]),t._v(" "),e("p",[t._v("Serialize object to String. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" variant - Object to serialize. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - serialized object as "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" variant"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-readfromcaret"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-readfromcaret"}},[t._v("#")]),t._v(" ObjectMapper::readFromCaret")]),t._v(" "),e("p",[t._v("Deserialize object. If nullptr is returned - check caret.getError() "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" caret - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(" over serialized buffer. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - deserialized Object. ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - depends on implementation. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readFromCaret")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-readfromstring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-readfromstring"}},[t._v("#")]),t._v(" ObjectMapper::readFromString")]),t._v(" "),e("p",[t._v("Deserialize object. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" str - serialized data. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - deserialized Object. ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/ParsingError/#parsingerror"}},[t._v("oatpp::parser::ParsingError")])],1),e("li",[e("strong",[t._v("@throws")]),t._v(" - depends on implementation. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readFromString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h2",{attrs:{id:"objectmapper-info"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-info"}},[t._v("#")]),t._v(" ObjectMapper::Info")]),t._v(" "),e("p",[t._v("Metadata for ObjectMapper.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const char* const")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-info-http-content-type"}},[t._v("http_content_type")])]),t._v(" "),e("td",[t._v("Value for Content-Type http header when DTO is serialized via specified ObjectMapper.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-info-info"}},[t._v("Info")])]),t._v(" "),e("td",[t._v("Constructor.")])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-info-http-content-type"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-info-http-content-type"}},[t._v("#")]),t._v(" ObjectMapper::Info::http_content_type")]),t._v(" "),e("p",[t._v("Value for Content-Type http header when DTO is serialized via specified ObjectMapper.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http_content_type\n")])])]),e("h3",{attrs:{id:"objectmapper-info-info"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-info-info"}},[t._v("#")]),t._v(" ObjectMapper::Info::Info")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" _http_content_type ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" _http_content_type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("http_content_type")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("_http_content_type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/16.7daf2742.js b/docs/.vuepress/dist/assets/js/16.7daf2742.js deleted file mode 100644 index 8dbd60479..000000000 --- a/docs/.vuepress/dist/assets/js/16.7daf2742.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{388:function(t,e,s){"use strict";s.r(e);var r=s(42),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"requestexecutor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-hpp"}},[t._v("#")]),t._v(" RequestExecutor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/RequestExecutor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/RequestExecutor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-curl")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-curl/RequestExecutor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"requestexecutor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor"}},[t._v("#")]),t._v(" RequestExecutor")]),t._v(" "),s("p",[t._v("Curl request executor. Uses Curl to perform client to server requests. "),s("br"),t._v(" Extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor"}},[t._v("oatpp::web::client::RequestExecutor")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestExecutor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-requestexecutor"}},[t._v("RequestExecutor")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared RequestExecutor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-getconnection"}},[t._v("getConnection")])]),t._v(" "),s("td",[t._v("Connection reuse mechanism for curl RequestExecutor is "),s("strong",[t._v("NOT IMPLEMENTED")]),t._v(" yet."),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-getconnectionasync"}},[t._v("getConnectionAsync")])]),t._v(" "),s("td",[t._v("Connection reuse mechanism for curl RequestExecutor is "),s("strong",[t._v("NOT IMPLEMENTED")]),t._v(" yet."),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-invalidateconnection"}},[t._v("invalidateConnection")])]),t._v(" "),s("td",[t._v("Invalidate connection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-executeonce"}},[t._v("executeOnce")])]),t._v(" "),s("td",[t._v("Execute http request. Implementation of oatpp::curl::RequestExecutor::execute method.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestexecutor-executeonceasync"}},[t._v("executeOnceAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(" but Async.")])])])]),t._v(" "),s("h3",{attrs:{id:"requestexecutor-requestexecutor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutor"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutor")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' baseUrl - base url for requests. Ex.: "https://oatpp.io/" ')]),s("li",[s("strong",[t._v("@param")]),t._v(" verbose - "),s("code",[t._v("true")]),t._v(" to print curl logs to "),s("code",[t._v("std::cout")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("RequestExecutor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" baseUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" verbose "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"requestexecutor-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-createshared"}},[t._v("#")]),t._v(" RequestExecutor::createShared")]),t._v(" "),s("p",[t._v("Create shared RequestExecutor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' baseUrl - base url for requests. Ex.: "https://oatpp.io/" ')]),s("li",[s("strong",[t._v("@param")]),t._v(" verbose - "),s("code",[t._v("true")]),t._v(" to print curl logs to "),s("code",[t._v("std::cout")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to RequestExecutor. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" baseUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" verbose "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"requestexecutor-getconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-getconnection"}},[t._v("#")]),t._v(" RequestExecutor::getConnection")]),t._v(" "),s("p",[t._v("Connection reuse mechanism for curl RequestExecutor is "),s("strong",[t._v("NOT IMPLEMENTED")]),t._v(" yet."),s("br"),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#requestexecutor-stubconnectionhandle"}},[t._v("RequestExecutor::StubConnectionHandle")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"requestexecutor-getconnectionasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-getconnectionasync"}},[t._v("#")]),t._v(" RequestExecutor::getConnectionAsync")]),t._v(" "),s("p",[t._v("Connection reuse mechanism for curl RequestExecutor is "),s("strong",[t._v("NOT IMPLEMENTED")]),t._v(" yet."),s("br"),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#requestexecutor-stubconnectionhandle"}},[t._v("RequestExecutor::StubConnectionHandle")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"requestexecutor-invalidateconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-invalidateconnection"}},[t._v("#")]),t._v(" RequestExecutor::invalidateConnection")]),t._v(" "),s("p",[t._v("Invalidate connection. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidateConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"requestexecutor-executeonce"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-executeonce"}},[t._v("#")]),t._v(" RequestExecutor::executeOnce")]),t._v(" "),s("p",[t._v("Execute http request. Implementation of oatpp::curl::RequestExecutor::execute method. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),s("li",[s("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" userDefinedHeaders - headers map "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-headers"}},[t._v("oatpp::web::client::RequestExecutor::Headers")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" body - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-body"}},[t._v("oatpp::web::client::RequestExecutor::Body")]),t._v(" object. ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle - "),s("code",[t._v("nullptr")]),t._v(". This parameter is ignored for now. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnce")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" userDefinedHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"requestexecutor-executeonceasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-executeonceasync"}},[t._v("#")]),t._v(" RequestExecutor::executeOnceAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(" but Async. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),s("li",[s("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers - headers map "),s("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("RequestExecutor::Headers")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" body - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("a",{attrs:{href:"#requestexecutor-body"}},[t._v("RequestExecutor::Body")]),t._v(" object. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle - "),s("code",[t._v("nullptr")]),t._v(". This parameter is ignored for now. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnceAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h2",{attrs:{id:"requestexecutor-stubconnectionhandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-stubconnectionhandle"}},[t._v("#")]),t._v(" RequestExecutor::StubConnectionHandle")]),t._v(" "),s("p",[t._v("Connection reuse mechanism for curl RequestExecutor is "),s("strong",[t._v("NOT IMPLEMENTED")]),t._v(" yet."),s("br"),t._v(" Use dummy stub to mock the real connection and prevent the crash.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestExecutor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StubConnectionHandle")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ConnectionHandle "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/160.9d422b02.js b/docs/.vuepress/dist/assets/js/160.9d422b02.js deleted file mode 100644 index d81b8ffc7..000000000 --- a/docs/.vuepress/dist/assets/js/160.9d422b02.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{532:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"typeresolver-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-hpp"}},[t._v("#")]),t._v(" TypeResolver.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/TypeResolver.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/TypeResolver.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/TypeResolver.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"typeresolver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver"}},[t._v("#")]),t._v(" TypeResolver")]),t._v(" "),s("p",[t._v("Helper class to work with oatpp types.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TypeResolver")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-typeresolver"}},[t._v("TypeResolver")])]),t._v(" "),s("td",[t._v("Default constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-~typeresolver"}},[t._v("~TypeResolver")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-setknownclass"}},[t._v("setKnownClass")])]),t._v(" "),s("td",[t._v("Set if the type class is considered known/unknown")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-addknownclasses"}},[t._v("addKnownClasses")])]),t._v(" "),s("td",[t._v("Set all mentioned type classes as known.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-isknownclass"}},[t._v("isKnownClass")])]),t._v(" "),s("td",[t._v("Check if type class is known.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-isknowntype"}},[t._v("isKnownType")])]),t._v(" "),s("td",[t._v("Check if type is known.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-setenabledinterpretations"}},[t._v("setEnabledInterpretations")])]),t._v(" "),s("td",[t._v("Set enabled type interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::vector&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-getenabledinterpretations"}},[t._v("getEnabledInterpretations")])]),t._v(" "),s("td",[t._v("Get enabled type interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-resolvetype"}},[t._v("resolveType")])]),t._v(" "),s("td",[t._v("Resolve unknown type according to enabled interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-resolvevalue"}},[t._v("resolveValue")])]),t._v(" "),s("td",[t._v("Resolve unknown value according to enabled interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-resolveobjectpropertytype"}},[t._v("resolveObjectPropertyType")])]),t._v(" "),s("td",[t._v("Traverse object property tree resolving unknown types according to enabled interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-resolveobjectpropertyvalue"}},[t._v("resolveObjectPropertyValue")])]),t._v(" "),s("td",[t._v("Traverse object property tree resolving unknown value types according to enabled interpretations.")])])])]),t._v(" "),s("h3",{attrs:{id:"typeresolver-typeresolver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-typeresolver"}},[t._v("#")]),t._v(" TypeResolver::TypeResolver")]),t._v(" "),s("p",[t._v("Default constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("TypeResolver")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-typeresolver-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-typeresolver-2"}},[t._v("#")]),t._v(" TypeResolver::~TypeResolver")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("TypeResolver")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-setknownclass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-setknownclass"}},[t._v("#")]),t._v(" TypeResolver::setKnownClass")]),t._v(" "),s("p",[t._v("Set if the type class is considered known/unknown "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" classId ")]),s("li",[s("strong",[t._v("@param")]),t._v(" isKnown ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setKnownClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isKnown"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-addknownclasses"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-addknownclasses"}},[t._v("#")]),t._v(" TypeResolver::addKnownClasses")]),t._v(" "),s("p",[t._v("Set all mentioned type classes as known. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" knownClasses ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addKnownClasses")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" knownClasses"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-isknownclass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-isknownclass"}},[t._v("#")]),t._v(" TypeResolver::isKnownClass")]),t._v(" "),s("p",[t._v("Check if type class is known. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" classId ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isKnownClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-isknowntype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-isknowntype"}},[t._v("#")]),t._v(" TypeResolver::isKnownType")]),t._v(" "),s("p",[t._v("Check if type is known. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" type ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isKnownType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-setenabledinterpretations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-setenabledinterpretations"}},[t._v("#")]),t._v(" TypeResolver::setEnabledInterpretations")]),t._v(" "),s("p",[t._v("Set enabled type interpretations. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" interpretations ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEnabledInterpretations")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interpretations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-getenabledinterpretations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-getenabledinterpretations"}},[t._v("#")]),t._v(" TypeResolver::getEnabledInterpretations")]),t._v(" "),s("p",[t._v("Get enabled type interpretations. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEnabledInterpretations")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-resolvetype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-resolvetype"}},[t._v("#")]),t._v(" TypeResolver::resolveType")]),t._v(" "),s("p",[t._v("Resolve unknown type according to enabled interpretations. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" type - type to resolve. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" cache - local cache. ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("resolveType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Cache"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-resolvevalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-resolvevalue"}},[t._v("#")]),t._v(" TypeResolver::resolveValue")]),t._v(" "),s("p",[t._v("Resolve unknown value according to enabled interpretations. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value - value to resolve. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" cache - local cache. ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("resolveValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Cache"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-resolveobjectpropertytype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-resolveobjectpropertytype"}},[t._v("#")]),t._v(" TypeResolver::resolveObjectPropertyType")]),t._v(" "),s("p",[t._v("Traverse object property tree resolving unknown types according to enabled interpretations. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" objectType - base object type. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" path - vector of property names. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" cache - local cache. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(". "),s("code",[t._v("nullptr")]),t._v(" - if couldn't resolve. ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("resolveObjectPropertyType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" objectType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Cache"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"typeresolver-resolveobjectpropertyvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-resolveobjectpropertyvalue"}},[t._v("#")]),t._v(" TypeResolver::resolveObjectPropertyValue")]),t._v(" "),s("p",[t._v("Traverse object property tree resolving unknown value types according to enabled interpretations. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - base object. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" path - vector of property names. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" cache - local cache. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - value as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". The "),s("code",[t._v("valueType")]),t._v(" will be set to resolved type or to "),s("code",[t._v("oatpp::Void::Class::getType()")]),t._v(" if couldn't resolve. ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("resolveObjectPropertyValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Cache"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"typeresolver-cache"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-cache"}},[t._v("#")]),t._v(" TypeResolver::Cache")]),t._v(" "),s("p",[t._v("Local resolution cache used to reduce number of type interpretation iterations.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TypeResolver")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Cache")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("std::unordered_map")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-cache-types"}},[t._v("types")])]),t._v(" "),s("td",[t._v("types map.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unordered_map>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#typeresolver-cache-values"}},[t._v("values")])]),t._v(" "),s("td",[t._v("values by type map.")])])])]),t._v(" "),s("h3",{attrs:{id:"typeresolver-cache-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-cache-types"}},[t._v("#")]),t._v(" TypeResolver::Cache::types")]),t._v(" "),s("p",[t._v("types map.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" types\n")])])]),s("h3",{attrs:{id:"typeresolver-cache-values"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeresolver-cache-values"}},[t._v("#")]),t._v(" TypeResolver::Cache::values")]),t._v(" "),s("p",[t._v("values by type map.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" values\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/161.d95eeb96.js b/docs/.vuepress/dist/assets/js/161.d95eeb96.js deleted file mode 100644 index 661e67071..000000000 --- a/docs/.vuepress/dist/assets/js/161.d95eeb96.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{535:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"any-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-hpp"}},[t._v("#")]),t._v(" Any.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Any.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Any.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Any.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"any"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any"}},[t._v("#")]),t._v(" Any")]),t._v(" "),s("p",[t._v("Any class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Any")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#any-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("Class Id.")])])])]),t._v(" "),s("h3",{attrs:{id:"any-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-class-id"}},[t._v("#")]),t._v(" Any::CLASS_ID")]),t._v(" "),s("p",[t._v("Class Id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"any-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-2"}},[t._v("#")]),t._v(" Any")]),t._v(" "),s("p",[t._v("Any - ObjectWrapper to hold Any oatpp mapping-enabled type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Any")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AnyHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#any-any"}},[t._v("Any")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Nullptr constructor. ")]),s("li",[t._v("Copy constructor. ")]),s("li",[t._v("Move constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#any-store"}},[t._v("store")])]),t._v(" "),s("td",[t._v("Store any ObjectWrapper in Any.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#any-getstoredtype"}},[t._v("getStoredType")])]),t._v(" "),s("td",[t._v("Get "),s("code",[t._v("Type")]),t._v(" of the stored object.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#any-retrieve"}},[t._v("retrieve")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Retrieve stored object of type "),s("code",[t._v("type")]),t._v(". ")]),s("li",[t._v("Retrieve stored object. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"any-any"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-any"}},[t._v("#")]),t._v(" Any::Any")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Any")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Nullptr constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Any")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Copy constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other - other Any. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Any")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Move constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Any")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - Underlying type of ObjectWrapper. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" C - __class of ObjectWrapper. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" polymorph - any ObjectWrapper. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Any")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectWrapper")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AnyHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPtr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValueType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"any-store"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-store"}},[t._v("#")]),t._v(" Any::store")]),t._v(" "),s("p",[t._v("Store any ObjectWrapper in Any. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" C ")]),s("li",[s("strong",[t._v("@param")]),t._v(" polymorph - ObjectWrapper. Ex.: "),s("code",[t._v("oatpp::String")]),t._v(", "),s("code",[t._v("oatpp::List<...>")]),t._v(", etc. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("store")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"any-getstoredtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-getstoredtype"}},[t._v("#")]),t._v(" Any::getStoredType")]),t._v(" "),s("p",[t._v("Get "),s("code",[t._v("Type")]),t._v(" of the stored object. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStoredType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"any-retrieve"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#any-retrieve"}},[t._v("#")]),t._v(" Any::retrieve")]),t._v(" "),s("ol",[s("li",[t._v("Retrieve stored object of type "),s("code",[t._v("type")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" type - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")])],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("std::runtime_error")]),t._v(" - if stored type and type requested do not match. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Retrieve stored object. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" WrapperType - type of the object to retrieve. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - ObjectWrapper of type - "),s("code",[t._v("WrapperType")]),t._v(". ")]),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("code",[t._v("std::runtime_error")]),t._v(" - if stored type and type requested ("),s("code",[t._v("WrapperType")]),t._v(") do not match. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WrapperType")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/162.7b6c4a8d.js b/docs/.vuepress/dist/assets/js/162.7b6c4a8d.js deleted file mode 100644 index 09b757618..000000000 --- a/docs/.vuepress/dist/assets/js/162.7b6c4a8d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{533:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"collection-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-hpp"}},[t._v("#")]),t._v(" Collection.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Collection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Collection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Collection.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"collection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection"}},[t._v("#")]),t._v(" Collection")]),t._v(" "),s("p",[t._v("Abstract Collection. "),s("br"),t._v(" Ex.: Vector, List, Set.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Collection")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"collection-iterator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-iterator"}},[t._v("#")]),t._v(" Collection::Iterator")]),t._v(" "),s("p",[t._v("Iterator.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Collection")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Iterator")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-iterator-~iterator"}},[t._v("~Iterator")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-iterator-get"}},[t._v("get")])]),t._v(" "),s("td",[t._v("Get current item.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-iterator-next"}},[t._v("next")])]),t._v(" "),s("td",[t._v("Iterate to next item.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-iterator-finished"}},[t._v("finished")])]),t._v(" "),s("td",[t._v("Check if iterator finished.")])])])]),t._v(" "),s("h3",{attrs:{id:"collection-iterator-iterator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-iterator-iterator"}},[t._v("#")]),t._v(" Collection::Iterator::~Iterator")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Iterator")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-iterator-get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-iterator-get"}},[t._v("#")]),t._v(" Collection::Iterator::get")]),t._v(" "),s("p",[t._v("Get current item. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-iterator-next"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-iterator-next"}},[t._v("#")]),t._v(" Collection::Iterator::next")]),t._v(" "),s("p",[t._v("Iterate to next item.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-iterator-finished"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-iterator-finished"}},[t._v("#")]),t._v(" Collection::Iterator::finished")]),t._v(" "),s("p",[t._v("Check if iterator finished. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("finished")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"collection-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Polymorphic Dispatcher")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Collection")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PolymorphicDispatcher")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-~polymorphicdispatcher"}},[t._v("~PolymorphicDispatcher")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-createobject"}},[t._v("createObject")])]),t._v(" "),s("td",[t._v("Create Collection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-getitemtype"}},[t._v("getItemType")])]),t._v(" "),s("td",[t._v("Get type of collection items.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-getcollectionsize"}},[t._v("getCollectionSize")])]),t._v(" "),s("td",[t._v("Get collection size.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-additem"}},[t._v("addItem")])]),t._v(" "),s("td",[t._v("Add item.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unique_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#collection-polymorphicdispatcher-beginiteration"}},[t._v("beginIteration")])]),t._v(" "),s("td",[t._v("Begin collection iteration.")])])])]),t._v(" "),s("h3",{attrs:{id:"collection-polymorphicdispatcher-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-polymorphicdispatcher"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::~PolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PolymorphicDispatcher")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-polymorphicdispatcher-createobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-createobject"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::createObject")]),t._v(" "),s("p",[t._v("Create Collection. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-polymorphicdispatcher-getitemtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-getitemtype"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::getItemType")]),t._v(" "),s("p",[t._v("Get type of collection items. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getItemType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-polymorphicdispatcher-getcollectionsize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-getcollectionsize"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::getCollectionSize")]),t._v(" "),s("p",[t._v("Get collection size. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - collection. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - size of the collection (elements count). ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCollectionSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-polymorphicdispatcher-additem"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-additem"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::addItem")]),t._v(" "),s("p",[t._v("Add item. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - Collection. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" item - Item to add. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addItem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" item"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"collection-polymorphicdispatcher-beginiteration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collection-polymorphicdispatcher-beginiteration"}},[t._v("#")]),t._v(" Collection::PolymorphicDispatcher::beginIteration")]),t._v(" "),s("p",[t._v("Begin collection iteration. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - Collection. ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unique_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Iterator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beginIteration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/163.94281788.js b/docs/.vuepress/dist/assets/js/163.94281788.js deleted file mode 100644 index 362c9ac9b..000000000 --- a/docs/.vuepress/dist/assets/js/163.94281788.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{534:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"enum-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enum-hpp"}},[t._v("#")]),t._v(" Enum.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Enum.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Enum.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/mapping/type/Enum.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"enuminterpretererror"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror"}},[t._v("#")]),t._v(" EnumInterpreterError")]),t._v(" "),e("p",[t._v("Errors of enum interpretation.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("class")]),t._v(" EnumInterpreterError "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v_int32"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"enuminterpretererror-ok"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror-ok"}},[t._v("#")]),t._v(" EnumInterpreterError::OK")]),t._v(" "),e("p",[t._v("The interpretation was successful.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("OK "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"enuminterpretererror-type-mismatch-enum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror-type-mismatch-enum"}},[t._v("#")]),t._v(" EnumInterpreterError::TYPE_MISMATCH_ENUM")]),t._v(" "),e("p",[t._v("Wrong "),e("code",[t._v("Interpreter")]),t._v(" is used to interpret the variable. "),e("br"),t._v(" This may also occur if for example: "),e("br"),t._v(" "),e("code",[t._v("oatpp::Enum")]),t._v(" is passed to interpreter of "),e("code",[t._v("oatpp::Enum::NotNull")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("TYPE_MISMATCH_ENUM "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),e("h3",{attrs:{id:"enuminterpretererror-type-mismatch-enum-value"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror-type-mismatch-enum-value"}},[t._v("#")]),t._v(" EnumInterpreterError::TYPE_MISMATCH_ENUM_VALUE")]),t._v(" "),e("p",[t._v("Wrong "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#primitive"}},[t._v("oatpp::data::mapping::type::Primitive")]),t._v(" is passed to interpreter.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("TYPE_MISMATCH_ENUM_VALUE "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),e("h3",{attrs:{id:"enuminterpretererror-constraint-not-null"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror-constraint-not-null"}},[t._v("#")]),t._v(" EnumInterpreterError::CONSTRAINT_NOT_NULL")]),t._v(" "),e("p",[t._v("Interpreter constraint is violated. "),e("br"),t._v(" The constraint was set to "),e("code",[t._v("NotNull")]),t._v(" but interpretation to/from "),e("code",[t._v("nullptr")]),t._v(" is requested.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("CONSTRAINT_NOT_NULL "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])]),e("h3",{attrs:{id:"enuminterpretererror-entry-not-found"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpretererror-entry-not-found"}},[t._v("#")]),t._v(" EnumInterpreterError::ENTRY_NOT_FOUND")]),t._v(" "),e("p",[t._v("Enum entry not found.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("ENTRY_NOT_FOUND "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v("\n")])])]),e("h2",{attrs:{id:"abstractenum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#abstractenum"}},[t._v("#")]),t._v(" AbstractEnum")]),t._v(" "),e("p",[t._v("Abstract Enum class.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractEnum")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"enumvalueinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumvalueinfo"}},[t._v("#")]),t._v(" EnumValueInfo")]),t._v(" "),e("p",[t._v("Enum value info. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - underlying enum type. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EnumValueInfo")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const T")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumvalueinfo-value"}},[t._v("value")])]),t._v(" "),e("td",[t._v("Entry value. T - enum type.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumvalueinfo-index"}},[t._v("index")])]),t._v(" "),e("td",[t._v("Index of the entry.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const data::share::StringKeyLabel")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumvalueinfo-name"}},[t._v("name")])]),t._v(" "),e("td",[t._v("Name of the enum entry or name-qualifier, if qualifier was specified. "),e("br"),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const data::share::StringKeyLabel")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumvalueinfo-description"}},[t._v("description")])]),t._v(" "),e("td",[t._v("Description of the enum etry. "),e("br"),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"enumvalueinfo-value"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumvalueinfo-value"}},[t._v("#")]),t._v(" EnumValueInfo::value")]),t._v(" "),e("p",[t._v("Entry value. T - enum type.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" T value\n")])])]),e("h3",{attrs:{id:"enumvalueinfo-index"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumvalueinfo-index"}},[t._v("#")]),t._v(" EnumValueInfo::index")]),t._v(" "),e("p",[t._v("Index of the entry.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 index\n")])])]),e("h3",{attrs:{id:"enumvalueinfo-name"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumvalueinfo-name"}},[t._v("#")]),t._v(" EnumValueInfo::name")]),t._v(" "),e("p",[t._v("Name of the enum entry or name-qualifier, if qualifier was specified. "),e("br"),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel name\n")])])]),e("h3",{attrs:{id:"enumvalueinfo-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumvalueinfo-description"}},[t._v("#")]),t._v(" EnumValueInfo::description")]),t._v(" "),e("p",[t._v("Description of the enum etry. "),e("br"),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel description\n")])])]),e("h2",{attrs:{id:"enuminterpreterasstring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpreterasstring"}},[t._v("#")]),t._v(" EnumInterpreterAsString")]),t._v(" "),e("p",[t._v("Enum interpreter "),e("code",[t._v("AsString")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T ")]),e("li",[e("strong",[t._v("@tparam")]),t._v(" notnull ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" notnull"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EnumInterpreterAsString")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"enuminterpreterasnumber"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enuminterpreterasnumber"}},[t._v("#")]),t._v(" EnumInterpreterAsNumber")]),t._v(" "),e("p",[t._v("Enum interpreter "),e("code",[t._v("AsNumber")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T ")]),e("li",[e("strong",[t._v("@tparam")]),t._v(" notnull ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" notnull"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EnumInterpreterAsNumber")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"enumobjectwrapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper"}},[t._v("#")]),t._v(" EnumObjectWrapper")]),t._v(" "),e("p",[t._v("Template class for "),e("code",[t._v("oatpp::Enum")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - enum type. ")]),e("li",[e("strong",[t._v("@tparam")]),t._v(" EnumInterpreter - enum interpreter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EnumInterpreter")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EnumObjectWrapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Enum"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("EnumInterpreter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-interpreter"}},[t._v("Interpreter")])]),t._v(" "),e("td",[t._v("Template parameter - "),e("code",[t._v("Interpreter")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("EnumObjectWrapper>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-asstring"}},[t._v("AsString")])]),t._v(" "),e("td",[t._v("Enum interpreted "),e("code",[t._v("AsString")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("EnumObjectWrapper>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-asnumber"}},[t._v("AsNumber")])]),t._v(" "),e("td",[t._v("Enum interpreted "),e("code",[t._v("AsNumber")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("EnumObjectWrapper>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-notnull"}},[t._v("NotNull")])]),t._v(" "),e("td",[t._v("Enum with "),e("code",[t._v("NotNull")]),t._v(" interpretation constraint.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-enumobjectwrapper"}},[t._v("EnumObjectWrapper")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Nullptr constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Copy-constructor. ")]),e("li",[t._v("Move-constructor. ")]),e("li",[t._v("Constructor by value. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const EnumValueInfo&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-getentrybyname"}},[t._v("getEntryByName")])]),t._v(" "),e("td",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const EnumValueInfo&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-getentrybyvalue"}},[t._v("getEntryByValue")])]),t._v(" "),e("td",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by enum value.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const EnumValueInfo&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-getentrybyunderlyingvalue"}},[t._v("getEntryByUnderlyingValue")])]),t._v(" "),e("td",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by integer value.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const EnumValueInfo&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-getentrybyindex"}},[t._v("getEntryByIndex")])]),t._v(" "),e("td",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by index.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const std::vector>&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#enumobjectwrapper-getentries"}},[t._v("getEntries")])]),t._v(" "),e("td",[t._v("Get "),e("code",[t._v("std::vector")]),t._v(" of "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(".")])])])]),t._v(" "),e("h3",{attrs:{id:"enumobjectwrapper-interpreter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-interpreter"}},[t._v("#")]),t._v(" EnumObjectWrapper::Interpreter")]),t._v(" "),e("p",[t._v("Template parameter - "),e("code",[t._v("Interpreter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" EnumInterpreter Interpreter\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-asstring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-asstring"}},[t._v("#")]),t._v(" EnumObjectWrapper::AsString")]),t._v(" "),e("p",[t._v("Enum interpreted "),e("code",[t._v("AsString")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreterAsString"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("notNull"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" AsString\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-asnumber"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-asnumber"}},[t._v("#")]),t._v(" EnumObjectWrapper::AsNumber")]),t._v(" "),e("p",[t._v("Enum interpreted "),e("code",[t._v("AsNumber")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreterAsNumber"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("notNull"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" AsNumber\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-notnull"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-notnull"}},[t._v("#")]),t._v(" EnumObjectWrapper::NotNull")]),t._v(" "),e("p",[t._v("Enum with "),e("code",[t._v("NotNull")]),t._v(" interpretation constraint.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" EnumInterpreter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" InterpreterType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" NotNull\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-enumobjectwrapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-enumobjectwrapper"}},[t._v("#")]),t._v(" EnumObjectWrapper::EnumObjectWrapper")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Nullptr constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ptr ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumObjectClass"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ptr ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumObjectClass"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("forward"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Copy-constructor. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" OtherInter ")]),e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OtherInter")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" OtherInter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumObjectClass"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("m_ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Move-constructor. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" OtherInter ")]),e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OtherInter")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" OtherInter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumObjectClass"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("move")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("m_ptr"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor by value. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" value ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("EnumObjectWrapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("T value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumObjectClass"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"enumobjectwrapper-getentrybyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-getentrybyname"}},[t._v("#")]),t._v(" EnumObjectWrapper::getEntryByName")]),t._v(" "),e("p",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by name. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name - name or name-qualifier of the enum entry. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - "),e("code",[t._v("std::runtime_error")]),t._v(" if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" EnumValueInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntryByName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-getentrybyvalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-getentrybyvalue"}},[t._v("#")]),t._v(" EnumObjectWrapper::getEntryByValue")]),t._v(" "),e("p",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by enum value. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" value - enum value. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - "),e("code",[t._v("std::runtime_error")]),t._v(" if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" EnumValueInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntryByValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("T value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-getentrybyunderlyingvalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-getentrybyunderlyingvalue"}},[t._v("#")]),t._v(" EnumObjectWrapper::getEntryByUnderlyingValue")]),t._v(" "),e("p",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by integer value. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" value - integer value. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - "),e("code",[t._v("std::runtime_error")]),t._v(" if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" EnumValueInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntryByUnderlyingValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("UnderlyingEnumType value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-getentrybyindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-getentrybyindex"}},[t._v("#")]),t._v(" EnumObjectWrapper::getEntryByIndex")]),t._v(" "),e("p",[t._v("Get "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(" by index. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" index - index of the entry in the enum. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". ")]),e("li",[e("strong",[t._v("@throws")]),t._v(" - "),e("code",[t._v("std::runtime_error")]),t._v(" if not found. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" EnumValueInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntryByIndex")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 index"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"enumobjectwrapper-getentries"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enumobjectwrapper-getentries"}},[t._v("#")]),t._v(" EnumObjectWrapper::getEntries")]),t._v(" "),e("p",[t._v("Get "),e("code",[t._v("std::vector")]),t._v(" of "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::vector")]),t._v(" of "),e("a",{attrs:{href:"#enumvalueinfo"}},[t._v("EnumValueInfo")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("EnumValueInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntries")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"enum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enum"}},[t._v("#")]),t._v(" Enum")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" "),e("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),e("p",[t._v("Mapping-enabled Enum. See "),e("a",{attrs:{href:"#enumobjectwrapper"}},[t._v("EnumObjectWrapper")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" Enum "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EnumObjectWrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" EnumInterpreterAsString"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/164.25ad724b.js b/docs/.vuepress/dist/assets/js/164.25ad724b.js deleted file mode 100644 index b8dd784a5..000000000 --- a/docs/.vuepress/dist/assets/js/164.25ad724b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{536:function(t,s,a){"use strict";a.r(s);var e=a(42),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"list-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-hpp"}},[t._v("#")]),t._v(" List.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/List.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/List.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/data/mapping/type/List.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"abstractlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstractlist"}},[t._v("#")]),t._v(" AbstractList")]),t._v(" "),a("p",[t._v("Abstract list class.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractList")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("const ClassId")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#abstractlist-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),a("td",[t._v("Class Id.")])])])]),t._v(" "),a("h3",{attrs:{id:"abstractlist-class-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstractlist-class-id"}},[t._v("#")]),t._v(" AbstractList::CLASS_ID")]),t._v(" "),a("p",[t._v("Class Id.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),a("h2",{attrs:{id:"listobjectwrapper"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listobjectwrapper"}},[t._v("#")]),t._v(" ListObjectWrapper")]),t._v(" "),a("p",[a("code",[t._v("ObjectWrapper")]),t._v(" over "),a("code",[t._v("std::list")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" T - Item "),a("code",[t._v("ObjectWrapper")]),t._v(" type. ")]),a("li",[a("strong",[t._v("@tparam")]),t._v(" C - Class. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("C")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ListObjectWrapper")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" C"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list"}},[t._v("#")]),t._v(" List")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),a("p",[t._v("Mapping-Enabled List. See - "),a("a",{attrs:{href:"#listobjectwrapper"}},[t._v("ListObjectWrapper")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" List "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ListObjectWrapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("List"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/165.0b0db87e.js b/docs/.vuepress/dist/assets/js/165.0b0db87e.js deleted file mode 100644 index d4227c555..000000000 --- a/docs/.vuepress/dist/assets/js/165.0b0db87e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{537:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"map-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-hpp"}},[t._v("#")]),t._v(" Map.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Map.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Map.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Map.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"map"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[t._v("#")]),t._v(" Map")]),t._v(" "),s("p",[t._v("Abstract Map. "),s("br"),t._v(" Ex.: UnorderedMap, Fields.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Map")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"map-iterator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator"}},[t._v("#")]),t._v(" Map::Iterator")]),t._v(" "),s("p",[t._v("Iterator.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Map")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Iterator")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-iterator-~iterator"}},[t._v("~Iterator")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-iterator-getkey"}},[t._v("getKey")])]),t._v(" "),s("td",[t._v("Get current item key.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-iterator-getvalue"}},[t._v("getValue")])]),t._v(" "),s("td",[t._v("Get current item value.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-iterator-next"}},[t._v("next")])]),t._v(" "),s("td",[t._v("Iterate to next item.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-iterator-finished"}},[t._v("finished")])]),t._v(" "),s("td",[t._v("Check if iterator finished.")])])])]),t._v(" "),s("h3",{attrs:{id:"map-iterator-iterator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator-iterator"}},[t._v("#")]),t._v(" Map::Iterator::~Iterator")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Iterator")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-iterator-getkey"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator-getkey"}},[t._v("#")]),t._v(" Map::Iterator::getKey")]),t._v(" "),s("p",[t._v("Get current item key. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-iterator-getvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator-getvalue"}},[t._v("#")]),t._v(" Map::Iterator::getValue")]),t._v(" "),s("p",[t._v("Get current item value. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-iterator-next"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator-next"}},[t._v("#")]),t._v(" Map::Iterator::next")]),t._v(" "),s("p",[t._v("Iterate to next item.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-iterator-finished"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-iterator-finished"}},[t._v("#")]),t._v(" Map::Iterator::finished")]),t._v(" "),s("p",[t._v("Check if iterator finished. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("finished")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"map-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Polymorphic Dispatcher")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Map")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PolymorphicDispatcher")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-~polymorphicdispatcher"}},[t._v("~PolymorphicDispatcher")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("type::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-createobject"}},[t._v("createObject")])]),t._v(" "),s("td",[t._v("Create Map.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-getkeytype"}},[t._v("getKeyType")])]),t._v(" "),s("td",[t._v("Get type of map keys.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-getvaluetype"}},[t._v("getValueType")])]),t._v(" "),s("td",[t._v("Get type of map values.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-getmapsize"}},[t._v("getMapSize")])]),t._v(" "),s("td",[t._v("Get map size.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-additem"}},[t._v("addItem")])]),t._v(" "),s("td",[t._v("Add item.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unique_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#map-polymorphicdispatcher-beginiteration"}},[t._v("beginIteration")])]),t._v(" "),s("td",[t._v("Begin map iteration.")])])])]),t._v(" "),s("h3",{attrs:{id:"map-polymorphicdispatcher-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-polymorphicdispatcher"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::~PolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PolymorphicDispatcher")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-createobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-createobject"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::createObject")]),t._v(" "),s("p",[t._v("Create Map. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-getkeytype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-getkeytype"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::getKeyType")]),t._v(" "),s("p",[t._v("Get type of map keys. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKeyType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-getvaluetype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-getvaluetype"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::getValueType")]),t._v(" "),s("p",[t._v("Get type of map values. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValueType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-getmapsize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-getmapsize"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::getMapSize")]),t._v(" "),s("p",[t._v("Get map size. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - map object. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - size of the map. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMapSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-additem"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-additem"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::addItem")]),t._v(" "),s("p",[t._v("Add item. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - Map. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" key ")]),s("li",[s("strong",[t._v("@param")]),t._v(" value ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addItem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"map-polymorphicdispatcher-beginiteration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-polymorphicdispatcher-beginiteration"}},[t._v("#")]),t._v(" Map::PolymorphicDispatcher::beginIteration")]),t._v(" "),s("p",[t._v("Begin map iteration. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - Map. ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unique_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Iterator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beginIteration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/166.0d81cc06.js b/docs/.vuepress/dist/assets/js/166.0d81cc06.js deleted file mode 100644 index f83035d02..000000000 --- a/docs/.vuepress/dist/assets/js/166.0d81cc06.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{538:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"object-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object-hpp"}},[t._v("#")]),t._v(" Object.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Object.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Object.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Object.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"baseobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject"}},[t._v("#")]),t._v(" BaseObject")]),t._v(" "),s("p",[t._v("Base class of all object-like mapping-enabled structures ex.: oatpp::DTO.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BaseObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"baseobject-property"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property"}},[t._v("#")]),t._v(" BaseObject::Property")]),t._v(" "),s("p",[t._v("Class to map object properties.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BaseObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Property")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const char* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Property name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Type* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-type"}},[t._v("type")])]),t._v(" "),s("td",[t._v("Property type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Info")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-info"}},[t._v("info")])]),t._v(" "),s("td",[t._v("Property additional info.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-property"}},[t._v("Property")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-set"}},[t._v("set")])]),t._v(" "),s("td",[t._v("Set value of object field mapped by this property.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-get"}},[t._v("get")])]),t._v(" "),s("td",[t._v("Get value of object field mapped by this property.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Void&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-getasref"}},[t._v("getAsRef")])]),t._v(" "),s("td",[t._v("Get reference to ObjectWrapper of the object field.")])])])]),t._v(" "),s("h3",{attrs:{id:"baseobject-property-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-name"}},[t._v("#")]),t._v(" BaseObject::Property::name")]),t._v(" "),s("p",[t._v("Property name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" name\n")])])]),s("h3",{attrs:{id:"baseobject-property-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-type"}},[t._v("#")]),t._v(" BaseObject::Property::type")]),t._v(" "),s("p",[t._v("Property type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type\n")])])]),s("h3",{attrs:{id:"baseobject-property-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info"}},[t._v("#")]),t._v(" BaseObject::Property::info")]),t._v(" "),s("p",[t._v("Property additional info.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Info info\n")])])]),s("h3",{attrs:{id:"baseobject-property-property"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-property"}},[t._v("#")]),t._v(" BaseObject::Property::Property")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" pOffset - memory offset of object field from object start address. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" pName - name of the property. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" pType - "),s("a",{attrs:{href:"#type"}},[t._v("Type")]),t._v(" of the property. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Property")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 pOffset"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-set"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-set"}},[t._v("#")]),t._v(" BaseObject::Property::set")]),t._v(" "),s("p",[t._v("Set value of object field mapped by this property. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - object address. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" value - value to set. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("set")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("BaseObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-get"}},[t._v("#")]),t._v(" BaseObject::Property::get")]),t._v(" "),s("p",[t._v("Get value of object field mapped by this property. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - object address. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - value of the field. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("BaseObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-getasref"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-getasref"}},[t._v("#")]),t._v(" BaseObject::Property::getAsRef")]),t._v(" "),s("p",[t._v("Get reference to ObjectWrapper of the object field. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" object - object address. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - reference to ObjectWrapper of the object field. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsRef")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("BaseObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"baseobject-property-info-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info-2"}},[t._v("#")]),t._v(" BaseObject::Property::Info")]),t._v(" "),s("p",[t._v("Editional Info about Property.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BaseObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Property")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-info-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-info-pattern"}},[t._v("pattern")])]),t._v(" "),s("td",[t._v("Pattern.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-info-required"}},[t._v("required")])]),t._v(" "),s("td",[t._v("Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("TypeSelector*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-info-typeselector"}},[t._v("typeSelector")])]),t._v(" "),s("td",[t._v("Type selector. "),s("a",{attrs:{href:"#property-typeselector"}},[t._v("Property::TypeSelector")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"baseobject-property-info-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info-description"}},[t._v("#")]),t._v(" BaseObject::Property::Info::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-info-pattern"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info-pattern"}},[t._v("#")]),t._v(" BaseObject::Property::Info::pattern")]),t._v(" "),s("p",[t._v("Pattern.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string pattern "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-info-required"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info-required"}},[t._v("#")]),t._v(" BaseObject::Property::Info::required")]),t._v(" "),s("p",[t._v("Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" required "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-info-typeselector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-info-typeselector"}},[t._v("#")]),t._v(" BaseObject::Property::Info::typeSelector")]),t._v(" "),s("p",[t._v("Type selector. "),s("a",{attrs:{href:"#property-typeselector"}},[t._v("Property::TypeSelector")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("TypeSelector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" typeSelector "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),t._v("\n")])])]),s("h2",{attrs:{id:"baseobject-property-typeselector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-typeselector"}},[t._v("#")]),t._v(" BaseObject::Property::TypeSelector")]),t._v(" "),s("p",[t._v("Property Type Selector.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BaseObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Property")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TypeSelector")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-typeselector-~typeselector"}},[t._v("~TypeSelector")])]),t._v(" "),s("td",[t._v("Default destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const type::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-property-typeselector-selecttype"}},[t._v("selectType")])]),t._v(" "),s("td",[t._v("Select property type.")])])])]),t._v(" "),s("h3",{attrs:{id:"baseobject-property-typeselector-typeselector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-typeselector-typeselector"}},[t._v("#")]),t._v(" BaseObject::Property::TypeSelector::~TypeSelector")]),t._v(" "),s("p",[t._v("Default destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("TypeSelector")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-property-typeselector-selecttype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-property-typeselector-selecttype"}},[t._v("#")]),t._v(" BaseObject::Property::TypeSelector::selectType")]),t._v(" "),s("p",[t._v("Select property type. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" self - pointer to "),s("code",[t._v("this")]),t._v(" object. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("selectType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("BaseObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" self"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"baseobject-properties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-properties"}},[t._v("#")]),t._v(" BaseObject::Properties")]),t._v(" "),s("p",[t._v("Object type properties table.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BaseObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Properties")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Property*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-properties-pushback"}},[t._v("pushBack")])]),t._v(" "),s("td",[t._v("Add property to the end of the list.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-properties-pushfrontall"}},[t._v("pushFrontAll")])]),t._v(" "),s("td",[t._v("Add all properties to the beginning of the list.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::unordered_map&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-properties-getmap"}},[t._v("getMap")])]),t._v(" "),s("td",[t._v("Get properties as unordered map for random access.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::list&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#baseobject-properties-getlist"}},[t._v("getList")])]),t._v(" "),s("td",[t._v("Get properties in ordered way.")])])])]),t._v(" "),s("h3",{attrs:{id:"baseobject-properties-pushback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-properties-pushback"}},[t._v("#")]),t._v(" BaseObject::Properties::pushBack")]),t._v(" "),s("p",[t._v("Add property to the end of the list. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" property ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Property"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushBack")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Property"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" property"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-properties-pushfrontall"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-properties-pushfrontall"}},[t._v("#")]),t._v(" BaseObject::Properties::pushFrontAll")]),t._v(" "),s("p",[t._v("Add all properties to the beginning of the list. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" properties ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pushFrontAll")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Properties"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-properties-getmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-properties-getmap"}},[t._v("#")]),t._v(" BaseObject::Properties::getMap")]),t._v(" "),s("p",[t._v("Get properties as unordered map for random access. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" reference to std::unordered_map of std::string to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/#baseobject-property"}},[t._v("oatpp::data::mapping::type::BaseObject::Property")]),t._v("*. ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Property"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMap")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"baseobject-properties-getlist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#baseobject-properties-getlist"}},[t._v("#")]),t._v(" BaseObject::Properties::getList")]),t._v(" "),s("p",[t._v("Get properties in ordered way. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" std::list of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Object/#baseobject-property"}},[t._v("oatpp::data::mapping::type::BaseObject::Property")]),t._v("*. ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Property"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getList")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"abstractobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractobject"}},[t._v("#")]),t._v(" AbstractObject")]),t._v(" "),s("p",[t._v("AbstractObject class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractobject-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("Class id.")])])])]),t._v(" "),s("h3",{attrs:{id:"abstractobject-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractobject-class-id"}},[t._v("#")]),t._v(" AbstractObject::CLASS_ID")]),t._v(" "),s("p",[t._v("Class id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object"}},[t._v("#")]),t._v(" Object")]),t._v(" "),s("p",[t._v("Template for Object class of type T. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - object type. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Object")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AbstractObject "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#object-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get type describing this class.")])])])]),t._v(" "),s("h3",{attrs:{id:"object-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object-gettype"}},[t._v("#")]),t._v(" Object::getType")]),t._v(" "),s("p",[t._v("Get type describing this class. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")])],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"dtowrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dtowrapper"}},[t._v("#")]),t._v(" DTOWrapper")]),t._v(" "),s("p",[t._v("ObjectWrapper for "),s("a",{attrs:{href:"#dto"}},[t._v("DTO")]),t._v(". AKA "),s("code",[t._v("oatpp::Object")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" ObjT - class extended from "),s("a",{attrs:{href:"#dto"}},[t._v("DTO")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjT")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DTOWrapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjT"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"dto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dto"}},[t._v("#")]),t._v(" DTO")]),t._v(" "),s("p",[t._v("Base class for all DTO objects. For more info about Data Transfer Object (DTO) see "),s("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DTO")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" BaseObject "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/167.b22b4acd.js b/docs/.vuepress/dist/assets/js/167.b22b4acd.js deleted file mode 100644 index 9ee1ee7d8..000000000 --- a/docs/.vuepress/dist/assets/js/167.b22b4acd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{539:function(a,t,s){"use strict";s.r(t);var e=s(42),r=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"pairlist-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pairlist-hpp"}},[a._v("#")]),a._v(" PairList.hpp"),s("seo")],1),a._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/PairList.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),s("OutboundLink")],1),s("br"),a._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/PairList.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),s("OutboundLink")],1)]),a._v(" "),s("p",[s("code",[a._v("API: latest")]),s("br"),a._v(" "),s("code",[a._v("module: oatpp")]),s("br"),a._v(" "),s("code",[a._v('#include "oatpp/core/data/mapping/type/PairList.hpp"')])]),a._v(" "),s("h2",{attrs:{id:"abstractpairlist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractpairlist"}},[a._v("#")]),a._v(" AbstractPairList")]),a._v(" "),s("p",[a._v("Abstract PairList class.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AbstractPairList")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("const ClassId")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#abstractpairlist-class-id"}},[a._v("CLASS_ID")])]),a._v(" "),s("td",[a._v("Class id.")])])])]),a._v(" "),s("h3",{attrs:{id:"abstractpairlist-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractpairlist-class-id"}},[a._v("#")]),a._v(" AbstractPairList::CLASS_ID")]),a._v(" "),s("p",[a._v("Class id.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"pairlistobjectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pairlistobjectwrapper"}},[a._v("#")]),a._v(" PairListObjectWrapper")]),a._v(" "),s("p",[s("code",[a._v("ObjectWrapper")]),a._v(" over "),s("code",[a._v("std::list>")]),a._v(" "),s("ul",[s("li",[s("strong",[a._v("@tparam")]),a._v(" Key - Key "),s("code",[a._v("ObjectWrapper")]),a._v(" type. ")]),s("li",[s("strong",[a._v("@tparam")]),a._v(" Value - Value "),s("code",[a._v("ObjectWrapper")]),a._v(" type. ")]),s("li",[s("strong",[a._v("@tparam")]),a._v(" C - Class. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("PairListObjectWrapper")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("pair"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"pairlist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pairlist"}},[a._v("#")]),a._v(" PairList")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp::data::mapping::type")])]),a._v(" "),s("p",[a._v("Mapping-Enables PairList. See "),s("a",{attrs:{href:"#pairlistobjectwrapper"}},[a._v("PairListObjectWrapper")]),a._v(".")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" PairList "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" PairListObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("PairList"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">>")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/168.6a1492ec.js b/docs/.vuepress/dist/assets/js/168.6a1492ec.js deleted file mode 100644 index a14ca64f5..000000000 --- a/docs/.vuepress/dist/assets/js/168.6a1492ec.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{540:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"primitive-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#primitive-hpp"}},[t._v("#")]),t._v(" Primitive.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Primitive.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Primitive.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Primitive.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"string"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string"}},[t._v("#")]),t._v(" String")]),t._v(" "),s("p",[t._v("Mapping-enables String is type::ObjectWrapper over "),s("code",[t._v("std::string")]),t._v(";")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-loadfromfile"}},[t._v("loadFromFile")])]),t._v(" "),s("td",[t._v("Load data from file and store in "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-savetofile"}},[t._v("saveToFile")])]),t._v(" "),s("td",[t._v("Save content of the buffer to file.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-equalsci-ascii"}},[t._v("equalsCI_ASCII")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Case insensitive compare (ASCII only). ")]),s("li",[t._v("Case insensitive compare (ASCII only). ")]),s("li",[t._v("Case insensitive compare (ASCII only). ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-getvalue"}},[t._v("getValue")])]),t._v(" "),s("td",[t._v("Get underlying value.")])])])]),t._v(" "),s("h3",{attrs:{id:"string-loadfromfile"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-loadfromfile"}},[t._v("#")]),t._v(" String::loadFromFile")]),t._v(" "),s("p",[t._v("Load data from file and store in "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" filename - name of the file. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("loadFromFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" filename"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"string-savetofile"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-savetofile"}},[t._v("#")]),t._v(" String::saveToFile")]),t._v(" "),s("p",[t._v("Save content of the buffer to file. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" filename - name of the file. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("saveToFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" filename"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"string-equalsci-ascii"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-equalsci-ascii"}},[t._v("#")]),t._v(" String::equalsCI_ASCII")]),t._v(" "),s("ol",[s("li",[t._v("Case insensitive compare (ASCII only). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equalsCI_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Case insensitive compare (ASCII only). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equalsCI_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Case insensitive compare (ASCII only). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equalsCI_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"string-getvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-getvalue"}},[t._v("#")]),t._v(" String::getValue")]),t._v(" "),s("p",[t._v("Get underlying value. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" defaultValue - value to return in case stored value is "),s("code",[t._v("nullptr")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - value or "),s("code",[t._v("defaultValue")]),t._v(" if stored value is "),s("code",[t._v("nullptr")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" defaultValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#primitive"}},[t._v("#")]),t._v(" Primitive")]),t._v(" "),s("p",[t._v("Template for primitive mapping-enabled types. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" TValueType - type of the value ex.: v_int64. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" Clazz - Class holding static class information. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" TValueType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Clazz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Primitive")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TValueType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Clazz"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"boolean"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#boolean"}},[t._v("#")]),t._v(" Boolean")]),t._v(" "),s("p",[t._v("ObjectWrapper for Boolean.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Boolean")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"int8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int8"}},[t._v("#")]),t._v(" Int8")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Int8 is an ObjectWrapper over "),s("code",[t._v("v_int8")]),t._v(" and __class::Int8.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int8"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int8"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Int8\n")])])]),s("h2",{attrs:{id:"uint8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint8"}},[t._v("#")]),t._v(" UInt8")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("UInt8 is an ObjectWrapper over "),s("code",[t._v("v_uint8")]),t._v(" and __class::UInt8.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_uint8"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt8"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" UInt8\n")])])]),s("h2",{attrs:{id:"int16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int16"}},[t._v("#")]),t._v(" Int16")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Int16 is an ObjectWrapper over "),s("code",[t._v("v_int16")]),t._v(" and __class::Int16.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int16"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int16"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Int16\n")])])]),s("h2",{attrs:{id:"uint16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint16"}},[t._v("#")]),t._v(" UInt16")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("UInt16 is an ObjectWrapper over "),s("code",[t._v("v_uint16")]),t._v(" and __class::UInt16.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_uint16"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt16"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" UInt16\n")])])]),s("h2",{attrs:{id:"int32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int32"}},[t._v("#")]),t._v(" Int32")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Int32 is an ObjectWrapper over "),s("code",[t._v("v_int32")]),t._v(" and __class::Int32.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Int32\n")])])]),s("h2",{attrs:{id:"uint32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint32"}},[t._v("#")]),t._v(" UInt32")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("UInt32 is an ObjectWrapper over "),s("code",[t._v("v_uint32")]),t._v(" and __class::UInt32.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_uint32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" UInt32\n")])])]),s("h2",{attrs:{id:"int64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#int64"}},[t._v("#")]),t._v(" Int64")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Int64 is an ObjectWrapper over "),s("code",[t._v("v_int64")]),t._v(" and __class::Int64.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int64"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Int64\n")])])]),s("h2",{attrs:{id:"uint64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uint64"}},[t._v("#")]),t._v(" UInt64")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("UInt64 is an ObjectWrapper over "),s("code",[t._v("v_uint64")]),t._v(" and __class::UInt64.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_uint64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt64"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" UInt64\n")])])]),s("h2",{attrs:{id:"float32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#float32"}},[t._v("#")]),t._v(" Float32")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Float32 is an ObjectWrapper over "),s("code",[t._v("v_float32")]),t._v(" and __class::Float32.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_float32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Float32\n")])])]),s("h2",{attrs:{id:"float64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#float64"}},[t._v("#")]),t._v(" Float64")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Float64 is an ObjectWrapper over "),s("code",[t._v("v_float64")]),t._v(" and __class::Float64.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_float64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float64"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Float64\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/169.cc795164.js b/docs/.vuepress/dist/assets/js/169.cc795164.js deleted file mode 100644 index c259f99d6..000000000 --- a/docs/.vuepress/dist/assets/js/169.cc795164.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{541:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"type-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-hpp"}},[t._v("#")]),t._v(" Type.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Type.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Type.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Type.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"classid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid"}},[t._v("#")]),t._v(" ClassId")]),t._v(" "),s("p",[t._v("Structure representing "),s("code",[t._v("ID")]),t._v(" of the type class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ClassId")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const char* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#classid-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Name of the type class.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#classid-id"}},[t._v("id")])]),t._v(" "),s("td",[t._v("Integer ID of the type class. "),s("br"),t._v(" "),s("em",[t._v("Note: class type IDs are integer values incremented continuously from [0 to "),s("code",[t._v("getClassCount()")]),t._v("]")])])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("int")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#classid-getclasscount"}},[t._v("getClassCount")])]),t._v(" "),s("td",[t._v("Get count of all type classes created.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::vector")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#classid-getregisteredclassnames"}},[t._v("getRegisteredClassNames")])]),t._v(" "),s("td",[t._v("Get registered class names.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#classid-classid"}},[t._v("ClassId")])]),t._v(" "),s("td",[t._v("Constructor.")])])])]),t._v(" "),s("h3",{attrs:{id:"classid-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid-name"}},[t._v("#")]),t._v(" ClassId::name")]),t._v(" "),s("p",[t._v("Name of the type class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" name\n")])])]),s("h3",{attrs:{id:"classid-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid-id"}},[t._v("#")]),t._v(" ClassId::id")]),t._v(" "),s("p",[t._v("Integer ID of the type class. "),s("br"),t._v(" "),s("em",[t._v("Note: class type IDs are integer values incremented continuously from [0 to "),s("code",[t._v("getClassCount()")]),t._v("]")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 id\n")])])]),s("h3",{attrs:{id:"classid-getclasscount"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid-getclasscount"}},[t._v("#")]),t._v(" ClassId::getClassCount")]),t._v(" "),s("p",[t._v("Get count of all type classes created. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getClassCount")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"classid-getregisteredclassnames"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid-getregisteredclassnames"}},[t._v("#")]),t._v(" ClassId::getRegisteredClassNames")]),t._v(" "),s("p",[t._v("Get registered class names. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRegisteredClassNames")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"classid-classid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#classid-classid"}},[t._v("#")]),t._v(" ClassId::ClassId")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" pName ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ClassId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"void"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#void"}},[t._v("#")]),t._v(" Void")]),t._v(" "),s("p",[t._v("Void Object Class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#void-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("Class id.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#void-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get class type information.")])])])]),t._v(" "),s("h3",{attrs:{id:"void-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#void-class-id"}},[t._v("#")]),t._v(" Void::CLASS_ID")]),t._v(" "),s("p",[t._v("Class id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),s("h3",{attrs:{id:"void-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#void-gettype"}},[t._v("#")]),t._v(" Void::getType")]),t._v(" "),s("p",[t._v("Get class type information. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#type"}},[t._v("Type")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"objectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#objectwrapper"}},[t._v("#")]),t._v(" ObjectWrapper")]),t._v(" "),s("p",[t._v("ObjectWrapper holds std::shared_ptr to object, object static type, plus object dynamic type information. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - Object Type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" Clazz - Static type info. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Clazz")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectWrapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("T")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#objectwrapper-objecttype"}},[t._v("ObjectType")])]),t._v(" "),s("td",[t._v("Static object type")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Clazz")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#objectwrapper-class"}},[t._v("Class")])]),t._v(" "),s("td",[t._v("Static object class information.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#objectwrapper-getvaluetype"}},[t._v("getValueType")])]),t._v(" "),s("td",[t._v("Get value type")])])])]),t._v(" "),s("h3",{attrs:{id:"objectwrapper-objecttype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#objectwrapper-objecttype"}},[t._v("#")]),t._v(" ObjectWrapper::ObjectType")]),t._v(" "),s("p",[t._v("Static object type")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" T ObjectType\n")])])]),s("h3",{attrs:{id:"objectwrapper-class"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#objectwrapper-class"}},[t._v("#")]),t._v(" ObjectWrapper::Class")]),t._v(" "),s("p",[t._v("Static object class information.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" Clazz Class\n")])])]),s("h3",{attrs:{id:"objectwrapper-getvaluetype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#objectwrapper-getvaluetype"}},[t._v("#")]),t._v(" ObjectWrapper::getValueType")]),t._v(" "),s("p",[t._v("Get value type "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValueType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type"}},[t._v("#")]),t._v(" Type")]),t._v(" "),s("p",[t._v("Object type data.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-classid"}},[t._v("classId")])]),t._v(" "),s("td",[t._v("type class id.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-namequalifier"}},[t._v("nameQualifier")])]),t._v(" "),s("td",[t._v("Type name qualifier.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::vector")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-params"}},[t._v("params")])]),t._v(" "),s("td",[t._v("List of type parameters - for templated types.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const void* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-polymorphicdispatcher"}},[t._v("polymorphicDispatcher")])]),t._v(" "),s("td",[t._v("PolymorphicDispatcher - is an object to forward polymorphic calls to a correct object of type "),s("code",[t._v("Type")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const InterpretationMap")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-interpretationmap"}},[t._v("interpretationMap")])]),t._v(" "),s("td",[t._v("Map of type Interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Type* const")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-parent"}},[t._v("parent")])]),t._v(" "),s("td",[t._v("Parent type. "),s("br"),t._v(" Ex.: DTO super-class type. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" setting "),s("code",[t._v("parent")]),t._v(" type also means that child object can be statically casted to parent type without any violations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-iscollection"}},[t._v("isCollection")])]),t._v(" "),s("td",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Collection/#collection-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-ismap"}},[t._v("isMap")])]),t._v(" "),s("td",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Map/#map-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-type"}},[t._v("Type")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const AbstractInterpretation*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-findinterpretation"}},[t._v("findInterpretation")])]),t._v(" "),s("td",[t._v("Find type interpretation.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-extends"}},[t._v("extends")])]),t._v(" "),s("td",[t._v("Check if type extends other type.")])])])]),t._v(" "),s("h3",{attrs:{id:"type-classid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-classid"}},[t._v("#")]),t._v(" Type::classId")]),t._v(" "),s("p",[t._v("type class id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId classId\n")])])]),s("h3",{attrs:{id:"type-namequalifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-namequalifier"}},[t._v("#")]),t._v(" Type::nameQualifier")]),t._v(" "),s("p",[t._v("Type name qualifier.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" nameQualifier\n")])])]),s("h3",{attrs:{id:"type-params"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-params"}},[t._v("#")]),t._v(" Type::params")]),t._v(" "),s("p",[t._v("List of type parameters - for templated types.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" params\n")])])]),s("h3",{attrs:{id:"type-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-polymorphicdispatcher"}},[t._v("#")]),t._v(" Type::polymorphicDispatcher")]),t._v(" "),s("p",[t._v("PolymorphicDispatcher - is an object to forward polymorphic calls to a correct object of type "),s("code",[t._v("Type")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" polymorphicDispatcher\n")])])]),s("h3",{attrs:{id:"type-interpretationmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-interpretationmap"}},[t._v("#")]),t._v(" Type::interpretationMap")]),t._v(" "),s("p",[t._v("Map of type Interpretations.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" InterpretationMap interpretationMap\n")])])]),s("h3",{attrs:{id:"type-parent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-parent"}},[t._v("#")]),t._v(" Type::parent")]),t._v(" "),s("p",[t._v("Parent type. "),s("br"),t._v(" Ex.: DTO super-class type. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" setting "),s("code",[t._v("parent")]),t._v(" type also means that child object can be statically casted to parent type without any violations.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" parent\n")])])]),s("h3",{attrs:{id:"type-iscollection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-iscollection"}},[t._v("#")]),t._v(" Type::isCollection")]),t._v(" "),s("p",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Collection/#collection-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isCollection\n")])])]),s("h3",{attrs:{id:"type-ismap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-ismap"}},[t._v("#")]),t._v(" Type::isMap")]),t._v(" "),s("p",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Map/#map-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isMap\n")])])]),s("h3",{attrs:{id:"type-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-type"}},[t._v("#")]),t._v(" Type::Type")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" pClassId - type class id. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" typeInfo - type creation info. "),s("a",{attrs:{href:"#type-info"}},[t._v("Type::Info")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pClassId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" typeInfo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-findinterpretation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-findinterpretation"}},[t._v("#")]),t._v(" Type::findInterpretation")]),t._v(" "),s("p",[t._v("Find type interpretation. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" names - list of possible interpretation names. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#type-abstractinterpretation"}},[t._v("Type::AbstractInterpretation")]),t._v(". Returns the first interpretation found from the list or NULL if no interpretations found. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" AbstractInterpretation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findInterpretation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" names"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-extends"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-extends"}},[t._v("#")]),t._v(" Type::extends")]),t._v(" "),s("p",[t._v("Check if type extends other type. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("extends")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"type-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info"}},[t._v("#")]),t._v(" Type::Info")]),t._v(" "),s("p",[t._v("Type info.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-4"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-namequalifier"}},[t._v("nameQualifier")])]),t._v(" "),s("td",[t._v("Type name qualifier.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::vector")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-params"}},[t._v("params")])]),t._v(" "),s("td",[t._v("List of type parameters - for templated types.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-polymorphicdispatcher"}},[t._v("polymorphicDispatcher")])]),t._v(" "),s("td",[t._v("PolymorphicDispatcher is responsible for forwarding polymorphic calls to a correct object of type "),s("code",[t._v("Type")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("InterpretationMap")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-interpretationmap"}},[t._v("interpretationMap")])]),t._v(" "),s("td",[t._v("Map of type Interpretations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-parent"}},[t._v("parent")])]),t._v(" "),s("td",[t._v("Parent type. "),s("br"),t._v(" Ex.: DTO super-class type. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" setting "),s("code",[t._v("parent")]),t._v(" type also means that child object can be statically casted to parent type without any violations.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-iscollection"}},[t._v("isCollection")])]),t._v(" "),s("td",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Collection/#collection-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-ismap"}},[t._v("isMap")])]),t._v(" "),s("td",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Map/#map-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-info-info"}},[t._v("Info")])]),t._v(" "),s("td",[t._v("Default constructor.")])])])]),t._v(" "),s("h3",{attrs:{id:"type-info-namequalifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-namequalifier"}},[t._v("#")]),t._v(" Type::Info::nameQualifier")]),t._v(" "),s("p",[t._v("Type name qualifier.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" nameQualifier "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-info-params"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-params"}},[t._v("#")]),t._v(" Type::Info::params")]),t._v(" "),s("p",[t._v("List of type parameters - for templated types.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" params\n")])])]),s("h3",{attrs:{id:"type-info-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-polymorphicdispatcher"}},[t._v("#")]),t._v(" Type::Info::polymorphicDispatcher")]),t._v(" "),s("p",[t._v("PolymorphicDispatcher is responsible for forwarding polymorphic calls to a correct object of type "),s("code",[t._v("Type")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" polymorphicDispatcher "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-info-interpretationmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-interpretationmap"}},[t._v("#")]),t._v(" Type::Info::interpretationMap")]),t._v(" "),s("p",[t._v("Map of type Interpretations.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("InterpretationMap interpretationMap\n")])])]),s("h3",{attrs:{id:"type-info-parent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-parent"}},[t._v("#")]),t._v(" Type::Info::parent")]),t._v(" "),s("p",[t._v("Parent type. "),s("br"),t._v(" Ex.: DTO super-class type. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" setting "),s("code",[t._v("parent")]),t._v(" type also means that child object can be statically casted to parent type without any violations.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" parent "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-info-iscollection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-iscollection"}},[t._v("#")]),t._v(" Type::Info::isCollection")]),t._v(" "),s("p",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Collection/#collection-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Collection::PolymorphicDispatcher")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isCollection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-info-ismap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-ismap"}},[t._v("#")]),t._v(" Type::Info::isMap")]),t._v(" "),s("p",[t._v("polymorphicDispatcher extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Map/#map-polymorphicdispatcher"}},[t._v("oatpp::data::mapping::type::__class::Map::PolymorphicDispatcher")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isMap "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-info-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-info-info"}},[t._v("#")]),t._v(" Type::Info::Info")]),t._v(" "),s("p",[t._v("Default constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"type-abstractinterpretation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-abstractinterpretation"}},[t._v("#")]),t._v(" Type::AbstractInterpretation")]),t._v(" "),s("p",[t._v("Type Abstract Interpretation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractInterpretation")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-6"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-abstractinterpretation-tointerpretation"}},[t._v("toInterpretation")])]),t._v(" "),s("td",[t._v("Convert the object to its interpretation.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-abstractinterpretation-frominterpretation"}},[t._v("fromInterpretation")])]),t._v(" "),s("td",[t._v("Convert interpretation back to the original object.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#type-abstractinterpretation-getinterpretationtype"}},[t._v("getInterpretationType")])]),t._v(" "),s("td",[t._v("Type of the interpretation.")])])])]),t._v(" "),s("h3",{attrs:{id:"type-abstractinterpretation-tointerpretation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-abstractinterpretation-tointerpretation"}},[t._v("#")]),t._v(" Type::AbstractInterpretation::toInterpretation")]),t._v(" "),s("p",[t._v("Convert the object to its interpretation. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" originalValue ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toInterpretation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" originalValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-abstractinterpretation-frominterpretation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-abstractinterpretation-frominterpretation"}},[t._v("#")]),t._v(" Type::AbstractInterpretation::fromInterpretation")]),t._v(" "),s("p",[t._v("Convert interpretation back to the original object. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" interValue ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromInterpretation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"type-abstractinterpretation-getinterpretationtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#type-abstractinterpretation-getinterpretationtype"}},[t._v("#")]),t._v(" Type::AbstractInterpretation::getInterpretationType")]),t._v(" "),s("p",[t._v("Type of the interpretation. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInterpretationType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/17.d8b3c38c.js b/docs/.vuepress/dist/assets/js/17.d8b3c38c.js deleted file mode 100644 index d96478461..000000000 --- a/docs/.vuepress/dist/assets/js/17.d8b3c38c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{390:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bodydecoder-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-hpp"}},[t._v("#")]),t._v(" BodyDecoder.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/BodyDecoder.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/BodyDecoder.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-curl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-curl/io/BodyDecoder.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder"}},[t._v("#")]),t._v(" BodyDecoder")]),t._v(" "),e("p",[t._v("Custom BodyDecoder for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/RequestExecutor/#requestexecutor"}},[t._v("oatpp::curl::RequestExecutor")]),t._v(". Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BodyDecoder")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::data::share::LazyStringMultimap")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-headers"}},[t._v("Headers")])]),t._v(" "),e("td",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[t._v("oatpp::data::share::LazyStringMultimap")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decode"}},[t._v("decode")])]),t._v(" "),e("td",[t._v("Just transfer everything we have in bodyStream to toStream as-is")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodeasync"}},[t._v("decodeAsync")])]),t._v(" "),e("td",[t._v("Just transfer everything we have in bodyStream to toStream as-is")])])])]),t._v(" "),e("h3",{attrs:{id:"bodydecoder-headers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-headers"}},[t._v("#")]),t._v(" BodyDecoder::Headers")]),t._v(" "),e("p",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[t._v("oatpp::data::share::LazyStringMultimap")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMultimap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Headers\n")])])]),e("h3",{attrs:{id:"bodydecoder-decode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decode"}},[t._v("#")]),t._v(" BodyDecoder::decode")]),t._v(" "),e("p",[t._v("Just transfer everything we have in bodyStream to toStream as-is Curl already did all decoding. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodeasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodeasync"}},[t._v("#")]),t._v(" BodyDecoder::decodeAsync")]),t._v(" "),e("p",[t._v("Just transfer everything we have in bodyStream to toStream as-is Curl already did all decoding. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/170.ec298b0f.js b/docs/.vuepress/dist/assets/js/170.ec298b0f.js deleted file mode 100644 index 5ccefb5a6..000000000 --- a/docs/.vuepress/dist/assets/js/170.ec298b0f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{542:function(a,t,s){"use strict";s.r(t);var e=s(42),r=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"unorderedmap-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedmap-hpp"}},[a._v("#")]),a._v(" UnorderedMap.hpp"),s("seo")],1),a._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/UnorderedMap.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),s("OutboundLink")],1),s("br"),a._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/UnorderedMap.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),s("OutboundLink")],1)]),a._v(" "),s("p",[s("code",[a._v("API: latest")]),s("br"),a._v(" "),s("code",[a._v("module: oatpp")]),s("br"),a._v(" "),s("code",[a._v('#include "oatpp/core/data/mapping/type/UnorderedMap.hpp"')])]),a._v(" "),s("h2",{attrs:{id:"abstractunorderedmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedmap"}},[a._v("#")]),a._v(" AbstractUnorderedMap")]),a._v(" "),s("p",[a._v("Abstract Unordered Map class.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AbstractUnorderedMap")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("const ClassId")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#abstractunorderedmap-class-id"}},[a._v("CLASS_ID")])]),a._v(" "),s("td",[a._v("Class Id.")])])])]),a._v(" "),s("h3",{attrs:{id:"abstractunorderedmap-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedmap-class-id"}},[a._v("#")]),a._v(" AbstractUnorderedMap::CLASS_ID")]),a._v(" "),s("p",[a._v("Class Id.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"unorderedmapobjectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedmapobjectwrapper"}},[a._v("#")]),a._v(" UnorderedMapObjectWrapper")]),a._v(" "),s("p",[s("code",[a._v("ObjectWrapper")]),a._v(" for "),s("code",[a._v("std::unordered_map")]),a._v(" "),s("ul",[s("li",[s("strong",[a._v("@tparam")]),a._v(" Key - Key "),s("code",[a._v("ObjectWrapper")]),a._v(" type. ")]),s("li",[s("strong",[a._v("@tparam")]),a._v(" Value - Value "),s("code",[a._v("ObjectWrapper")]),a._v(" type. ")]),s("li",[s("strong",[a._v("@tparam")]),a._v(" C - Class. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("UnorderedMapObjectWrapper")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"unorderedmap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedmap"}},[a._v("#")]),a._v(" UnorderedMap")]),a._v(" "),s("p",[s("strong",[a._v("Namespace:")]),a._v(" "),s("code",[a._v("oatpp::data::mapping::type")])]),a._v(" "),s("p",[a._v("Mapping-Enables UnorderedMap. See "),s("a",{attrs:{href:"#unorderedmapobjectwrapper"}},[a._v("UnorderedMapObjectWrapper")]),a._v(".")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Value")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("using")]),a._v(" UnorderedMap "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" UnorderedMapObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("UnorderedMap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" Value"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">>")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/171.278103b8.js b/docs/.vuepress/dist/assets/js/171.278103b8.js deleted file mode 100644 index 0a46b10dc..000000000 --- a/docs/.vuepress/dist/assets/js/171.278103b8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{543:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"unorderedset-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedset-hpp"}},[t._v("#")]),t._v(" UnorderedSet.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/UnorderedSet.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/UnorderedSet.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/UnorderedSet.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"abstractunorderedset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedset"}},[t._v("#")]),t._v(" AbstractUnorderedSet")]),t._v(" "),s("p",[t._v("Abstract Unordered Set class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractUnorderedSet")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractunorderedset-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("Class Id.")])])])]),t._v(" "),s("h3",{attrs:{id:"abstractunorderedset-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractunorderedset-class-id"}},[t._v("#")]),t._v(" AbstractUnorderedSet::CLASS_ID")]),t._v(" "),s("p",[t._v("Class Id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"unorderedsetobjectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedsetobjectwrapper"}},[t._v("#")]),t._v(" UnorderedSetObjectWrapper")]),t._v(" "),s("p",[s("code",[t._v("ObjectWrapper")]),t._v(" over "),s("code",[t._v("std::unordered_set")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - Key "),s("code",[t._v("ObjectWrapper")]),t._v(" type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" C - Class. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("UnorderedSetObjectWrapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_set"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"unorderedset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#unorderedset"}},[t._v("#")]),t._v(" UnorderedSet")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Mapping-Enabled UnorderedSet. See "),s("a",{attrs:{href:"#unorderedsetobjectwrapper"}},[t._v("UnorderedSetObjectWrapper")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" UnorderedSet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" UnorderedSetObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UnorderedSet"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/172.fa73b902.js b/docs/.vuepress/dist/assets/js/172.fa73b902.js deleted file mode 100644 index 1f0ff7ad4..000000000 --- a/docs/.vuepress/dist/assets/js/172.fa73b902.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{544:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"vector-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vector-hpp"}},[t._v("#")]),t._v(" Vector.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/mapping/type/Vector.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/mapping/type/Vector.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/mapping/type/Vector.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"abstractvector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractvector"}},[t._v("#")]),t._v(" AbstractVector")]),t._v(" "),s("p",[t._v("Abstract Vector Class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractVector")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#abstractvector-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("Class Id.")])])])]),t._v(" "),s("h3",{attrs:{id:"abstractvector-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractvector-class-id"}},[t._v("#")]),t._v(" AbstractVector::CLASS_ID")]),t._v(" "),s("p",[t._v("Class Id.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ClassId CLASS_ID\n")])])]),s("h2",{attrs:{id:"vectorobjectwrapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vectorobjectwrapper"}},[t._v("#")]),t._v(" VectorObjectWrapper")]),t._v(" "),s("p",[s("code",[t._v("ObjectWrapper")]),t._v(" over "),s("code",[t._v("std::vector")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - Item "),s("code",[t._v("ObjectWrapper")]),t._v(" type. ")]),s("li",[s("strong",[t._v("@tparam")]),t._v(" C - Class. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("C")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("VectorObjectWrapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" C"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"vector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vector"}},[t._v("#")]),t._v(" Vector")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::mapping::type")])]),t._v(" "),s("p",[t._v("Mapping-enabled Vector. See "),s("a",{attrs:{href:"#vectorobjectwrapper"}},[t._v("VectorObjectWrapper")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" Vector "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" VectorObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/173.6c840575.js b/docs/.vuepress/dist/assets/js/173.6c840575.js deleted file mode 100644 index 903f6c6a4..000000000 --- a/docs/.vuepress/dist/assets/js/173.6c840575.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{545:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"file-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-hpp"}},[t._v("#")]),t._v(" File.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/resource/File.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/resource/File.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/resource/File.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file"}},[t._v("#")]),t._v(" File")]),t._v(" "),e("p",[t._v("File. extends - oatpp::data::Resource.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" resource "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("File")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Resource "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-file"}},[t._v("File")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-openoutputstream"}},[t._v("openOutputStream")])]),t._v(" "),e("td",[t._v("Open output stream to a file. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-openinputstream"}},[t._v("openInputStream")])]),t._v(" "),e("td",[t._v("Open input stream to a temporary file. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-getinmemorydata"}},[t._v("getInMemoryData")])]),t._v(" "),e("td",[t._v("Not applicable.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),e("td",[t._v("Not applicable.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#file-getlocation"}},[t._v("getLocation")])]),t._v(" "),e("td",[t._v("Get location where temporary data is stored.")])])])]),t._v(" "),e("h3",{attrs:{id:"file-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-file"}},[t._v("#")]),t._v(" File::File")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("File")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" fullFilename ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("File")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" fullFilename"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" directory ")]),e("li",[e("strong",[t._v("@param")]),t._v(" filename ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("File")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" directory"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"file-openoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-openoutputstream"}},[t._v("#")]),t._v(" File::openOutputStream")]),t._v(" "),e("p",[t._v("Open output stream to a file. "),e("br"),t._v(" "),e("em",[t._v("Note: stream also captures file-handle. The file object won't be deleted until the stream is deleted.")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("openOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"file-openinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-openinputstream"}},[t._v("#")]),t._v(" File::openInputStream")]),t._v(" "),e("p",[t._v("Open input stream to a temporary file. "),e("br"),t._v(" "),e("em",[t._v("Note: stream also captures file-handle. The file won't be deleted until the stream is deleted.")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("openInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"file-getinmemorydata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-getinmemorydata"}},[t._v("#")]),t._v(" File::getInMemoryData")]),t._v(" "),e("p",[t._v("Not applicable. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - always returns "),e("code",[t._v("nullptr")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"file-getknownsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-getknownsize"}},[t._v("#")]),t._v(" File::getKnownSize")]),t._v(" "),e("p",[t._v("Not applicable. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - always returns "),e("code",[t._v("-1")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"file-getlocation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-getlocation"}},[t._v("#")]),t._v(" File::getLocation")]),t._v(" "),e("p",[t._v("Get location where temporary data is stored. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("[oatpp::String](/api/latest/oatpp/core/Types/#string)")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getLocation")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/174.8559ebfb.js b/docs/.vuepress/dist/assets/js/174.8559ebfb.js deleted file mode 100644 index db25adb1c..000000000 --- a/docs/.vuepress/dist/assets/js/174.8559ebfb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{546:function(t,e,r){"use strict";r.r(e);var o=r(42),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"inmemorydata-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#inmemorydata-hpp"}},[t._v("#")]),t._v(" InMemoryData.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/resource/InMemoryData.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/resource/InMemoryData.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/core/data/resource/InMemoryData.hpp"')])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/175.938c449b.js b/docs/.vuepress/dist/assets/js/175.938c449b.js deleted file mode 100644 index 967ecf111..000000000 --- a/docs/.vuepress/dist/assets/js/175.938c449b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{547:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"resource-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-hpp"}},[t._v("#")]),t._v(" Resource.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/resource/Resource.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/resource/Resource.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/resource/Resource.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"resource"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource"}},[t._v("#")]),t._v(" Resource")]),t._v(" "),e("p",[t._v("Abstract data resource")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" resource "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Resource")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-~resource"}},[t._v("~Resource")])]),t._v(" "),e("td",[t._v("virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-openoutputstream"}},[t._v("openOutputStream")])]),t._v(" "),e("td",[t._v("Open output stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-openinputstream"}},[t._v("openInputStream")])]),t._v(" "),e("td",[t._v("Open input stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-getinmemorydata"}},[t._v("getInMemoryData")])]),t._v(" "),e("td",[t._v("Get in-memory data if applicable.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),e("td",[t._v("Get known data size if applicable.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resource-getlocation"}},[t._v("getLocation")])]),t._v(" "),e("td",[t._v("Get resource location if applicable. "),e("br")])])])]),t._v(" "),e("h3",{attrs:{id:"resource-resource"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-resource"}},[t._v("#")]),t._v(" Resource::~Resource")]),t._v(" "),e("p",[t._v("virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Resource")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"resource-openoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-openoutputstream"}},[t._v("#")]),t._v(" Resource::openOutputStream")]),t._v(" "),e("p",[t._v("Open output stream. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("openOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"resource-openinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-openinputstream"}},[t._v("#")]),t._v(" Resource::openInputStream")]),t._v(" "),e("p",[t._v("Open input stream. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("openInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"resource-getinmemorydata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-getinmemorydata"}},[t._v("#")]),t._v(" Resource::getInMemoryData")]),t._v(" "),e("p",[t._v("Get in-memory data if applicable. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("[oatpp::String](/api/latest/oatpp/core/Types/#string)")]),t._v(" or "),e("code",[t._v("nullptr")]),t._v(" if not applicable. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"resource-getknownsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-getknownsize"}},[t._v("#")]),t._v(" Resource::getKnownSize")]),t._v(" "),e("p",[t._v("Get known data size if applicable. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - known size of the data. "),e("code",[t._v("-1")]),t._v(" - if size is unknown. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"resource-getlocation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resource-getlocation"}},[t._v("#")]),t._v(" Resource::getLocation")]),t._v(" "),e("p",[t._v("Get resource location if applicable. "),e("br"),t._v(" location can be for example a file name. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("[oatpp::String](/api/latest/oatpp/core/Types/#string)")]),t._v(" or "),e("code",[t._v("nullptr")]),t._v(" if not applicable. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getLocation")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/176.c576a22b.js b/docs/.vuepress/dist/assets/js/176.c576a22b.js deleted file mode 100644 index a1b2e22e1..000000000 --- a/docs/.vuepress/dist/assets/js/176.c576a22b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{548:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"temporaryfile-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-hpp"}},[t._v("#")]),t._v(" TemporaryFile.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/resource/TemporaryFile.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/resource/TemporaryFile.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/data/resource/TemporaryFile.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"temporaryfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile"}},[t._v("#")]),t._v(" TemporaryFile")]),t._v(" "),a("p",[t._v("Temporary file - the file which gets deleted when the destructor is called (more precisely when all copies of the same "),a("code",[t._v("TemporaryFile")]),t._v(" object deleted). "),a("br"),t._v(" The "),a("code",[t._v("TemporaryFile")]),t._v(" object internally stores a "),a("code",[t._v("shared_ptr")]),t._v(" to a file handle. When file handle deleted it also deletes the underlying file. "),a("br"),t._v(" Thus it's safe to copy "),a("code",[t._v("TemporaryFile")]),t._v(" object and you may treat "),a("code",[t._v("TemporaryFile")]),t._v(" object as a shared_ptr to a temporary file. "),a("br"),t._v(" extends - oatpp::data::Resource.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" resource "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TemporaryFile")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Resource "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-temporaryfile"}},[t._v("TemporaryFile")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Default constructor. ")]),a("li",[t._v("Constructor. "),a("br")]),a("li",[t._v("Constructor."),a("br")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-openoutputstream"}},[t._v("openOutputStream")])]),t._v(" "),a("td",[t._v("Open output stream to a temporary file. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-openinputstream"}},[t._v("openInputStream")])]),t._v(" "),a("td",[t._v("Open input stream to a temporary file. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-getinmemorydata"}},[t._v("getInMemoryData")])]),t._v(" "),a("td",[t._v("Not applicable.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int64")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),a("td",[t._v("Not applicable.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-getlocation"}},[t._v("getLocation")])]),t._v(" "),a("td",[t._v("Get location where temporary data is stored.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#temporaryfile-movefile"}},[t._v("moveFile")])]),t._v(" "),a("td",[t._v("Move payload to a different file. "),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"temporaryfile-temporaryfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-temporaryfile"}},[t._v("#")]),t._v(" TemporaryFile::TemporaryFile")]),t._v(" "),a("ol",[a("li",[t._v("Default constructor."),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("TemporaryFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Constructor. "),a("br"),t._v(" Create temporary file with a random name in the "),a("code",[t._v("tmpDirectory")]),t._v(". "),a("br"),t._v(" The actual file will be created only after first write to that file. "),a("br"),t._v(" Example of the generated random file name: "),a("code",[t._v("f7c6ecd44024ff31.tmp")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tmpDirectory - directory where to create a temporary file. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" randomWordSizeBytes - number of random bytes to generate file name. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("TemporaryFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tmpDirectory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 randomWordSizeBytes "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Constructor."),a("br"),t._v(" Create temporary file with the "),a("code",[t._v("tmpFileName")]),t._v(" name in the "),a("code",[t._v("tmpDirectory")]),t._v(". "),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tmpDirectory - directory where to create a temporary file. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" tmpFileName - predefined name for the temporary file. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("TemporaryFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tmpDirectory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tmpFileName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"temporaryfile-openoutputstream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-openoutputstream"}},[t._v("#")]),t._v(" TemporaryFile::openOutputStream")]),t._v(" "),a("p",[t._v("Open output stream to a temporary file. "),a("br"),t._v(" "),a("em",[t._v("Note: stream also captures file-handle. The temporary file won't be deleted until the stream is deleted.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("openOutputStream")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"temporaryfile-openinputstream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-openinputstream"}},[t._v("#")]),t._v(" TemporaryFile::openInputStream")]),t._v(" "),a("p",[t._v("Open input stream to a temporary file. "),a("br"),t._v(" "),a("em",[t._v("Note: stream also captures file-handle. The temporary file won't be deleted until the stream is deleted.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("openInputStream")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"temporaryfile-getinmemorydata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-getinmemorydata"}},[t._v("#")]),t._v(" TemporaryFile::getInMemoryData")]),t._v(" "),a("p",[t._v("Not applicable. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - always returns "),a("code",[t._v("nullptr")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"temporaryfile-getknownsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-getknownsize"}},[t._v("#")]),t._v(" TemporaryFile::getKnownSize")]),t._v(" "),a("p",[t._v("Not applicable. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - always returns "),a("code",[t._v("-1")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"temporaryfile-getlocation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-getlocation"}},[t._v("#")]),t._v(" TemporaryFile::getLocation")]),t._v(" "),a("p",[t._v("Get location where temporary data is stored. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("[oatpp::String](/api/latest/oatpp/core/Types/#string)")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getLocation")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"temporaryfile-movefile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfile-movefile"}},[t._v("#")]),t._v(" TemporaryFile::moveFile")]),t._v(" "),a("p",[t._v("Move payload to a different file. "),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" fullFileName - full-file-name. Note: all the parent folders must exist. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" - file was successfully moved, "),a("code",[t._v("false")]),t._v(" - otherwise. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("moveFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" fullFileName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/177.76aa47ff.js b/docs/.vuepress/dist/assets/js/177.76aa47ff.js deleted file mode 100644 index dfb318ba0..000000000 --- a/docs/.vuepress/dist/assets/js/177.76aa47ff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{550:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"lazystringmap-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmap-hpp"}},[t._v("#")]),t._v(" LazyStringMap.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/share/LazyStringMap.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/share/LazyStringMap.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/share/LazyStringMap.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"lazystringmaptemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate"}},[t._v("#")]),t._v(" LazyStringMapTemplate")]),t._v(" "),e("p",[t._v("Lazy String Map keeps keys, and values as memory label. Once value is requested by user, the new memory block is allocated and value is copied to be stored permanently. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Key - one of: "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" MapType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("LazyStringMapTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-lazystringmaptemplate"}},[t._v("LazyStringMapTemplate")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Copy-constructor. ")]),e("li",[t._v("Move constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-put"}},[t._v("put")])]),t._v(" "),e("td",[t._v("Put value to map.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-put-lockfree"}},[t._v("put_LockFree")])]),t._v(" "),e("td",[t._v("Put value to map. Not thread-safe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-putifnotexists"}},[t._v("putIfNotExists")])]),t._v(" "),e("td",[t._v("Put value to map if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-putifnotexists-lockfree"}},[t._v("putIfNotExists_LockFree")])]),t._v(" "),e("td",[t._v("Put value to map if not already exists. Not thread-safe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-putorreplace"}},[t._v("putOrReplace")])]),t._v(" "),e("td",[t._v("Erases all occurrences of key and replaces them with a new entry")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-putorreplace-lockfree"}},[t._v("putOrReplace_LockFree")])]),t._v(" "),e("td",[t._v("Erases all occurrences of key and replaces them with a new entry. Not thread-safe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-get"}},[t._v("get")])]),t._v(" "),e("td",[t._v("Get value as "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("T")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-getasmemorylabel"}},[t._v("getAsMemoryLabel")])]),t._v(" "),e("td",[t._v("Get value as a memory label.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("T")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-getasmemorylabel-unsafe"}},[t._v("getAsMemoryLabel_Unsafe")])]),t._v(" "),e("td",[t._v("Get value as a memory label without allocating memory for value.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const MapType&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-getall"}},[t._v("getAll")])]),t._v(" "),e("td",[t._v("Get map of all values.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const MapType&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-getall-unsafe"}},[t._v("getAll_Unsafe")])]),t._v(" "),e("td",[t._v("Get map of all values without allocating memory for those keys/values.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#lazystringmaptemplate-getsize"}},[t._v("getSize")])]),t._v(" "),e("td",[t._v("Get number of entries in the map.")])])])]),t._v(" "),e("h3",{attrs:{id:"lazystringmaptemplate-lazystringmaptemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-lazystringmaptemplate"}},[t._v("#")]),t._v(" LazyStringMapTemplate::LazyStringMapTemplate")]),t._v(" "),e("ol",[e("li",[t._v("Constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("LazyStringMapTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_fullyInitialized")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Copy-constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("LazyStringMapTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" LazyStringMapTemplate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Move constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("LazyStringMapTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("LazyStringMapTemplate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"lazystringmaptemplate-put"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-put"}},[t._v("#")]),t._v(" LazyStringMapTemplate::put")]),t._v(" "),e("p",[t._v("Put value to map. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("put")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-put-lockfree"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-put-lockfree"}},[t._v("#")]),t._v(" LazyStringMapTemplate::put_LockFree")]),t._v(" "),e("p",[t._v("Put value to map. Not thread-safe. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("put_LockFree")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-putifnotexists"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-putifnotexists"}},[t._v("#")]),t._v(" LazyStringMapTemplate::putIfNotExists")]),t._v(" "),e("p",[t._v("Put value to map if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putIfNotExists")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-putifnotexists-lockfree"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-putifnotexists-lockfree"}},[t._v("#")]),t._v(" LazyStringMapTemplate::putIfNotExists_LockFree")]),t._v(" "),e("p",[t._v("Put value to map if not already exists. Not thread-safe. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putIfNotExists_LockFree")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-putorreplace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-putorreplace"}},[t._v("#")]),t._v(" LazyStringMapTemplate::putOrReplace")]),t._v(" "),e("p",[t._v("Erases all occurrences of key and replaces them with a new entry "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - true if an entry was replaced, false if entry was only inserted. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplace")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-putorreplace-lockfree"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-putorreplace-lockfree"}},[t._v("#")]),t._v(" LazyStringMapTemplate::putOrReplace_LockFree")]),t._v(" "),e("p",[t._v("Erases all occurrences of key and replaces them with a new entry. Not thread-safe. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" value ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if an entry was replaced, "),e("code",[t._v("false")]),t._v(" if entry was only inserted. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplace_LockFree")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-get"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-get"}},[t._v("#")]),t._v(" LazyStringMapTemplate::get")]),t._v(" "),e("p",[t._v("Get value as "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-getasmemorylabel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-getasmemorylabel"}},[t._v("#")]),t._v(" LazyStringMapTemplate::getAsMemoryLabel")]),t._v(" "),e("p",[t._v("Get value as a memory label. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - one of: "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nT "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsMemoryLabel")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-getasmemorylabel-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-getasmemorylabel-unsafe"}},[t._v("#")]),t._v(" LazyStringMapTemplate::getAsMemoryLabel_Unsafe")]),t._v(" "),e("p",[t._v("Get value as a memory label without allocating memory for value. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" T - one of: "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(", * "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nT "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsMemoryLabel_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-getall"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-getall"}},[t._v("#")]),t._v(" LazyStringMapTemplate::getAll")]),t._v(" "),e("p",[t._v("Get map of all values. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" MapType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAll")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-getall-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-getall-unsafe"}},[t._v("#")]),t._v(" LazyStringMapTemplate::getAll_Unsafe")]),t._v(" "),e("p",[t._v("Get map of all values without allocating memory for those keys/values. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" MapType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAll_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"lazystringmaptemplate-getsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmaptemplate-getsize"}},[t._v("#")]),t._v(" LazyStringMapTemplate::getSize")]),t._v(" "),e("p",[t._v("Get number of entries in the map. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h2",{attrs:{id:"lazystringmap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmap"}},[t._v("#")]),t._v(" LazyStringMap")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" "),e("code",[t._v("oatpp::data::share")])]),t._v(" "),e("p",[t._v("Convenience template for "),e("a",{attrs:{href:"#lazystringmaptemplate"}},[t._v("LazyStringMapTemplate")]),t._v(". Based on "),e("code",[t._v("std::unordered_map")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Value "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" LazyStringMap "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" LazyStringMapTemplate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Value"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])]),e("h2",{attrs:{id:"lazystringmultimap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lazystringmultimap"}},[t._v("#")]),t._v(" LazyStringMultimap")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" "),e("code",[t._v("oatpp::data::share")])]),t._v(" "),e("p",[t._v("Convenience template for "),e("a",{attrs:{href:"#lazystringmaptemplate"}},[t._v("LazyStringMapTemplate")]),t._v(". Based on "),e("code",[t._v("std::unordered_map")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Value "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" LazyStringMultimap "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" LazyStringMapTemplate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_multimap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Value"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/178.208d5c86.js b/docs/.vuepress/dist/assets/js/178.208d5c86.js deleted file mode 100644 index 2eaaa1e06..000000000 --- a/docs/.vuepress/dist/assets/js/178.208d5c86.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[178],{549:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"memorylabel-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-hpp"}},[t._v("#")]),t._v(" MemoryLabel.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/share/MemoryLabel.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/share/MemoryLabel.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/share/MemoryLabel.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"memorylabel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel"}},[t._v("#")]),t._v(" MemoryLabel")]),t._v(" "),s("p",[t._v('MemoryLabel represent a part of the whole memory buffer refered by handle. Advantage of MemoryLabel use is that you may just "label" some data instead of allocating buffer for it\'s copy. You may allocate separate buffer for data copy later once you need it.')]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MemoryLabel")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-memorylabel"}},[t._v("MemoryLabel")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. Null MemoryLabel. ")]),s("li",[t._v("nullptr constructor. ")]),s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const void*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-getdata"}},[t._v("getData")])]),t._v(" "),s("td",[t._v("Get pointer to labeled data.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-getsize"}},[t._v("getSize")])]),t._v(" "),s("td",[t._v("Get data size.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-getmemoryhandle"}},[t._v("getMemoryHandle")])]),t._v(" "),s("td",[t._v("Get memory handle which this memory label holds.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-capturetoownmemory"}},[t._v("captureToOwnMemory")])]),t._v(" "),s("td",[t._v("Capture data referenced by memory label to its own memory.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-equals"}},[t._v("equals")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Check if labeled data equals to data specified. ")]),s("li",[t._v("Check if labeled data equals to data specified. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-tostring"}},[t._v("toString")])]),t._v(" "),s("td",[t._v("Create oatpp::String from memory label")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#memorylabel-std-str"}},[t._v("std_str")])]),t._v(" "),s("td",[t._v("Create std::string from memory label")])])])]),t._v(" "),s("h3",{attrs:{id:"memorylabel-memorylabel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-memorylabel"}},[t._v("#")]),t._v(" MemoryLabel::MemoryLabel")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor. Null MemoryLabel."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_memoryHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_size")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("nullptr constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_memoryHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_size")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ptr ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ptr "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ptr "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" memHandle - memory handle. "),s("code",[t._v("std::shared_ptr")]),t._v(" to buffer pointed by a memory label. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size - size of the data in bytes. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" memHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"memorylabel-getdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-getdata"}},[t._v("#")]),t._v(" MemoryLabel::getData")]),t._v(" "),s("p",[t._v("Get pointer to labeled data. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - pointer to data. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"memorylabel-getsize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-getsize"}},[t._v("#")]),t._v(" MemoryLabel::getSize")]),t._v(" "),s("p",[t._v("Get data size. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - size of the data. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"memorylabel-getmemoryhandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-getmemoryhandle"}},[t._v("#")]),t._v(" MemoryLabel::getMemoryHandle")]),t._v(" "),s("p",[t._v("Get memory handle which this memory label holds. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("std::string")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMemoryHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"memorylabel-capturetoownmemory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-capturetoownmemory"}},[t._v("#")]),t._v(" MemoryLabel::captureToOwnMemory")]),t._v(" "),s("p",[t._v("Capture data referenced by memory label to its own memory.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("captureToOwnMemory")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"memorylabel-equals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-equals"}},[t._v("#")]),t._v(" MemoryLabel::equals")]),t._v(" "),s("ol",[s("li",[t._v("Check if labeled data equals to data specified. Data is compared using oatpp::urils::String::compare. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - data to compare with labeled data. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if equals. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equals")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Check if labeled data equals to data specified. Data is compared using oatpp::urils::String::compare. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - data to compare with labeled data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size - data size. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if equals. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equals")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"memorylabel-tostring"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-tostring"}},[t._v("#")]),t._v(" MemoryLabel::toString")]),t._v(" "),s("p",[t._v("Create oatpp::String from memory label "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" oatpp::String(data, size) ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"memorylabel-std-str"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memorylabel-std-str"}},[t._v("#")]),t._v(" MemoryLabel::std_str")]),t._v(" "),s("p",[t._v("Create std::string from memory label "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" std::string(data, size) ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("std_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"stringkeylabel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stringkeylabel"}},[t._v("#")]),t._v(" StringKeyLabel")]),t._v(" "),s("p",[t._v("MemoryLabel which can be used as a key in unordered_map")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringKeyLabel")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" MemoryLabel "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#stringkeylabel-stringkeylabel"}},[t._v("StringKeyLabel")])]),t._v(" "),s("td",[t._v("Constructor.")])])])]),t._v(" "),s("h3",{attrs:{id:"stringkeylabel-stringkeylabel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stringkeylabel-stringkeylabel"}},[t._v("#")]),t._v(" StringKeyLabel::StringKeyLabel")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" ptr ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StringKeyLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MemoryLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ptr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"stringkeylabelci"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stringkeylabelci"}},[t._v("#")]),t._v(" StringKeyLabelCI")]),t._v(" "),s("p",[t._v("MemoryLabel which can be used as a case-insensitive key in unordered_map")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringKeyLabelCI")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" MemoryLabel "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/179.88668f14.js b/docs/.vuepress/dist/assets/js/179.88668f14.js deleted file mode 100644 index fa46f0514..000000000 --- a/docs/.vuepress/dist/assets/js/179.88668f14.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{551:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"stringtemplate-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-hpp"}},[t._v("#")]),t._v(" StringTemplate.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/share/StringTemplate.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/share/StringTemplate.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/share/StringTemplate.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"stringtemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate"}},[t._v("#")]),t._v(" StringTemplate")]),t._v(" "),e("p",[t._v("String template.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-stringtemplate"}},[t._v("StringTemplate")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-format"}},[t._v("format")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Format template. ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-vectorvalueprovider"}},[t._v("StringTemplate::VectorValueProvider")]),t._v(". ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-mapvalueprovider"}},[t._v("StringTemplate::MapValueProvider")]),t._v(". ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-singlevalueprovider"}},[t._v("StringTemplate::SingleValueProvider")]),t._v(". ")]),e("li",[t._v("Format template. ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-vectorvalueprovider"}},[t._v("StringTemplate::VectorValueProvider")]),t._v(". ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-mapvalueprovider"}},[t._v("StringTemplate::MapValueProvider")]),t._v(". ")]),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-singlevalueprovider"}},[t._v("StringTemplate::SingleValueProvider")]),t._v(". ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const std::vector&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-gettemplatevariables"}},[t._v("getTemplateVariables")])]),t._v(" "),e("td",[t._v("Get all template variables.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-setextradata"}},[t._v("setExtraData")])]),t._v(" "),e("td",[t._v("Set some extra data associated with the template.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-getextradata"}},[t._v("getExtraData")])]),t._v(" "),e("td",[t._v("Get extra data associated with the template.")])])])]),t._v(" "),e("h3",{attrs:{id:"stringtemplate-stringtemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-stringtemplate"}},[t._v("#")]),t._v(" StringTemplate::StringTemplate")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" text - original template text. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" variables - template variables. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("StringTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Variable"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" variables"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"stringtemplate-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-format"}},[t._v("#")]),t._v(" StringTemplate::format")]),t._v(" "),e("ol",[e("li",[t._v("Format template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write result to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" valueProvider - "),e("a",{attrs:{href:"#stringtemplate-valueprovider"}},[t._v("StringTemplate::ValueProvider")]),t._v(". ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ValueProvider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" valueProvider"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-vectorvalueprovider"}},[t._v("StringTemplate::VectorValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write result to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" params - "),e("code",[t._v("std::vector")]),t._v(". ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-mapvalueprovider"}},[t._v("StringTemplate::MapValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write result to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" params - "),e("code",[t._v("std::unordered_map")]),t._v(". ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-singlevalueprovider"}},[t._v("StringTemplate::SingleValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write result to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" singleValue - value. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" singleValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" valueProvider - "),e("a",{attrs:{href:"#stringtemplate-valueprovider"}},[t._v("StringTemplate::ValueProvider")]),t._v(". ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ValueProvider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" valueProvider"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-vectorvalueprovider"}},[t._v("StringTemplate::VectorValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" params - "),e("code",[t._v("std::vector")]),t._v(". ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - resultant string. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-mapvalueprovider"}},[t._v("StringTemplate::MapValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" params - "),e("code",[t._v("std::unordered_map")]),t._v(". ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - resultant string. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Format template using "),e("a",{attrs:{href:"#stringtemplate-singlevalueprovider"}},[t._v("StringTemplate::SingleValueProvider")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" singleValue - value. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - resultant string. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("format")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" singleValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"stringtemplate-gettemplatevariables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-gettemplatevariables"}},[t._v("#")]),t._v(" StringTemplate::getTemplateVariables")]),t._v(" "),e("p",[t._v("Get all template variables. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::vector")]),t._v(" of "),e("a",{attrs:{href:"#stringtemplate-variable"}},[t._v("StringTemplate::Variable")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Variable"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTemplateVariables")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"stringtemplate-setextradata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-setextradata"}},[t._v("#")]),t._v(" StringTemplate::setExtraData")]),t._v(" "),e("p",[t._v("Set some extra data associated with the template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setExtraData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"stringtemplate-getextradata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-getextradata"}},[t._v("#")]),t._v(" StringTemplate::getExtraData")]),t._v(" "),e("p",[t._v("Get extra data associated with the template. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getExtraData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h2",{attrs:{id:"stringtemplate-variable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-variable"}},[t._v("#")]),t._v(" StringTemplate::Variable")]),t._v(" "),e("p",[t._v("Template variable.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Variable")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-variable-posstart"}},[t._v("posStart")])]),t._v(" "),e("td",[t._v("Position of the first char in the original template string.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-variable-posend"}},[t._v("posEnd")])]),t._v(" "),e("td",[t._v("Position of the last char in the original template string.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-variable-name"}},[t._v("name")])]),t._v(" "),e("td",[t._v("Name of the template variable.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-variable-extra"}},[t._v("extra")])]),t._v(" "),e("td",[t._v("Some auxiliary data.")])])])]),t._v(" "),e("h3",{attrs:{id:"stringtemplate-variable-posstart"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-variable-posstart"}},[t._v("#")]),t._v(" StringTemplate::Variable::posStart")]),t._v(" "),e("p",[t._v("Position of the first char in the original template string.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size posStart\n")])])]),e("h3",{attrs:{id:"stringtemplate-variable-posend"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-variable-posend"}},[t._v("#")]),t._v(" StringTemplate::Variable::posEnd")]),t._v(" "),e("p",[t._v("Position of the last char in the original template string.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size posEnd\n")])])]),e("h3",{attrs:{id:"stringtemplate-variable-name"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-variable-name"}},[t._v("#")]),t._v(" StringTemplate::Variable::name")]),t._v(" "),e("p",[t._v("Name of the template variable.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String name\n")])])]),e("h3",{attrs:{id:"stringtemplate-variable-extra"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-variable-extra"}},[t._v("#")]),t._v(" StringTemplate::Variable::extra")]),t._v(" "),e("p",[t._v("Some auxiliary data.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" extra\n")])])]),e("h2",{attrs:{id:"stringtemplate-valueprovider"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-valueprovider"}},[t._v("#")]),t._v(" StringTemplate::ValueProvider")]),t._v(" "),e("p",[t._v("Abstract template value provider.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ValueProvider")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-valueprovider-~valueprovider"}},[t._v("~ValueProvider")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#stringtemplate-valueprovider-getvalue"}},[t._v("getValue")])]),t._v(" "),e("td",[t._v("Get value for variable.")])])])]),t._v(" "),e("h3",{attrs:{id:"stringtemplate-valueprovider-valueprovider"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-valueprovider-valueprovider"}},[t._v("#")]),t._v(" StringTemplate::ValueProvider::~ValueProvider")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ValueProvider")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"stringtemplate-valueprovider-getvalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-valueprovider-getvalue"}},[t._v("#")]),t._v(" StringTemplate::ValueProvider::getValue")]),t._v(" "),e("p",[t._v("Get value for variable. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" variable - "),e("a",{attrs:{href:"#stringtemplate-variable"}},[t._v("StringTemplate::Variable")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" index - index of the variable in the template. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - value for the given variable. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Variable"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" variable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 index"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h2",{attrs:{id:"stringtemplate-vectorvalueprovider"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-vectorvalueprovider"}},[t._v("#")]),t._v(" StringTemplate::VectorValueProvider")]),t._v(" "),e("p",[t._v("Provider of template variable-values based on the std::vector.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("VectorValueProvider")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ValueProvider "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"stringtemplate-mapvalueprovider"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-mapvalueprovider"}},[t._v("#")]),t._v(" StringTemplate::MapValueProvider")]),t._v(" "),e("p",[t._v("Provider of template variable-values based on the std::unordered_map.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MapValueProvider")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ValueProvider "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"stringtemplate-singlevalueprovider"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stringtemplate-singlevalueprovider"}},[t._v("#")]),t._v(" StringTemplate::SingleValueProvider")]),t._v(" "),e("p",[t._v("Provider of template variable-values which returns the same value for all variables.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" share "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringTemplate")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SingleValueProvider")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ValueProvider "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/18.72369f4f.js b/docs/.vuepress/dist/assets/js/18.72369f4f.js deleted file mode 100644 index a83cbba57..000000000 --- a/docs/.vuepress/dist/assets/js/18.72369f4f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{389:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bodyinputstream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-hpp"}},[t._v("#")]),t._v(" BodyInputStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/BodyInputStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/BodyInputStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-curl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-curl/io/BodyInputStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bodyinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream"}},[t._v("#")]),t._v(" BodyInputStream")]),t._v(" "),e("p",[t._v("Wrapper over "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyReader/#curlbodyreader"}},[t._v("oatpp::curl::io::CurlBodyReader")]),t._v(" providing "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(" interface.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BodyInputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyinputstream-bodyinputstream"}},[t._v("BodyInputStream")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyinputstream-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read data from stream. Implementation of oatpp::data::stream::InputStream::read method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyinputstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyinputstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyinputstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])])])]),t._v(" "),e("h3",{attrs:{id:"bodyinputstream-bodyinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-bodyinputstream"}},[t._v("#")]),t._v(" BodyInputStream::BodyInputStream")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" reader ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BodyInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CurlBodyReader"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" reader"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodyinputstream-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-read"}},[t._v("#")]),t._v(" BodyInputStream::read")]),t._v(" "),e("p",[t._v("Read data from stream. Implementation of oatpp::data::stream::InputStream::read method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyinputstream-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-setinputstreamiomode"}},[t._v("#")]),t._v(" BodyInputStream::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyinputstream-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-getinputstreamiomode"}},[t._v("#")]),t._v(" BodyInputStream::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyinputstream-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyinputstream-getinputstreamcontext"}},[t._v("#")]),t._v(" BodyInputStream::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#context"}},[t._v("Context")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/180.a07a11de.js b/docs/.vuepress/dist/assets/js/180.a07a11de.js deleted file mode 100644 index a40811c79..000000000 --- a/docs/.vuepress/dist/assets/js/180.a07a11de.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{552:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bufferstream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferstream-hpp"}},[t._v("#")]),t._v(" BufferStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/stream/BufferStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/stream/BufferStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/stream/BufferStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bufferoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream"}},[t._v("#")]),t._v(" BufferOutputStream")]),t._v(" "),e("p",[t._v("BufferOutputStream")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BufferOutputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ConsistentOutputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-bufferoutputstream"}},[t._v("BufferOutputStream")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-~bufferoutputstream"}},[t._v("~BufferOutputStream")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write "),e("code",[t._v("count")]),t._v(" of bytes to stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-reservebytesupfront"}},[t._v("reserveBytesUpfront")])]),t._v(" "),e("td",[t._v("Reserve bytes for future writes.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getdata"}},[t._v("getData")])]),t._v(" "),e("td",[t._v("Get pointer to data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getcapacity"}},[t._v("getCapacity")])]),t._v(" "),e("td",[t._v("Get current capacity.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getcurrentposition"}},[t._v("getCurrentPosition")])]),t._v(" "),e("td",[t._v("Get current data write position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-setcurrentposition"}},[t._v("setCurrentPosition")])]),t._v(" "),e("td",[t._v("Set current data write position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-reset"}},[t._v("reset")])]),t._v(" "),e("td",[t._v("Reset stream buffer and its capacity. Also reset write position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-tostring"}},[t._v("toString")])]),t._v(" "),e("td",[t._v("Copy data to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-getsubstring"}},[t._v("getSubstring")])]),t._v(" "),e("td",[t._v("Create "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" from part of buffer.")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-flushtostream"}},[t._v("flushToStream")])]),t._v(" "),e("td",[t._v("Write all bytes from buffer to stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferoutputstream-flushtostreamasync"}},[t._v("flushToStreamAsync")])]),t._v(" "),e("td",[t._v("Write all bytes from buffer to stream in async manner.")])])])]),t._v(" "),e("h3",{attrs:{id:"bufferoutputstream-bufferoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-bufferoutputstream"}},[t._v("#")]),t._v(" BufferOutputStream::BufferOutputStream")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" growBytes ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BufferOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size initialCapacity "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-bufferoutputstream-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-bufferoutputstream-2"}},[t._v("#")]),t._v(" BufferOutputStream::~BufferOutputStream")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BufferOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-write"}},[t._v("#")]),t._v(" BufferOutputStream::write")]),t._v(" "),e("p",[t._v("Write "),e("code",[t._v("count")]),t._v(" of bytes to stream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - data to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - number of bytes to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-setoutputstreamiomode"}},[t._v("#")]),t._v(" BufferOutputStream::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getoutputstreamiomode"}},[t._v("#")]),t._v(" BufferOutputStream::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getoutputstreamcontext"}},[t._v("#")]),t._v(" BufferOutputStream::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-reservebytesupfront"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-reservebytesupfront"}},[t._v("#")]),t._v(" BufferOutputStream::reserveBytesUpfront")]),t._v(" "),e("p",[t._v("Reserve bytes for future writes.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reserveBytesUpfront")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getdata"}},[t._v("#")]),t._v(" BufferOutputStream::getData")]),t._v(" "),e("p",[t._v("Get pointer to data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - pointer to data. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getcapacity"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getcapacity"}},[t._v("#")]),t._v(" BufferOutputStream::getCapacity")]),t._v(" "),e("p",[t._v("Get current capacity. Capacity may change. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCapacity")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getcurrentposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getcurrentposition"}},[t._v("#")]),t._v(" BufferOutputStream::getCurrentPosition")]),t._v(" "),e("p",[t._v("Get current data write position. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - current data write position. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCurrentPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-setcurrentposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-setcurrentposition"}},[t._v("#")]),t._v(" BufferOutputStream::setCurrentPosition")]),t._v(" "),e("p",[t._v("Set current data write position. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" position - data write position. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setCurrentPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size position"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-reset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-reset"}},[t._v("#")]),t._v(" BufferOutputStream::reset")]),t._v(" "),e("p",[t._v("Reset stream buffer and its capacity. Also reset write position. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" initialCapacity ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size initialCapacity "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-tostring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-tostring"}},[t._v("#")]),t._v(" BufferOutputStream::toString")]),t._v(" "),e("p",[t._v("Copy data to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")])])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-getsubstring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-getsubstring"}},[t._v("#")]),t._v(" BufferOutputStream::getSubstring")]),t._v(" "),e("p",[t._v("Create "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" from part of buffer. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pos - starting position in buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of bytes to write to substring. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")])],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubstring")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size pos"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-flushtostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-flushtostream"}},[t._v("#")]),t._v(" BufferOutputStream::flushToStream")]),t._v(" "),e("p",[t._v("Write all bytes from buffer to stream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to flush all data to. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes flushed. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferoutputstream-flushtostreamasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferoutputstream-flushtostreamasync"}},[t._v("#")]),t._v(" BufferOutputStream::flushToStreamAsync")]),t._v(" "),e("p",[t._v("Write all bytes from buffer to stream in async manner. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" _this - pointer to "),e("code",[t._v("this")]),t._v(" buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to flush all data to. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStreamAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BufferOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _this"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"bufferinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream"}},[t._v("#")]),t._v(" BufferInputStream")]),t._v(" "),e("p",[t._v("BufferInputStream")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BufferInputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" BufferedInputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-bufferinputstream"}},[t._v("BufferInputStream")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-reset"}},[t._v("reset")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Reset stream data and set position to "),e("code",[t._v("0")]),t._v(". ")]),e("li",[t._v("Same as "),e("code",[t._v("reset(nullptr, nullptr, 0);.")])])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read data from stream. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getdatamemoryhandle"}},[t._v("getDataMemoryHandle")])]),t._v(" "),e("td",[t._v("Get data memory handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getdata"}},[t._v("getData")])]),t._v(" "),e("td",[t._v("Get pointer to data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getdatasize"}},[t._v("getDataSize")])]),t._v(" "),e("td",[t._v("Get data size.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-getcurrentposition"}},[t._v("getCurrentPosition")])]),t._v(" "),e("td",[t._v("Get current data read position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-setcurrentposition"}},[t._v("setCurrentPosition")])]),t._v(" "),e("td",[t._v("Set current data read position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-peek"}},[t._v("peek")])]),t._v(" "),e("td",[t._v("Peek up to count of bytes int he buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-availabletoread"}},[t._v("availableToRead")])]),t._v(" "),e("td",[t._v("Amount of bytes currently available to read from buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferinputstream-commitreadoffset"}},[t._v("commitReadOffset")])]),t._v(" "),e("td",[t._v("Commit read offset")])])])]),t._v(" "),e("h3",{attrs:{id:"bufferinputstream-bufferinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-bufferinputstream"}},[t._v("#")]),t._v(" BufferInputStream::BufferInputStream")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" memoryHandle - buffer memory handle. May be nullptr. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to buffer data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size - size of the buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BufferInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" memoryHandle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BufferInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"bufferinputstream-reset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-reset"}},[t._v("#")]),t._v(" BufferInputStream::reset")]),t._v(" "),e("ol",[e("li",[t._v("Reset stream data and set position to "),e("code",[t._v("0")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" memoryHandle - buffer memory handle. May be nullptr. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to buffer data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" size - size of the buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" memoryHandle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n p_char8 data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size size"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Same as "),e("code",[t._v("reset(nullptr, nullptr, 0);.")]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"bufferinputstream-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-read"}},[t._v("#")]),t._v(" BufferInputStream::read")]),t._v(" "),e("p",[t._v("Read data from stream. "),e("br"),t._v(" It is a legal case if return result < count. Caller should handle this! "),e("em",[t._v("Calls to this method are always NON-BLOCKING")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes read. 0 - designates end of the buffer. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-setinputstreamiomode"}},[t._v("#")]),t._v(" BufferInputStream::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getinputstreamiomode"}},[t._v("#")]),t._v(" BufferInputStream::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getinputstreamcontext"}},[t._v("#")]),t._v(" BufferInputStream::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getdatamemoryhandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getdatamemoryhandle"}},[t._v("#")]),t._v(" BufferInputStream::getDataMemoryHandle")]),t._v(" "),e("p",[t._v("Get data memory handle. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - data memory handle. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDataMemoryHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getdata"}},[t._v("#")]),t._v(" BufferInputStream::getData")]),t._v(" "),e("p",[t._v("Get pointer to data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - pointer to data. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getdatasize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getdatasize"}},[t._v("#")]),t._v(" BufferInputStream::getDataSize")]),t._v(" "),e("p",[t._v("Get data size. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - data size. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDataSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferinputstream-getcurrentposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-getcurrentposition"}},[t._v("#")]),t._v(" BufferInputStream::getCurrentPosition")]),t._v(" "),e("p",[t._v("Get current data read position. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - current data read position. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCurrentPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferinputstream-setcurrentposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-setcurrentposition"}},[t._v("#")]),t._v(" BufferInputStream::setCurrentPosition")]),t._v(" "),e("p",[t._v("Set current data read position. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" position - data read position. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setCurrentPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size position"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferinputstream-peek"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-peek"}},[t._v("#")]),t._v(" BufferInputStream::peek")]),t._v(" "),e("p",[t._v("Peek up to count of bytes int he buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("peek")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-availabletoread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-availabletoread"}},[t._v("#")]),t._v(" BufferInputStream::availableToRead")]),t._v(" "),e("p",[t._v("Amount of bytes currently available to read from buffer. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferinputstream-commitreadoffset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferinputstream-commitreadoffset"}},[t._v("#")]),t._v(" BufferInputStream::commitReadOffset")]),t._v(" "),e("p",[t._v("Commit read offset "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitReadOffset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/181.80fd5c2d.js b/docs/.vuepress/dist/assets/js/181.80fd5c2d.js deleted file mode 100644 index 83acc353c..000000000 --- a/docs/.vuepress/dist/assets/js/181.80fd5c2d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{555:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fifostream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifostream-hpp"}},[t._v("#")]),t._v(" FIFOStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/stream/FIFOStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/stream/FIFOStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/stream/FIFOStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"fifoinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream"}},[t._v("#")]),t._v(" FIFOInputStream")]),t._v(" "),e("p",[t._v("FIFOInputStream")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FIFOInputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" BufferedInputStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" WriteCallback "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-fifoinputstream"}},[t._v("FIFOInputStream")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-reset"}},[t._v("reset")])]),t._v(" "),e("td",[t._v("Discards all data in the buffer and resets it to an empty state")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read data from stream. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-getdatamemoryhandle"}},[t._v("getDataMemoryHandle")])]),t._v(" "),e("td",[t._v("Get data memory handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-peek"}},[t._v("peek")])]),t._v(" "),e("td",[t._v("Peek up to count of bytes int he buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-availabletoread"}},[t._v("availableToRead")])]),t._v(" "),e("td",[t._v("Amount of bytes currently available to read from buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-commitreadoffset"}},[t._v("commitReadOffset")])]),t._v(" "),e("td",[t._v("Commit read offset")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-reservebytesupfront"}},[t._v("reserveBytesUpfront")])]),t._v(" "),e("td",[t._v("Reserve bytes for future writes. Check oatpp::data::stream::FIFOStream::availableToWrite for the capacity.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-readandwritetostream"}},[t._v("readAndWriteToStream")])]),t._v(" "),e("td",[t._v("call read and then write bytes read to output stream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-readfromstreamandwrite"}},[t._v("readFromStreamAndWrite")])]),t._v(" "),e("td",[t._v("call stream.read() and then write bytes read to buffer")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-flushtostream"}},[t._v("flushToStream")])]),t._v(" "),e("td",[t._v("flush all availableToRead bytes to stream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-flushtostreamasync"}},[t._v("flushToStreamAsync")])]),t._v(" "),e("td",[t._v("flush all availableToRead bytes to stream in asynchronous manner")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fifoinputstream-availabletowrite"}},[t._v("availableToWrite")])]),t._v(" "),e("td",[t._v("Amount of buffer space currently available for data writes.")])])])]),t._v(" "),e("h3",{attrs:{id:"fifoinputstream-fifoinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-fifoinputstream"}},[t._v("#")]),t._v(" FIFOInputStream::FIFOInputStream")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FIFOInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size initialSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4096")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-reset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-reset"}},[t._v("#")]),t._v(" FIFOInputStream::reset")]),t._v(" "),e("p",[t._v("Discards all data in the buffer and resets it to an empty state")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-read"}},[t._v("#")]),t._v(" FIFOInputStream::read")]),t._v(" "),e("p",[t._v("Read data from stream. "),e("br"),t._v(" It is a legal case if return result < count. Caller should handle this! "),e("em",[t._v("Calls to this method are always NON-BLOCKING")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes read. 0 - designates end of the buffer. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-setinputstreamiomode"}},[t._v("#")]),t._v(" FIFOInputStream::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-getinputstreamiomode"}},[t._v("#")]),t._v(" FIFOInputStream::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-getinputstreamcontext"}},[t._v("#")]),t._v(" FIFOInputStream::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-getdatamemoryhandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-getdatamemoryhandle"}},[t._v("#")]),t._v(" FIFOInputStream::getDataMemoryHandle")]),t._v(" "),e("p",[t._v("Get data memory handle. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - data memory handle. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDataMemoryHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-write"}},[t._v("#")]),t._v(" FIFOInputStream::write")]),t._v(" "),e("p",[t._v("Write operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the data in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-peek"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-peek"}},[t._v("#")]),t._v(" FIFOInputStream::peek")]),t._v(" "),e("p",[t._v("Peek up to count of bytes int he buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("peek")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-availabletoread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-availabletoread"}},[t._v("#")]),t._v(" FIFOInputStream::availableToRead")]),t._v(" "),e("p",[t._v("Amount of bytes currently available to read from buffer. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-commitreadoffset"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-commitreadoffset"}},[t._v("#")]),t._v(" FIFOInputStream::commitReadOffset")]),t._v(" "),e("p",[t._v("Commit read offset "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitReadOffset")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fifoinputstream-reservebytesupfront"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-reservebytesupfront"}},[t._v("#")]),t._v(" FIFOInputStream::reserveBytesUpfront")]),t._v(" "),e("p",[t._v("Reserve bytes for future writes. Check oatpp::data::stream::FIFOStream::availableToWrite for the capacity.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("reserveBytesUpfront")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-readandwritetostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-readandwritetostream"}},[t._v("#")]),t._v(" FIFOInputStream::readAndWriteToStream")]),t._v(" "),e("p",[t._v("call read and then write bytes read to output stream "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action ")]),e("li",[e("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readAndWriteToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-readfromstreamandwrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-readfromstreamandwrite"}},[t._v("#")]),t._v(" FIFOInputStream::readFromStreamAndWrite")]),t._v(" "),e("p",[t._v("call stream.read() and then write bytes read to buffer "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readFromStreamAndWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-flushtostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-flushtostream"}},[t._v("#")]),t._v(" FIFOInputStream::flushToStream")]),t._v(" "),e("p",[t._v("flush all availableToRead bytes to stream "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-flushtostreamasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-flushtostreamasync"}},[t._v("#")]),t._v(" FIFOInputStream::flushToStreamAsync")]),t._v(" "),e("p",[t._v("flush all availableToRead bytes to stream in asynchronous manner "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - data::stream::OutputStream. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - async::CoroutineStarter. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStreamAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fifoinputstream-availabletowrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fifoinputstream-availabletowrite"}},[t._v("#")]),t._v(" FIFOInputStream::availableToWrite")]),t._v(" "),e("p",[t._v("Amount of buffer space currently available for data writes. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/182.e55740b6.js b/docs/.vuepress/dist/assets/js/182.e55740b6.js deleted file mode 100644 index 3583685b3..000000000 --- a/docs/.vuepress/dist/assets/js/182.e55740b6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{553:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"filestream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#filestream-hpp"}},[t._v("#")]),t._v(" FileStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/stream/FileStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/stream/FileStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/data/stream/FileStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"fileinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream"}},[t._v("#")]),t._v(" FileInputStream")]),t._v(" "),e("p",[t._v("Wrapper over "),e("code",[t._v("std::FILE")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FileInputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" InputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-fileinputstream"}},[t._v("FileInputStream")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Move constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-~fileinputstream"}},[t._v("~FileInputStream")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::FILE*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-getfile"}},[t._v("getFile")])]),t._v(" "),e("td",[t._v("Get file.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read data from stream up to count bytes, and return number of bytes actually read. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileinputstream-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Close file.")])])])]),t._v(" "),e("h3",{attrs:{id:"fileinputstream-fileinputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-fileinputstream"}},[t._v("#")]),t._v(" FileInputStream::FileInputStream")]),t._v(" "),e("ol",[e("li",[t._v("Move constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FileInputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" file - file. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ownsFile - if "),e("code",[t._v("true")]),t._v(" then call close on "),e("code",[t._v("FileInputStream")]),t._v(" destruction. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FILE"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" file"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" ownsFile"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" filename - name of the file. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" filename"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"fileinputstream-fileinputstream-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-fileinputstream-2"}},[t._v("#")]),t._v(" FileInputStream::~FileInputStream")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileInputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fileinputstream-getfile"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-getfile"}},[t._v("#")]),t._v(" FileInputStream::getFile")]),t._v(" "),e("p",[t._v("Get file. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FILE"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getFile")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fileinputstream-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-read"}},[t._v("#")]),t._v(" FileInputStream::read")]),t._v(" "),e("p",[t._v("Read data from stream up to count bytes, and return number of bytes actually read. "),e("br"),t._v(" It is a legal case if return result < count. Caller should handle this! "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes read. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileinputstream-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-setinputstreamiomode"}},[t._v("#")]),t._v(" FileInputStream::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileinputstream-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-getinputstreamiomode"}},[t._v("#")]),t._v(" FileInputStream::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileinputstream-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-getinputstreamcontext"}},[t._v("#")]),t._v(" FileInputStream::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileinputstream-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileinputstream-close"}},[t._v("#")]),t._v(" FileInputStream::close")]),t._v(" "),e("p",[t._v("Close file.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"fileoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream"}},[t._v("#")]),t._v(" FileOutputStream")]),t._v(" "),e("p",[t._v("Wrapper over "),e("code",[t._v("std::FILE")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FileOutputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" OutputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-fileoutputstream"}},[t._v("FileOutputStream")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Move constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-~fileoutputstream"}},[t._v("~FileOutputStream")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::FILE*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-getfile"}},[t._v("getFile")])]),t._v(" "),e("td",[t._v("Get file.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write data to stream up to count bytes, and return number of bytes actually written. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get stream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#fileoutputstream-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Close file.")])])])]),t._v(" "),e("h3",{attrs:{id:"fileoutputstream-fileoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-fileoutputstream"}},[t._v("#")]),t._v(" FileOutputStream::FileOutputStream")]),t._v(" "),e("ol",[e("li",[t._v("Move constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" other ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FileOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" file - file. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ownsFile - if "),e("code",[t._v("true")]),t._v(" then call close on "),e("code",[t._v("FileInputStream")]),t._v(" destruction. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FILE"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" file"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" ownsFile"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" filename - name of the file. ")]),e("li",[e("strong",[t._v("@param")]),t._v(' mode - ("wb" - create new/override, "ab" - create new/append). ')]),e("li",[e("strong",[t._v("@param")]),t._v(" captureData - capture auxiliary data to not get deleted until it's done with the stream. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" filename"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" mode "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"wb"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" captureData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"fileoutputstream-fileoutputstream-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-fileoutputstream-2"}},[t._v("#")]),t._v(" FileOutputStream::~FileOutputStream")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("FileOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fileoutputstream-getfile"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-getfile"}},[t._v("#")]),t._v(" FileOutputStream::getFile")]),t._v(" "),e("p",[t._v("Get file. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FILE"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getFile")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"fileoutputstream-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-write"}},[t._v("#")]),t._v(" FileOutputStream::write")]),t._v(" "),e("p",[t._v("Write data to stream up to count bytes, and return number of bytes actually written. "),e("br"),t._v(" It is a legal case if return result < count. Caller should handle this! "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - data to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - number of bytes to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileoutputstream-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-setoutputstreamiomode"}},[t._v("#")]),t._v(" FileOutputStream::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@throws")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileoutputstream-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-getoutputstreamiomode"}},[t._v("#")]),t._v(" FileOutputStream::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Get stream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileoutputstream-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-getoutputstreamcontext"}},[t._v("#")]),t._v(" FileOutputStream::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"fileoutputstream-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fileoutputstream-close"}},[t._v("#")]),t._v(" FileOutputStream::close")]),t._v(" "),e("p",[t._v("Close file.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/183.0dbd9c33.js b/docs/.vuepress/dist/assets/js/183.0dbd9c33.js deleted file mode 100644 index 7e1e76104..000000000 --- a/docs/.vuepress/dist/assets/js/183.0dbd9c33.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{554:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"stream-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stream-hpp"}},[t._v("#")]),t._v(" Stream.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/stream/Stream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/stream/Stream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/data/stream/Stream.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"streamtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#streamtype"}},[t._v("#")]),t._v(" StreamType")]),t._v(" "),s("p",[t._v("Stream Type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StreamType")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v_int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"streamtype-stream-finite"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#streamtype-stream-finite"}},[t._v("#")]),t._v(" StreamType::STREAM_FINITE")]),t._v(" "),s("p",[t._v("Finite stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("STREAM_FINITE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"streamtype-stream-infinite"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#streamtype-stream-infinite"}},[t._v("#")]),t._v(" StreamType::STREAM_INFINITE")]),t._v(" "),s("p",[t._v("Infinite stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("STREAM_INFINITE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),s("h2",{attrs:{id:"context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[t._v("#")]),t._v(" Context")]),t._v(" "),s("p",[t._v("Stream Context.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Context")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::data::share::LazyStringMap")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-properties"}},[t._v("Properties")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[t._v("oatpp::data::share::LazyStringMap")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Properties&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-getmutableproperties"}},[t._v("getMutableProperties")])]),t._v(" "),s("td",[s("code",[t._v("protected")]),t._v(". Get mutable additional optional context specific properties.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-context"}},[t._v("Context")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-~context"}},[t._v("~Context")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-init"}},[t._v("init")])]),t._v(" "),s("td",[t._v("Initialize stream context.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-initasync"}},[t._v("initAsync")])]),t._v(" "),s("td",[t._v("Initialize stream context in an async manner.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-isinitialized"}},[t._v("isInitialized")])]),t._v(" "),s("td",[t._v("Check if the stream context is initialized.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("StreamType")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-getstreamtype"}},[t._v("getStreamType")])]),t._v(" "),s("td",[t._v("Get stream type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Properties&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#context-getproperties"}},[t._v("getProperties")])]),t._v(" "),s("td",[t._v("Additional optional context specific properties.")])])])]),t._v(" "),s("h3",{attrs:{id:"context-properties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-properties"}},[t._v("#")]),t._v(" Context::Properties")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[t._v("oatpp::data::share::LazyStringMap")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMap"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Properties\n")])])]),s("h3",{attrs:{id:"context-getmutableproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-getmutableproperties"}},[t._v("#")]),t._v(" Context::getMutableProperties")]),t._v(" "),s("p",[s("code",[t._v("protected")]),t._v(". Get mutable additional optional context specific properties. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#context-properties"}},[t._v("Context::Properties")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Properties"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMutableProperties")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-context"}},[t._v("#")]),t._v(" Context::Context")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Context")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" properties - "),s("a",{attrs:{href:"#context-properties"}},[t._v("Context::Properties")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Context")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Properties"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"context-context-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-context-2"}},[t._v("#")]),t._v(" Context::~Context")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Context")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-init"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-init"}},[t._v("#")]),t._v(" Context::init")]),t._v(" "),s("p",[t._v("Initialize stream context.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-initasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-initasync"}},[t._v("#")]),t._v(" Context::initAsync")]),t._v(" "),s("p",[t._v("Initialize stream context in an async manner. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("initAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-isinitialized"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-isinitialized"}},[t._v("#")]),t._v(" Context::isInitialized")]),t._v(" "),s("p",[t._v("Check if the stream context is initialized. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("bool")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isInitialized")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-getstreamtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-getstreamtype"}},[t._v("#")]),t._v(" Context::getStreamType")]),t._v(" "),s("p",[t._v("Get stream type. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#streamtype"}},[t._v("StreamType")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" StreamType "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStreamType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"context-getproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context-getproperties"}},[t._v("#")]),t._v(" Context::getProperties")]),t._v(" "),s("p",[t._v("Additional optional context specific properties. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#context-properties"}},[t._v("Context::Properties")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Properties"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperties")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"defaultinitializedcontext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext"}},[t._v("#")]),t._v(" DefaultInitializedContext")]),t._v(" "),s("p",[t._v("The default implementation for context with no initialization.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultInitializedContext")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#defaultinitializedcontext-defaultinitializedcontext"}},[t._v("DefaultInitializedContext")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#defaultinitializedcontext-init"}},[t._v("init")])]),t._v(" "),s("td",[t._v("Initialize stream context. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#defaultinitializedcontext-initasync"}},[t._v("initAsync")])]),t._v(" "),s("td",[t._v("Initialize stream context in an async manner.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#defaultinitializedcontext-isinitialized"}},[t._v("isInitialized")])]),t._v(" "),s("td",[t._v("Check if the stream context is initialized.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("StreamType")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#defaultinitializedcontext-getstreamtype"}},[t._v("getStreamType")])]),t._v(" "),s("td",[t._v("Get stream type.")])])])]),t._v(" "),s("h3",{attrs:{id:"defaultinitializedcontext-defaultinitializedcontext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext-defaultinitializedcontext"}},[t._v("#")]),t._v(" DefaultInitializedContext::DefaultInitializedContext")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" streamType - "),s("a",{attrs:{href:"#streamtype"}},[t._v("StreamType")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultInitializedContext")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("StreamType streamType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" streamType - "),s("a",{attrs:{href:"#streamtype"}},[t._v("StreamType")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" properties - "),s("a",{attrs:{href:"#context-properties"}},[t._v("Context::Properties")]),t._v(". ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultInitializedContext")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("StreamType streamType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Properties"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"defaultinitializedcontext-init"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext-init"}},[t._v("#")]),t._v(" DefaultInitializedContext::init")]),t._v(" "),s("p",[t._v("Initialize stream context. "),s("br"),t._v(" "),s("em",[t._v("This particular implementation does nothing.")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"defaultinitializedcontext-initasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext-initasync"}},[t._v("#")]),t._v(" DefaultInitializedContext::initAsync")]),t._v(" "),s("p",[t._v("Initialize stream context in an async manner. "),s("em",[t._v("This particular implementation does nothing.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("initAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"defaultinitializedcontext-isinitialized"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext-isinitialized"}},[t._v("#")]),t._v(" DefaultInitializedContext::isInitialized")]),t._v(" "),s("p",[t._v("Check if the stream context is initialized. "),s("em",[t._v("This particular implementation always returns "),s("code",[t._v("true")]),t._v(".")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("bool")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isInitialized")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"defaultinitializedcontext-getstreamtype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#defaultinitializedcontext-getstreamtype"}},[t._v("#")]),t._v(" DefaultInitializedContext::getStreamType")]),t._v(" "),s("p",[t._v("Get stream type. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#streamtype"}},[t._v("StreamType")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("StreamType "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStreamType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),s("h2",{attrs:{id:"iomode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iomode"}},[t._v("#")]),t._v(" IOMode")]),t._v(" "),s("p",[t._v("Stream I/O mode.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOMode")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v_int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"iomode-blocking"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iomode-blocking"}},[t._v("#")]),t._v(" IOMode::BLOCKING")]),t._v(" "),s("p",[t._v("Blocking stream I/O mode.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("BLOCKING "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"iomode-asynchronous"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iomode-asynchronous"}},[t._v("#")]),t._v(" IOMode::ASYNCHRONOUS")]),t._v(" "),s("p",[t._v("Non-blocking stream I/O mode.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("ASYNCHRONOUS "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),s("h2",{attrs:{id:"writecallback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writecallback"}},[t._v("#")]),t._v(" WriteCallback")]),t._v(" "),s("p",[t._v("Callback for stream write operation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WriteCallback")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#writecallback-~writecallback"}},[t._v("~WriteCallback")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#writecallback-write"}},[t._v("write")])]),t._v(" "),s("td",[t._v("Write operation callback.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#writecallback-writesimple"}},[t._v("writeSimple")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Same as "),s("code",[t._v("write((p_char8)data, std::strlen(data));")]),t._v(". ")]),s("li",[t._v("Same as "),s("code",[t._v("write(str->getData(), str->getSize());")])])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#writecallback-writecharsimple"}},[t._v("writeCharSimple")])]),t._v(" "),s("td",[t._v("Same as "),s("code",[t._v("write(c, 1);")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"writecallback-writecallback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writecallback-writecallback"}},[t._v("#")]),t._v(" WriteCallback::~WriteCallback")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteCallback")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"writecallback-write"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writecallback-write"}},[t._v("#")]),t._v(" WriteCallback::write")]),t._v(" "),s("p",[t._v("Write operation callback. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" count - size of the data in bytes. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. 0 - to indicate end-of-file. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"writecallback-writesimple"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writecallback-writesimple"}},[t._v("#")]),t._v(" WriteCallback::writeSimple")]),t._v(" "),s("ol",[s("li",[t._v("Same as "),s("code",[t._v("write((p_char8)data, std::strlen(data));")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - data to write. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeSimple")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Same as "),s("code",[t._v("write(str->getData(), str->getSize());")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" str - data to write. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeSimple")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"writecallback-writecharsimple"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writecallback-writecharsimple"}},[t._v("#")]),t._v(" WriteCallback::writeCharSimple")]),t._v(" "),s("p",[t._v("Same as "),s("code",[t._v("write(c, 1);")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c - one char to write. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeCharSimple")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"outputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#outputstream"}},[t._v("#")]),t._v(" OutputStream")]),t._v(" "),s("p",[t._v("Output Stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OutputStream")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" WriteCallback "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#outputstream-~outputstream"}},[t._v("~OutputStream")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#outputstream-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),s("td",[t._v("Set stream I/O mode.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("IOMode")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#outputstream-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),s("td",[t._v("Get stream I/O mode.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Context&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#outputstream-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),s("td",[t._v("Get stream context.")])])])]),t._v(" "),s("h3",{attrs:{id:"outputstream-outputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#outputstream-outputstream"}},[t._v("#")]),t._v(" OutputStream::~OutputStream")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OutputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"outputstream-setoutputstreamiomode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#outputstream-setoutputstreamiomode"}},[t._v("#")]),t._v(" OutputStream::setOutputStreamIOMode")]),t._v(" "),s("p",[t._v("Set stream I/O mode. "),s("ul",[s("li",[s("strong",[t._v("@throws")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"outputstream-getoutputstreamiomode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#outputstream-getoutputstreamiomode"}},[t._v("#")]),t._v(" OutputStream::getOutputStreamIOMode")]),t._v(" "),s("p",[t._v("Get stream I/O mode. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" IOMode "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"outputstream-getoutputstreamcontext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#outputstream-getoutputstreamcontext"}},[t._v("#")]),t._v(" OutputStream::getOutputStreamContext")]),t._v(" "),s("p",[t._v("Get stream context. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#context"}},[t._v("Context")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Context"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"readcallback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#readcallback"}},[t._v("#")]),t._v(" ReadCallback")]),t._v(" "),s("p",[t._v("Stream read callback.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ReadCallback")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#readcallback-~readcallback"}},[t._v("~ReadCallback")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#readcallback-read"}},[t._v("read")])]),t._v(" "),s("td",[t._v("Read operation callback.")])])])]),t._v(" "),s("h3",{attrs:{id:"readcallback-readcallback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#readcallback-readcallback"}},[t._v("#")]),t._v(" ReadCallback::~ReadCallback")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ReadCallback")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"readcallback-read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#readcallback-read"}},[t._v("#")]),t._v(" ReadCallback::read")]),t._v(" "),s("p",[t._v("Read operation callback. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"inputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#inputstream"}},[t._v("#")]),t._v(" InputStream")]),t._v(" "),s("p",[t._v("Input Stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("InputStream")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ReadCallback "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-6"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#inputstream-~inputstream"}},[t._v("~InputStream")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#inputstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),s("td",[t._v("Set stream I/O mode.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("IOMode")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#inputstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),s("td",[t._v("Get stream I/O mode.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Context&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#inputstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),s("td",[t._v("Get stream context.")])])])]),t._v(" "),s("h3",{attrs:{id:"inputstream-inputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#inputstream-inputstream"}},[t._v("#")]),t._v(" InputStream::~InputStream")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("InputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"inputstream-setinputstreamiomode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#inputstream-setinputstreamiomode"}},[t._v("#")]),t._v(" InputStream::setInputStreamIOMode")]),t._v(" "),s("p",[t._v("Set stream I/O mode. "),s("ul",[s("li",[s("strong",[t._v("@throws")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"inputstream-getinputstreamiomode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#inputstream-getinputstreamiomode"}},[t._v("#")]),t._v(" InputStream::getInputStreamIOMode")]),t._v(" "),s("p",[t._v("Get stream I/O mode. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" IOMode "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"inputstream-getinputstreamcontext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#inputstream-getinputstreamcontext"}},[t._v("#")]),t._v(" InputStream::getInputStreamContext")]),t._v(" "),s("p",[t._v("Get stream context. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("a",{attrs:{href:"#context"}},[t._v("Context")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" Context"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"bufferedinputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bufferedinputstream"}},[t._v("#")]),t._v(" BufferedInputStream")]),t._v(" "),s("p",[t._v("Buffered Input Stream")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BufferedInputStream")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" InputStream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-7"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#bufferedinputstream-~bufferedinputstream"}},[t._v("~BufferedInputStream")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#bufferedinputstream-peek"}},[t._v("peek")])]),t._v(" "),s("td",[t._v("Peek up to count of bytes int he buffer")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#bufferedinputstream-availabletoread"}},[t._v("availableToRead")])]),t._v(" "),s("td",[t._v("Amount of bytes currently available to read from buffer.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#bufferedinputstream-commitreadoffset"}},[t._v("commitReadOffset")])]),t._v(" "),s("td",[t._v("Commit read offset")])])])]),t._v(" "),s("h3",{attrs:{id:"bufferedinputstream-bufferedinputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bufferedinputstream-bufferedinputstream"}},[t._v("#")]),t._v(" BufferedInputStream::~BufferedInputStream")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BufferedInputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"bufferedinputstream-peek"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bufferedinputstream-peek"}},[t._v("#")]),t._v(" BufferedInputStream::peek")]),t._v(" "),s("p",[t._v("Peek up to count of bytes int he buffer "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data ")]),s("li",[s("strong",[t._v("@param")]),t._v(" count ")]),s("li",[s("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("peek")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"bufferedinputstream-availabletoread"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bufferedinputstream-availabletoread"}},[t._v("#")]),t._v(" BufferedInputStream::availableToRead")]),t._v(" "),s("p",[t._v("Amount of bytes currently available to read from buffer. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("availableToRead")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"bufferedinputstream-commitreadoffset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bufferedinputstream-commitreadoffset"}},[t._v("#")]),t._v(" BufferedInputStream::commitReadOffset")]),t._v(" "),s("p",[t._v("Commit read offset "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" count ")]),s("li",[s("strong",[t._v("@return")]),t._v(" [1..count], IOErrors. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitReadOffset")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size count"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"iostream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iostream"}},[t._v("#")]),t._v(" IOStream")]),t._v(" "),s("p",[t._v("I/O Stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("IOStream")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" InputStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" OutputStream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-8"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#iostream-initcontexts"}},[t._v("initContexts")])]),t._v(" "),s("td",[t._v("Init input/output stream contexts.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#iostream-initcontextsasync"}},[t._v("initContextsAsync")])]),t._v(" "),s("td",[t._v("Init input/output stream contexts in an async manner.")])])])]),t._v(" "),s("h3",{attrs:{id:"iostream-initcontexts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iostream-initcontexts"}},[t._v("#")]),t._v(" IOStream::initContexts")]),t._v(" "),s("p",[t._v("Init input/output stream contexts.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("initContexts")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"iostream-initcontextsasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iostream-initcontextsasync"}},[t._v("#")]),t._v(" IOStream::initContextsAsync")]),t._v(" "),s("p",[t._v("Init input/output stream contexts in an async manner.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("initContextsAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"consistentoutputstream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consistentoutputstream"}},[t._v("#")]),t._v(" ConsistentOutputStream")]),t._v(" "),s("p",[t._v("Streams that guarantee data to be written in exact amount as specified in call to "),s("a",{attrs:{href:"#outputstream-write"}},[t._v("OutputStream::write()")]),t._v(" should extend this class.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConsistentOutputStream")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" OutputStream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-9"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("v_io_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#consistentoutputstream-writeasstring"}},[t._v("writeAsString")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")]),s("li",[t._v("Convert value to string and write to stream. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"consistentoutputstream-writeasstring"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consistentoutputstream-writeasstring"}},[t._v("#")]),t._v(" ConsistentOutputStream::writeAsString")]),t._v(" "),s("ol",[s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int8 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint8 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int16 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint16 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint64 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float32 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float64 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("ol",{attrs:{start:"11"}},[s("li",[t._v("Convert value to string and write to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),s("br")],1)])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeAsString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"asynctransfererror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#asynctransfererror"}},[t._v("#")]),t._v(" AsyncTransferError")]),t._v(" "),s("p",[t._v("Error of Asynchronous stream transfer.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncTransferError")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Error "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-10"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#asynctransfererror-asynctransfererror"}},[t._v("AsyncTransferError")])]),t._v(" "),s("td",[t._v("Constructor.")])])])]),t._v(" "),s("h3",{attrs:{id:"asynctransfererror-asynctransfererror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#asynctransfererror-asynctransfererror"}},[t._v("#")]),t._v(" AsyncTransferError::AsyncTransferError")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" what ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncTransferError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" what"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("what"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"statelessdatatransferprocessor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statelessdatatransferprocessor"}},[t._v("#")]),t._v(" StatelessDataTransferProcessor")]),t._v(" "),s("p",[t._v("Plain data transfer processor. Transfers data as is.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" stream "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StatelessDataTransferProcessor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"transfer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transfer"}},[t._v("#")]),t._v(" transfer")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::stream")])]),t._v(" "),s("p",[t._v("Transfer data from "),s("code",[t._v("readCallback")]),t._v(" to "),s("code",[t._v("writeCallback")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" readCallback - "),s("a",{attrs:{href:"#readcallback"}},[t._v("ReadCallback")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" writeCallback - "),s("a",{attrs:{href:"#writecallback"}},[t._v("WriteCallback")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" transferSize - how much data should be read from the "),s("code",[t._v("readCallback")]),t._v(". "),s("code",[t._v("0")]),t._v(" - to read until error. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer used to do the transfer by chunks. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" bufferSize - size of the buffer. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" processor - data processing to be applied during the transfer. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - the actual amout of bytes read from the "),s("code",[t._v("readCallback")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_io_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transfer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ReadCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" readCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("WriteCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_io_size transferSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size bufferSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" processor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("StatelessDataTransferProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("INSTANCE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"transferasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transferasync"}},[t._v("#")]),t._v(" transferAsync")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::data::stream")])]),t._v(" "),s("p",[t._v("Transfer data from "),s("code",[t._v("readCallback")]),t._v(" to "),s("code",[t._v("writeCallback")]),t._v(" in Async manner. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" readCallback - "),s("a",{attrs:{href:"#readcallback"}},[t._v("ReadCallback")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" writeCallback - "),s("a",{attrs:{href:"#writecallback"}},[t._v("WriteCallback")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" transferSize - how much data should be read from the "),s("code",[t._v("readCallback")]),t._v(". "),s("code",[t._v("0")]),t._v(" - to read until error. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" buffer - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/IOBuffer/#iobuffer"}},[t._v("oatpp::data::buffer::IOBuffer")]),t._v(" used to do the transfer by chunks. ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" processor - data processing to be applied during the transfer. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ReadCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" readCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("WriteCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_buff_size transferSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOBuffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" processor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("StatelessDataTransferProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("INSTANCE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/184.67e04988.js b/docs/.vuepress/dist/assets/js/184.67e04988.js deleted file mode 100644 index b858073db..000000000 --- a/docs/.vuepress/dist/assets/js/184.67e04988.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{556:function(e,t,r){"use strict";r.r(t);var o=r(42),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"streambufferedproxy-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streambufferedproxy-hpp"}},[e._v("#")]),e._v(" StreamBufferedProxy.hpp"),r("seo")],1),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/data/stream/StreamBufferedProxy.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),r("OutboundLink")],1),r("br"),e._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/data/stream/StreamBufferedProxy.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),r("OutboundLink")],1)]),e._v(" "),r("p",[r("code",[e._v("API: latest")]),r("br"),e._v(" "),r("code",[e._v("module: oatpp")]),r("br"),e._v(" "),r("code",[e._v('#include "oatpp/core/data/stream/StreamBufferedProxy.hpp"')])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/185.0d872dd1.js b/docs/.vuepress/dist/assets/js/185.0d872dd1.js deleted file mode 100644 index c6dc1c695..000000000 --- a/docs/.vuepress/dist/assets/js/185.0d872dd1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{557:function(e,t,o){"use strict";o.r(t);var r=o(42),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"basic-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#basic-hpp"}},[e._v("#")]),e._v(" basic.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/macro/basic.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/macro/basic.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/core/macro/basic.hpp"')])]),e._v(" "),o("p",[e._v("This file contains source code for basic helper macros used for code-generator.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/186.f91825a1.js b/docs/.vuepress/dist/assets/js/186.f91825a1.js deleted file mode 100644 index 4e7fef7ae..000000000 --- a/docs/.vuepress/dist/assets/js/186.f91825a1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{558:function(e,o,t){"use strict";t.r(o);var r=t(42),n=Object(r.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"codegen-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codegen-hpp"}},[e._v("#")]),e._v(" codegen.hpp"),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/macro/codegen.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),t("OutboundLink")],1),t("br"),e._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/macro/codegen.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("code",[e._v("API: latest")]),t("br"),e._v(" "),t("code",[e._v("module: oatpp")]),t("br"),e._v(" "),t("code",[e._v('#include "oatpp/core/macro/codegen.hpp"')])]),e._v(" "),t("p",[e._v("This file contains source code for "),t("code",[e._v("OATPP_CODEGEN_BEGIN(NAME)")]),e._v(" and "),t("code",[e._v("OATPP_CODEGEN_END(NAME)")]),e._v(" macros. "),t("br"),e._v(" "),t("br"),e._v("\nMore about use of "),t("code",[e._v("OATPP_CODEGEN_BEGIN")]),e._v(" and "),t("code",[e._v("OATPP_CODEGEN_BEGIN")]),e._v(" see: "),t("br"),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://oatpp.io/docs/components/api-controller/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ApiController component"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://oatpp.io/docs/components/api-client/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ApiClient component"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Transfer Object(DTO) component"),t("OutboundLink")],1)])])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/187.34968043.js b/docs/.vuepress/dist/assets/js/187.34968043.js deleted file mode 100644 index ade0f4f1d..000000000 --- a/docs/.vuepress/dist/assets/js/187.34968043.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{559:function(e,t,a){"use strict";a.r(t);var o=a(42),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"component-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#component-hpp"}},[e._v("#")]),e._v(" component.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/macro/component.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/macro/component.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/core/macro/component.hpp"')])]),e._v(" "),a("p",[e._v("This file contains source code for "),a("code",[e._v("OATPP_CREATE_COMPONENT")]),e._v(" and "),a("code",[e._v("OATPP_COMPONENT")]),e._v(" macros which are part of\noatpp Dependency Injection (DI) framework. "),a("br"),e._v(" "),a("br"),e._v("\nFor usage examples see example-projects:\n"),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[e._v("CRUD - example"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/example-hls-media-stream",target:"_blank",rel:"noopener noreferrer"}},[e._v("HLS Media Stream - example"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/example-async-api",target:"_blank",rel:"noopener noreferrer"}},[e._v("Async API - example"),a("OutboundLink")],1)])])]),e._v(" "),a("h2",{attrs:{id:"oatpp-component"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-component"}},[e._v("#")]),e._v(" OATPP_COMPONENT")]),e._v(" "),a("p",[e._v("Inject component. Create variable of type=TYPE and name=NAME and assign registered component to it. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" TYPE - type of the component. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" NAME - name of the variable. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" QUALIFIER_NAME - qualifier name is needed if there are multiple components registered of the same type. If there is one component registered only then TYPE info is enought to search for component. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" OATPP_COMPONENT(TYPE, ...)")]),e._v("\n")])])]),a("h2",{attrs:{id:"oatpp-create-component"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-create-component"}},[e._v("#")]),e._v(" OATPP_CREATE_COMPONENT")]),e._v(" "),a("p",[e._v("Create component that then can be injected in other application classes. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" TYPE - type of the component. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" NAME - name of the component field. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[e._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" OATPP_CREATE_COMPONENT(TYPE, NAME)")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/188.ecb1ce26.js b/docs/.vuepress/dist/assets/js/188.ecb1ce26.js deleted file mode 100644 index 65ed73ece..000000000 --- a/docs/.vuepress/dist/assets/js/188.ecb1ce26.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{560:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"caret-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-hpp"}},[t._v("#")]),t._v(" Caret.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/parser/Caret.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/parser/Caret.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/parser/Caret.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"caret"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret"}},[t._v("#")]),t._v(" Caret")]),t._v(" "),s("p",[t._v("Helper class to do parsing operations")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Caret")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-getdata"}},[t._v("getData")])]),t._v(" "),s("td",[t._v("Get pointer to a data, passed to Caret constructor")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-getcurrdata"}},[t._v("getCurrData")])]),t._v(" "),s("td",[t._v("Same as getData()[position]")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-getdatasize"}},[t._v("getDataSize")])]),t._v(" "),s("td",[t._v("Get size of a data")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-getdatamemoryhandle"}},[t._v("getDataMemoryHandle")])]),t._v(" "),s("td",[t._v("Get data memoryHandle.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-setposition"}},[t._v("setPosition")])]),t._v(" "),s("td",[t._v("Set caret position relative to data")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-getposition"}},[t._v("getPosition")])]),t._v(" "),s("td",[t._v("Get caret position relative to data")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-seterror"}},[t._v("setError")])]),t._v(" "),s("td",[t._v("Set error message and error code.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-geterrormessage"}},[t._v("getErrorMessage")])]),t._v(" "),s("td",[t._v("Get error message")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-geterrorcode"}},[t._v("getErrorCode")])]),t._v(" "),s("td",[t._v("Get error code")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-haserror"}},[t._v("hasError")])]),t._v(" "),s("td",[t._v("Check if error is set for the Caret")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-clearerror"}},[t._v("clearError")])]),t._v(" "),s("td",[t._v("Clear error message and error code")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Label")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-putlabel"}},[t._v("putLabel")])]),t._v(" "),s("td",[t._v("Create Label(this);")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-inc"}},[t._v("inc")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Increase caret position by one ")]),s("li",[t._v("Increase caret position by amount ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skipblankchars"}},[t._v("skipBlankChars")])]),t._v(" "),s("td",[t._v("Skip chars: [' ', '\\t', '\\n', '\\r','\\f']")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skipchar"}},[t._v("skipChar")])]),t._v(" "),s("td",[t._v("Skip char")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-findchar"}},[t._v("findChar")])]),t._v(" "),s("td",[t._v("Find char. Position will be set to a found char. If")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skipcharsfromset"}},[t._v("skipCharsFromSet")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Skip chars defined by set. ")]),s("li",[t._v("Skip chars defined by set. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-findcharfromset"}},[t._v("findCharFromSet")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Find one of chars defined by set. ")]),s("li",[t._v("Find one of chars defined by set. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-findrn"}},[t._v("findRN")])]),t._v(" "),s("td",[t._v('Find "\\r\\n" chars')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skiprn"}},[t._v("skipRN")])]),t._v(" "),s("td",[t._v('Skip "\\r\\n"')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isatrn"}},[t._v("isAtRN")])]),t._v(" "),s("td",[t._v('Check if caret at "\\r\\n" chars')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-findrorn"}},[t._v("findROrN")])]),t._v(" "),s("td",[t._v("Find '\\r' char of '\\n' char")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skiprnorn"}},[t._v("skipRNOrN")])]),t._v(" "),s("td",[t._v('if at "\\r\\n" - skip.')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-skipallrsandns"}},[t._v("skipAllRsAndNs")])]),t._v(" "),s("td",[t._v("skip any sequence of '\\r' and '\\n'")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-parseint"}},[t._v("parseInt")])]),t._v(" "),s("td",[t._v("parse integer value starting from the current position.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_uint64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-parseunsignedint"}},[t._v("parseUnsignedInt")])]),t._v(" "),s("td",[t._v("parse integer value starting from the current position.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_float32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-parsefloat32"}},[t._v("parseFloat32")])]),t._v(" "),s("td",[t._v("parse float value starting from the current position.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_float64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-parsefloat64"}},[t._v("parseFloat64")])]),t._v(" "),s("td",[t._v("parse float value starting from the current position.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isattext"}},[t._v("isAtText")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Check if follows text ")]),s("li",[t._v("Check if follows text ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isattextncs"}},[t._v("isAtTextNCS")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Check if follows text (Not Case Sensitive) ")]),s("li",[t._v("Check if follows text (Not Case Sensitive) ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Label")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-parsestringenclosed"}},[t._v("parseStringEnclosed")])]),t._v(" "),s("td",[t._v("Parse enclosed string.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-findtext"}},[t._v("findText")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Find text and set position to found text ")]),s("li",[t._v("Find text and set position to found text ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isatcharfromset"}},[t._v("isAtCharFromSet")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Check if caret is at char defined by set ")]),s("li",[t._v("Check if caret is at char defined by set ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isatchar"}},[t._v("isAtChar")])]),t._v(" "),s("td",[t._v("Check if caret is at char")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isatblankchar"}},[t._v("isAtBlankChar")])]),t._v(" "),s("td",[t._v("Check if caret is at one of chars [' ', '\\t', '\\n', '\\r','\\f']")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-isatdigitchar"}},[t._v("isAtDigitChar")])]),t._v(" "),s("td",[t._v("Check if caret is at digit")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-cancontinueatchar"}},[t._v("canContinueAtChar")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Check if caret is at char, and no error is set ")]),s("li",[t._v("Check if caret is at char, and no error is set. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-cancontinue"}},[t._v("canContinue")])]),t._v(" "),s("td",[t._v("Check if caret position < dataSize and not error is set")])])])]),t._v(" "),s("h3",{attrs:{id:"caret-getdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-getdata"}},[t._v("#")]),t._v(" Caret::getData")]),t._v(" "),s("p",[t._v("Get pointer to a data, passed to Caret constructor "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-getcurrdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-getcurrdata"}},[t._v("#")]),t._v(" Caret::getCurrData")]),t._v(" "),s("p",[t._v("Same as getData()[position] "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCurrData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-getdatasize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-getdatasize"}},[t._v("#")]),t._v(" Caret::getDataSize")]),t._v(" "),s("p",[t._v("Get size of a data "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDataSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-getdatamemoryhandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-getdatamemoryhandle"}},[t._v("#")]),t._v(" Caret::getDataMemoryHandle")]),t._v(" "),s("p",[t._v("Get data memoryHandle. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDataMemoryHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-setposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-setposition"}},[t._v("#")]),t._v(" Caret::setPosition")]),t._v(" "),s("p",[t._v("Set caret position relative to data "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" position ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size position"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-getposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-getposition"}},[t._v("#")]),t._v(" Caret::getPosition")]),t._v(" "),s("p",[t._v("Get caret position relative to data "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-seterror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-seterror"}},[t._v("#")]),t._v(" Caret::setError")]),t._v(" "),s("p",[t._v("Set error message and error code. Note that once error message is set, methods canContinue... will return false "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" errorMessage ")]),s("li",[s("strong",[t._v("@param")]),t._v(" errorCode ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" errorMessage"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 errorCode "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-geterrormessage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-geterrormessage"}},[t._v("#")]),t._v(" Caret::getErrorMessage")]),t._v(" "),s("p",[t._v("Get error message "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" error message ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getErrorMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-geterrorcode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-geterrorcode"}},[t._v("#")]),t._v(" Caret::getErrorCode")]),t._v(" "),s("p",[t._v("Get error code "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" error code ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getErrorCode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-haserror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-haserror"}},[t._v("#")]),t._v(" Caret::hasError")]),t._v(" "),s("p",[t._v("Check if error is set for the Caret "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("hasError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-clearerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-clearerror"}},[t._v("#")]),t._v(" Caret::clearError")]),t._v(" "),s("p",[t._v("Clear error message and error code")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("clearError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-putlabel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-putlabel"}},[t._v("#")]),t._v(" Caret::putLabel")]),t._v(" "),s("p",[t._v("Create Label(this); "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" Label ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Label "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putLabel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-inc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-inc"}},[t._v("#")]),t._v(" Caret::inc")]),t._v(" "),s("ol",[s("li",[t._v("Increase caret position by one"),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inc")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Increase caret position by amount "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" amount ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inc")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_buff_size amount"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-skipblankchars"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skipblankchars"}},[t._v("#")]),t._v(" Caret::skipBlankChars")]),t._v(" "),s("p",[t._v("Skip chars: [' ', '\\t', '\\n', '\\r','\\f'] "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" true if other char found ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipBlankChars")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-skipchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skipchar"}},[t._v("#")]),t._v(" Caret::skipChar")]),t._v(" "),s("p",[t._v("Skip char "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if other char found ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-findchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-findchar"}},[t._v("#")]),t._v(" Caret::findChar")]),t._v(" "),s("p",[t._v("Find char. Position will be set to a found char. If no such char found - position will be set to a dataSize; "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if found ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-skipcharsfromset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skipcharsfromset"}},[t._v("#")]),t._v(" Caret::skipCharsFromSet")]),t._v(" "),s("ol",[s("li",[t._v("Skip chars defined by set. ex. skipCharsFromSet(\"abc\") - will skip all 'a', 'b', 'c' chars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if other char found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipCharsFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Skip chars defined by set. ex. skipCharsFromSet(\"abc\", 3) - will skip all 'a', 'b', 'c' chars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@param")]),t._v(" setSize ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if other char found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipCharsFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size setSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-findcharfromset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-findcharfromset"}},[t._v("#")]),t._v(" Caret::findCharFromSet")]),t._v(" "),s("ol",[s("li",[t._v("Find one of chars defined by set. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@return")]),t._v(" char found or -1 if no char found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findCharFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Find one of chars defined by set. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@param")]),t._v(" setSize ")]),s("li",[s("strong",[t._v("@return")]),t._v(" char found or -1 if no char found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findCharFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size setSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-findrn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-findrn"}},[t._v("#")]),t._v(" Caret::findRN")]),t._v(" "),s("p",[t._v('Find "\\r\\n" chars '),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" true if found ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findRN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-skiprn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skiprn"}},[t._v("#")]),t._v(" Caret::skipRN")]),t._v(" "),s("p",[t._v('Skip "\\r\\n" '),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(' True if position changes. False if caret not at "\\r\\n" ')])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipRN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-isatrn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isatrn"}},[t._v("#")]),t._v(" Caret::isAtRN")]),t._v(" "),s("p",[t._v('Check if caret at "\\r\\n" chars '),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtRN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-findrorn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-findrorn"}},[t._v("#")]),t._v(" Caret::findROrN")]),t._v(" "),s("p",[t._v("Find '\\r' char of '\\n' char "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" true if found '\\r' or '\\n' ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findROrN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-skiprnorn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skiprnorn"}},[t._v("#")]),t._v(" Caret::skipRNOrN")]),t._v(" "),s("p",[t._v('if at "\\r\\n" - skip. if at "\\n" - skip. '),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" true if position changed ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipRNOrN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-skipallrsandns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-skipallrsandns"}},[t._v("#")]),t._v(" Caret::skipAllRsAndNs")]),t._v(" "),s("p",[t._v("skip any sequence of '\\r' and '\\n' "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" true if position changed ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("skipAllRsAndNs")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-parseint"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-parseint"}},[t._v("#")]),t._v(" Caret::parseInt")]),t._v(" "),s("p",[t._v("parse integer value starting from the current position. Using function std::strtol() Warning: position may go out of Caret::getSize() bound. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" base - base is passed to std::strtol function ")]),s("li",[s("strong",[t._v("@return")]),t._v(" parsed value ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseInt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" base "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-parseunsignedint"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-parseunsignedint"}},[t._v("#")]),t._v(" Caret::parseUnsignedInt")]),t._v(" "),s("p",[t._v("parse integer value starting from the current position. Using function std::strtoul() Warning: position may go out of Caret::getSize() bound. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" base - base is passed to std::strtoul function ")]),s("li",[s("strong",[t._v("@return")]),t._v(" parsed value ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_uint64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseUnsignedInt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" base "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-parsefloat32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-parsefloat32"}},[t._v("#")]),t._v(" Caret::parseFloat32")]),t._v(" "),s("p",[t._v("parse float value starting from the current position. Using function std::strtof() Warning: position may go out of Caret::getSize() bound. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" parsed value ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_float32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseFloat32")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-parsefloat64"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-parsefloat64"}},[t._v("#")]),t._v(" Caret::parseFloat64")]),t._v(" "),s("p",[t._v("parse float value starting from the current position. Using function std::strtod() Warning: position may go out of Caret::getSize() bound. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" parsed value ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_float64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseFloat64")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-isattext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isattext"}},[t._v("#")]),t._v(" Caret::isAtText")]),t._v(" "),s("ol",[s("li",[t._v("Check if follows text "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@param")]),t._v(" skipIfTrue - increase position if true ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" skipIfTrue "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Check if follows text "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@param")]),t._v(" textSize ")]),s("li",[s("strong",[t._v("@param")]),t._v(" skipIfTrue - increase position if true ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size textSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" skipIfTrue "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-isattextncs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isattextncs"}},[t._v("#")]),t._v(" Caret::isAtTextNCS")]),t._v(" "),s("ol",[s("li",[t._v("Check if follows text (Not Case Sensitive) "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@param")]),t._v(" skipIfTrue - increase position if true ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtTextNCS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" skipIfTrue "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Check if follows text (Not Case Sensitive) "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@param")]),t._v(" textSize ")]),s("li",[s("strong",[t._v("@param")]),t._v(" skipIfTrue - increase position if true ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtTextNCS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size textSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" skipIfTrue "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-parsestringenclosed"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-parsestringenclosed"}},[t._v("#")]),t._v(" Caret::parseStringEnclosed")]),t._v(" "),s("p",[t._v("Parse enclosed string. ex. for data \"'let's go'\" parseStringEnclosed(''', ''', '\\') will return Label to \"let's go\" without enclosing ''' chars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" openChar ")]),s("li",[s("strong",[t._v("@param")]),t._v(" closeChar ")]),s("li",[s("strong",[t._v("@param")]),t._v(" escapeChar ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Label "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseStringEnclosed")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" openChar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" closeChar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" escapeChar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-findtext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-findtext"}},[t._v("#")]),t._v(" Caret::findText")]),t._v(" "),s("ol",[s("li",[t._v("Find text and set position to found text "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Find text and set position to found text "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" text ")]),s("li",[s("strong",[t._v("@param")]),t._v(" textSize ")]),s("li",[s("strong",[t._v("@return")]),t._v(" true if found ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("findText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size textSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-isatcharfromset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isatcharfromset"}},[t._v("#")]),t._v(" Caret::isAtCharFromSet")]),t._v(" "),s("ol",[s("li",[t._v("Check if caret is at char defined by set ex. isAtCharFromSet(\"abc\") - will return true for 'a', 'b', 'c' chars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtCharFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Check if caret is at char defined by set ex. isAtCharFromSet(\"abc\", 3) - will return true for 'a', 'b', 'c' chars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" set ")]),s("li",[s("strong",[t._v("@param")]),t._v(" setSize ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtCharFromSet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" set"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size setSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-isatchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isatchar"}},[t._v("#")]),t._v(" Caret::isAtChar")]),t._v(" "),s("p",[t._v("Check if caret is at char "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-isatblankchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isatblankchar"}},[t._v("#")]),t._v(" Caret::isAtBlankChar")]),t._v(" "),s("p",[t._v("Check if caret is at one of chars [' ', '\\t', '\\n', '\\r','\\f'] "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtBlankChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-isatdigitchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-isatdigitchar"}},[t._v("#")]),t._v(" Caret::isAtDigitChar")]),t._v(" "),s("p",[t._v("Check if caret is at digit "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isAtDigitChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-cancontinueatchar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-cancontinueatchar"}},[t._v("#")]),t._v(" Caret::canContinueAtChar")]),t._v(" "),s("ol",[s("li",[t._v("Check if caret is at char, and no error is set "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("canContinueAtChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Check if caret is at char, and no error is set. If true inc position by skipChars "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" c ")]),s("li",[s("strong",[t._v("@param")]),t._v(" skipChars ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("canContinueAtChar")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size skipChars"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"caret-cancontinue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-cancontinue"}},[t._v("#")]),t._v(" Caret::canContinue")]),t._v(" "),s("p",[t._v("Check if caret position < dataSize and not error is set "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("canContinue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"caret-label"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label"}},[t._v("#")]),t._v(" Caret::Label")]),t._v(" "),s("p",[t._v("Class to label parsing data.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Caret")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Label")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-label"}},[t._v("Label")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-start"}},[t._v("start")])]),t._v(" "),s("td",[t._v("Set current caret position as a starting point for label.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-end"}},[t._v("end")])]),t._v(" "),s("td",[t._v("Fix current caret position as an end point for label.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-getdata"}},[t._v("getData")])]),t._v(" "),s("td",[t._v("Get pointer to a labeled data.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-getsize"}},[t._v("getSize")])]),t._v(" "),s("td",[t._v("Get size of labeled data.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-getstartposition"}},[t._v("getStartPosition")])]),t._v(" "),s("td",[t._v("Get start position of the label.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-getendposition"}},[t._v("getEndPosition")])]),t._v(" "),s("td",[t._v("Get end position of the label.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-tostring"}},[t._v("toString")])]),t._v(" "),s("td",[t._v("Same as"),s("code",[t._v("toString(true).")])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-label-std-str"}},[t._v("std_str")])]),t._v(" "),s("td",[t._v("Create "),s("code",[t._v("std::string")]),t._v(" from labeled data.")])])])]),t._v(" "),s("h3",{attrs:{id:"caret-label-label"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-label"}},[t._v("#")]),t._v(" Caret::Label::Label")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" caret. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Label")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-start"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-start"}},[t._v("#")]),t._v(" Caret::Label::start")]),t._v(" "),s("p",[t._v("Set current caret position as a starting point for label.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-end"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-end"}},[t._v("#")]),t._v(" Caret::Label::end")]),t._v(" "),s("p",[t._v("Fix current caret position as an end point for label.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("end")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-getdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-getdata"}},[t._v("#")]),t._v(" Caret::Label::getData")]),t._v(" "),s("p",[t._v("Get pointer to a labeled data. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-getsize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-getsize"}},[t._v("#")]),t._v(" Caret::Label::getSize")]),t._v(" "),s("p",[t._v("Get size of labeled data. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-getstartposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-getstartposition"}},[t._v("#")]),t._v(" Caret::Label::getStartPosition")]),t._v(" "),s("p",[t._v("Get start position of the label. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStartPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-getendposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-getendposition"}},[t._v("#")]),t._v(" Caret::Label::getEndPosition")]),t._v(" "),s("p",[t._v("Get end position of the label. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - end position of the label or "),s("code",[t._v("-1")]),t._v(" if end() wasn't called yet. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEndPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-tostring"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-tostring"}},[t._v("#")]),t._v(" Caret::Label::toString")]),t._v(" "),s("p",[t._v("Same as"),s("code",[t._v("toString(true).")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-label-std-str"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-label-std-str"}},[t._v("#")]),t._v(" Caret::Label::std_str")]),t._v(" "),s("p",[t._v("Create "),s("code",[t._v("std::string")]),t._v(" from labeled data. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::string")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("std_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"caret-statesaveguard"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard"}},[t._v("#")]),t._v(" Caret::StateSaveGuard")]),t._v(" "),s("p",[t._v("Caret state saver guard.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Caret")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StateSaveGuard")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-statesaveguard-statesaveguard"}},[t._v("StateSaveGuard")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-statesaveguard-~statesaveguard"}},[t._v("~StateSaveGuard")])]),t._v(" "),s("td",[t._v("Destructor. Restore saved state.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-statesaveguard-getsavedposition"}},[t._v("getSavedPosition")])]),t._v(" "),s("td",[t._v("Get caret saved position.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-statesaveguard-getsavederrormessage"}},[t._v("getSavedErrorMessage")])]),t._v(" "),s("td",[t._v("Get caret saved error message.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#caret-statesaveguard-getsavederrorcode"}},[t._v("getSavedErrorCode")])]),t._v(" "),s("td",[t._v("Get caret saved error code.")])])])]),t._v(" "),s("h3",{attrs:{id:"caret-statesaveguard-statesaveguard"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard-statesaveguard"}},[t._v("#")]),t._v(" Caret::StateSaveGuard::StateSaveGuard")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" caret. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StateSaveGuard")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-statesaveguard-statesaveguard-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard-statesaveguard-2"}},[t._v("#")]),t._v(" Caret::StateSaveGuard::~StateSaveGuard")]),t._v(" "),s("p",[t._v("Destructor. Restore saved state.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("StateSaveGuard")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-statesaveguard-getsavedposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard-getsavedposition"}},[t._v("#")]),t._v(" Caret::StateSaveGuard::getSavedPosition")]),t._v(" "),s("p",[t._v("Get caret saved position. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSavedPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-statesaveguard-getsavederrormessage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard-getsavederrormessage"}},[t._v("#")]),t._v(" Caret::StateSaveGuard::getSavedErrorMessage")]),t._v(" "),s("p",[t._v("Get caret saved error message. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSavedErrorMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"caret-statesaveguard-getsavederrorcode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caret-statesaveguard-getsavederrorcode"}},[t._v("#")]),t._v(" Caret::StateSaveGuard::getSavedErrorCode")]),t._v(" "),s("p",[t._v("Get caret saved error code. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSavedErrorCode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/189.2c38b7e0.js b/docs/.vuepress/dist/assets/js/189.2c38b7e0.js deleted file mode 100644 index a6b8e9e06..000000000 --- a/docs/.vuepress/dist/assets/js/189.2c38b7e0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{561:function(r,t,s){"use strict";s.r(t);var a=s(42),e=Object(a.a)({},(function(){var r=this,t=r.$createElement,s=r._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[s("h1",{attrs:{id:"parsingerror-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror-hpp"}},[r._v("#")]),r._v(" ParsingError.hpp"),s("seo")],1),r._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/parser/ParsingError.hpp",target:"_blank",rel:"noopener noreferrer"}},[r._v("This File On Github"),s("OutboundLink")],1),s("br"),r._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/parser/ParsingError.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[r._v("Ask A Question"),s("OutboundLink")],1)]),r._v(" "),s("p",[s("code",[r._v("API: latest")]),s("br"),r._v(" "),s("code",[r._v("module: oatpp")]),s("br"),r._v(" "),s("code",[r._v('#include "oatpp/core/parser/ParsingError.hpp"')])]),r._v(" "),s("h2",{attrs:{id:"parsingerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror"}},[r._v("#")]),r._v(" ParsingError")]),r._v(" "),s("p",[r._v("Thrown when parsing error occurred and ParsingCaret object is not accessible for user. If parsing was made via oatpp::parser::ParsingCaret and ParsingCaret is accessible for user then do not throw this error.- User should read error from ParsingCaret::getError()")]),r._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("namespace")]),r._v(" parser "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),r._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("class")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[r._v("ParsingError")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[r._v(":")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("public")]),r._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("runtime_error "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("}")]),r._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[r._v("#")]),r._v(" Methods")]),r._v(" "),s("table",[s("thead",[s("tr",[s("th",[r._v("Return Type")]),r._v(" "),s("th",[r._v("Name")]),r._v(" "),s("th",[r._v("Summary")])])]),r._v(" "),s("tbody",[s("tr",[s("td",[s("code",[r._v("[none]")])]),r._v(" "),s("td",[s("a",{attrs:{href:"#parsingerror-parsingerror"}},[r._v("ParsingError")])]),r._v(" "),s("td",[r._v("Constructor")])]),r._v(" "),s("tr",[s("td",[s("code",[r._v("oatpp::String")])]),r._v(" "),s("td",[s("a",{attrs:{href:"#parsingerror-getmessage"}},[r._v("getMessage")])]),r._v(" "),s("td",[r._v("get error message")])]),r._v(" "),s("tr",[s("td",[s("code",[r._v("v_int64")])]),r._v(" "),s("td",[s("a",{attrs:{href:"#parsingerror-getcode"}},[r._v("getCode")])]),r._v(" "),s("td",[r._v("get error code")])]),r._v(" "),s("tr",[s("td",[s("code",[r._v("v_buff_size")])]),r._v(" "),s("td",[s("a",{attrs:{href:"#parsingerror-getposition"}},[r._v("getPosition")])]),r._v(" "),s("td",[r._v("get parsing position of the error")])])])]),r._v(" "),s("h3",{attrs:{id:"parsingerror-parsingerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror-parsingerror"}},[r._v("#")]),r._v(" ParsingError::ParsingError")]),r._v(" "),s("p",[r._v("Constructor "),s("ul",[s("li",[s("strong",[r._v("@param")]),r._v(" message ")]),s("li",[s("strong",[r._v("@param")]),r._v(" position ")])])]),r._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[r._v("ParsingError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("String "),s("span",{pre:!0,attrs:{class:"token operator"}},[r._v("&")]),r._v("message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(",")]),r._v(" v_int64 code"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(",")]),r._v(" v_buff_size position"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v("\n")])])]),s("h3",{attrs:{id:"parsingerror-getmessage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror-getmessage"}},[r._v("#")]),r._v(" ParsingError::getMessage")]),r._v(" "),s("p",[r._v("get error message "),s("ul",[s("li",[s("strong",[r._v("@return")])])])]),r._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[r._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[r._v("::")]),r._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[r._v("getMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])]),s("h3",{attrs:{id:"parsingerror-getcode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror-getcode"}},[r._v("#")]),r._v(" ParsingError::getCode")]),r._v(" "),s("p",[r._v("get error code "),s("ul",[s("li",[s("strong",[r._v("@return")])])])]),r._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[r._v("v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[r._v("getCode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])]),s("h3",{attrs:{id:"parsingerror-getposition"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parsingerror-getposition"}},[r._v("#")]),r._v(" ParsingError::getPosition")]),r._v(" "),s("p",[r._v("get parsing position of the error "),s("ul",[s("li",[s("strong",[r._v("@return")])])])]),r._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[r._v("v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[r._v("getPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[r._v(")")]),r._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[r._v("const")]),r._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/19.07abd983.js b/docs/.vuepress/dist/assets/js/19.07abd983.js deleted file mode 100644 index 33f356dc2..000000000 --- a/docs/.vuepress/dist/assets/js/19.07abd983.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{391:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bodyoutputstream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-hpp"}},[t._v("#")]),t._v(" BodyOutputStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/BodyOutputStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/BodyOutputStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-curl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-curl/io/BodyOutputStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bodyoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream"}},[t._v("#")]),t._v(" BodyOutputStream")]),t._v(" "),e("p",[t._v("Wrapper over "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyWriter/#curlbodywriter"}},[t._v("oatpp::curl::io::CurlBodyWriter")]),t._v(" providing "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(" interface.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BodyOutputStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyoutputstream-bodyoutputstream"}},[t._v("BodyOutputStream")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyoutputstream-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write data to stream. Implementation of oatpp::data::stream::OutputStream::write method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyoutputstream-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyoutputstream-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodyoutputstream-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])])])]),t._v(" "),e("h3",{attrs:{id:"bodyoutputstream-bodyoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-bodyoutputstream"}},[t._v("#")]),t._v(" BodyOutputStream::BodyOutputStream")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" writer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BodyOutputStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CurlBodyWriter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" writer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodyoutputstream-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-write"}},[t._v("#")]),t._v(" BodyOutputStream::write")]),t._v(" "),e("p",[t._v("Write data to stream. Implementation of oatpp::data::stream::OutputStream::write method. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - data to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - data size. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyoutputstream-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-setoutputstreamiomode"}},[t._v("#")]),t._v(" BodyOutputStream::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyoutputstream-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-getoutputstreamiomode"}},[t._v("#")]),t._v(" BodyOutputStream::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bodyoutputstream-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodyoutputstream-getoutputstreamcontext"}},[t._v("#")]),t._v(" BodyOutputStream::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/190.100a2690.js b/docs/.vuepress/dist/assets/js/190.100a2690.js deleted file mode 100644 index e7ee7f452..000000000 --- a/docs/.vuepress/dist/assets/js/190.100a2690.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{562:function(a,t,r){"use strict";r.r(t);var s=r(42),e=Object(s.a)({},(function(){var a=this,t=a.$createElement,r=a._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[r("h1",{attrs:{id:"invalidator-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalidator-hpp"}},[a._v("#")]),a._v(" Invalidator.hpp"),r("seo")],1),a._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/provider/Invalidator.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),r("OutboundLink")],1),r("br"),a._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/provider/Invalidator.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),r("OutboundLink")],1)]),a._v(" "),r("p",[r("code",[a._v("API: latest")]),r("br"),a._v(" "),r("code",[a._v("module: oatpp")]),r("br"),a._v(" "),r("code",[a._v('#include "oatpp/core/provider/Invalidator.hpp"')])]),a._v(" "),r("h2",{attrs:{id:"invalidator"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalidator"}},[a._v("#")]),a._v(" Invalidator")]),a._v(" "),r("p",[a._v("Abstract resource invalidator. "),r("ul",[r("li",[r("strong",[a._v("@tparam")]),a._v(" T - resource class. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" provider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("template")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("T")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Invalidator")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("base"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Countable "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#invalidator-~invalidator"}},[a._v("~Invalidator")])]),a._v(" "),r("td",[a._v("Default virtual destructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#invalidator-invalidate"}},[a._v("invalidate")])]),a._v(" "),r("td",[a._v("Invalidate resource that was previously created by the correspondent provider. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"invalidator-invalidator"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalidator-invalidator"}},[a._v("#")]),a._v(" Invalidator::~Invalidator")]),a._v(" "),r("p",[a._v("Default virtual destructor.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("Invalidator")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),r("h3",{attrs:{id:"invalidator-invalidate"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalidator-invalidate"}},[a._v("#")]),a._v(" Invalidator::invalidate")]),a._v(" "),r("p",[a._v("Invalidate resource that was previously created by the correspondent provider. "),r("br"),a._v(" Use-case: if provider is pool based - you can signal that this resource should not be reused anymore. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" resource ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("invalidate")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("T"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v("resource"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/191.e83dfd97.js b/docs/.vuepress/dist/assets/js/191.e83dfd97.js deleted file mode 100644 index a0dee7503..000000000 --- a/docs/.vuepress/dist/assets/js/191.e83dfd97.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{563:function(t,s,a){"use strict";a.r(s);var r=a(42),e=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"pool-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-hpp"}},[t._v("#")]),t._v(" Pool.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/provider/Pool.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/provider/Pool.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/provider/Pool.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"acquisitionproxy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#acquisitionproxy"}},[t._v("#")]),t._v(" AcquisitionProxy")]),t._v(" "),a("p",[t._v("Pool acquisition proxy template. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" TResource - abstract resource interface type, Ex.: "),a("code",[t._v("IOStream")]),t._v(". ")]),a("li",[a("strong",[t._v("@tparam")]),t._v(" AcquisitionProxyImpl - implementation of proxy. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TResource")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AcquisitionProxyImpl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AcquisitionProxy")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" TResource "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("PoolTemplate")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#acquisitionproxy-poolinstance"}},[t._v("PoolInstance")])]),t._v(" "),a("td",[t._v("Convenience typedef for Pool.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#acquisitionproxy-acquisitionproxy"}},[t._v("AcquisitionProxy")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#acquisitionproxy-~acquisitionproxy"}},[t._v("~AcquisitionProxy")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"acquisitionproxy-poolinstance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#acquisitionproxy-poolinstance"}},[t._v("#")]),t._v(" AcquisitionProxy::PoolInstance")]),t._v(" "),a("p",[t._v("Convenience typedef for Pool.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" PoolTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" AcquisitionProxyImpl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" PoolInstance\n")])])]),a("h3",{attrs:{id:"acquisitionproxy-acquisitionproxy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#acquisitionproxy-acquisitionproxy"}},[t._v("#")]),t._v(" AcquisitionProxy::AcquisitionProxy")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" resource - base resource. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" pool - "),a("a",{attrs:{href:"#acquisitionproxy-poolinstance"}},[t._v("AcquisitionProxy::PoolInstance")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AcquisitionProxy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TResource"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PoolInstance"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pool"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_handle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_pool")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pool"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_valid")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"acquisitionproxy-acquisitionproxy-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#acquisitionproxy-acquisitionproxy-2"}},[t._v("#")]),t._v(" AcquisitionProxy::~AcquisitionProxy")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AcquisitionProxy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"pool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool"}},[t._v("#")]),t._v(" Pool")]),t._v(" "),a("p",[t._v("Pool template class. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" TProvider - base class for pool to inherit, ex.: ServerConnectionProvider. ")]),a("li",[a("strong",[t._v("@tparam")]),t._v(" TResource - abstract resource interface type, Ex.: "),a("code",[t._v("IOStream")]),t._v(". Must be the same as a return-type of Provider. ")]),a("li",[a("strong",[t._v("@tparam")]),t._v(" AcquisitionProxyImpl - implementation of "),a("a",{attrs:{href:"#acquisitionproxy"}},[t._v("AcquisitionProxy")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TProvider")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TResource")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AcquisitionProxyImpl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Pool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" TProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("enable_shared_from_this"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pool"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" TResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" AcquisitionProxyImpl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" PoolTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" AcquisitionProxyImpl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#pool-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Pool.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#pool-get"}},[t._v("get")])]),t._v(" "),a("td",[t._v("Get resource.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("async::CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#pool-getasync"}},[t._v("getAsync")])]),t._v(" "),a("td",[t._v("Get resource asynchronously.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#pool-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Stop pool. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int64")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#pool-getcounter"}},[t._v("getCounter")])]),t._v(" "),a("td",[t._v("Get pool resource count. Both acquired and available.")])])])]),t._v(" "),a("h3",{attrs:{id:"pool-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-createshared"}},[t._v("#")]),t._v(" Pool::createShared")]),t._v(" "),a("p",[t._v("Create shared Pool. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" provider - resource provider. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" maxResources - max resource count in the pool. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" maxResourceTTL - max time-to-live for unused resource in the pool. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" timeout - optional timeout on "),a("a",{attrs:{href:"#pool-get"}},[t._v("Pool::get()")]),t._v(" and "),a("a",{attrs:{href:"#pool-getasync"}},[t._v("Pool::getAsync()")]),t._v(" operations. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" of "),a("code",[t._v("Pool")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pool"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int64 maxResources"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" maxResourceTTL"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("microseconds"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("zero")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"pool-get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-get"}},[t._v("#")]),t._v(" Pool::get")]),t._v(" "),a("p",[t._v("Get resource. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TResource"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"pool-getasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-getasync"}},[t._v("#")]),t._v(" Pool::getAsync")]),t._v(" "),a("p",[t._v("Get resource asynchronously. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TResource"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"pool-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-stop"}},[t._v("#")]),t._v(" Pool::stop")]),t._v(" "),a("p",[t._v("Stop pool. "),a("br"),t._v(" "),a("em",[t._v("Note: call to stop() may block.")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"pool-getcounter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pool-getcounter"}},[t._v("#")]),t._v(" Pool::getCounter")]),t._v(" "),a("p",[t._v("Get pool resource count. Both acquired and available. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCounter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/192.3a5707f1.js b/docs/.vuepress/dist/assets/js/192.3a5707f1.js deleted file mode 100644 index 92b5a747c..000000000 --- a/docs/.vuepress/dist/assets/js/192.3a5707f1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{564:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"provider-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-hpp"}},[t._v("#")]),t._v(" Provider.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/provider/Provider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/provider/Provider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/provider/Provider.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"resourcehandletemplate"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandletemplate"}},[t._v("#")]),t._v(" ResourceHandleTemplate")]),t._v(" "),s("p",[t._v("Resource handle template. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PTR")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResourceHandleTemplate")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("PTR")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resourcehandletemplate-object"}},[t._v("object")])]),t._v(" "),s("td",[t._v("Pointer to the resource.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resourcehandletemplate-invalidator"}},[t._v("invalidator")])]),t._v(" "),s("td",[t._v("Invalidator that can be used to invalidate the resource.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resourcehandletemplate-resourcehandletemplate"}},[t._v("ResourceHandleTemplate")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Nullptr constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resourcehandletemplate-invalidate"}},[t._v("invalidate")])]),t._v(" "),s("td",[t._v("Invalidates the resource so it can be disposed and cannot be reused anymore.")])])])]),t._v(" "),s("h3",{attrs:{id:"resourcehandletemplate-object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandletemplate-object"}},[t._v("#")]),t._v(" ResourceHandleTemplate::object")]),t._v(" "),s("p",[t._v("Pointer to the resource.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("PTR object\n")])])]),s("h3",{attrs:{id:"resourcehandletemplate-invalidator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandletemplate-invalidator"}},[t._v("#")]),t._v(" ResourceHandleTemplate::invalidator")]),t._v(" "),s("p",[t._v("Invalidator that can be used to invalidate the resource.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Invalidator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" invalidator\n")])])]),s("h3",{attrs:{id:"resourcehandletemplate-resourcehandletemplate"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandletemplate-resourcehandletemplate"}},[t._v("#")]),t._v(" ResourceHandleTemplate::ResourceHandleTemplate")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandleTemplate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Nullptr constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandleTemplate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" resourceObject ")]),s("li",[s("strong",[t._v("@param")]),t._v(" resourceInvalidator ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandleTemplate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" PTR"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Invalidator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("object")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidator")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"resourcehandletemplate-invalidate"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandletemplate-invalidate"}},[t._v("#")]),t._v(" ResourceHandleTemplate::invalidate")]),t._v(" "),s("p",[t._v("Invalidates the resource so it can be disposed and cannot be reused anymore.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"resourcehandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandle"}},[t._v("#")]),t._v(" ResourceHandle")]),t._v(" "),s("p",[t._v("Resource handle. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResourceHandle")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ResourceHandleTemplate"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resourcehandle-resourcehandle"}},[t._v("ResourceHandle")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Nullptr constructor. ")]),s("li",[t._v("Constructor. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"resourcehandle-resourcehandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resourcehandle-resourcehandle"}},[t._v("#")]),t._v(" ResourceHandle::ResourceHandle")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Nullptr constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" resourceObject ")]),s("li",[s("strong",[t._v("@param")]),t._v(" resourceInvalidator ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Invalidator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ResourceHandleTemplate"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"weakresourcehandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#weakresourcehandle"}},[t._v("#")]),t._v(" WeakResourceHandle")]),t._v(" "),s("p",[t._v("Weak Resource handle. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WeakResourceHandle")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ResourceHandleTemplate"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("weak_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#weakresourcehandle-weakresourcehandle"}},[t._v("WeakResourceHandle")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Nullptr constructor. ")]),s("li",[t._v("Constructor. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"weakresourcehandle-weakresourcehandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#weakresourcehandle-weakresourcehandle"}},[t._v("#")]),t._v(" WeakResourceHandle::WeakResourceHandle")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WeakResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Nullptr constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WeakResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("nullptr_t"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" resourceObject ")]),s("li",[s("strong",[t._v("@param")]),t._v(" resourceInvalidator ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WeakResourceHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("weak_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Invalidator"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ResourceHandleTemplate"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("weak_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resourceObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" resourceInvalidator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"provider"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider"}},[t._v("#")]),t._v(" Provider")]),t._v(" "),s("p",[t._v("Abstract resource provider. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T - resource class. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" provider "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Provider")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-provider"}},[t._v("Provider")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Default constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-~provider"}},[t._v("~Provider")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::unordered_map&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-getproperties"}},[t._v("getProperties")])]),t._v(" "),s("td",[t._v("Some optional properties that user might want to know. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-getproperty"}},[t._v("getProperty")])]),t._v(" "),s("td",[t._v("Get optional property")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("ResourceHandle")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-get"}},[t._v("get")])]),t._v(" "),s("td",[t._v("Get resource.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("async::CoroutineStarterForResult&>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-getasync"}},[t._v("getAsync")])]),t._v(" "),s("td",[t._v("Get resource in Async manner.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#provider-stop"}},[t._v("stop")])]),t._v(" "),s("td",[t._v("Stop provider and free associated resources.")])])])]),t._v(" "),s("h3",{attrs:{id:"provider-provider"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-provider"}},[t._v("#")]),t._v(" Provider::Provider")]),t._v(" "),s("ol",[s("li",[t._v("Default constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Provider")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" properties ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Provider")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_properties")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"provider-provider-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-provider-2"}},[t._v("#")]),t._v(" Provider::~Provider")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Provider")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"provider-getproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-getproperties"}},[t._v("#")]),t._v(" Provider::getProperties")]),t._v(" "),s("p",[t._v("Some optional properties that user might want to know. "),s("br"),t._v(" Note: All properties are optional and user should not rely on this.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperties")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"provider-getproperty"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-getproperty"}},[t._v("#")]),t._v(" Provider::getProperty")]),t._v(" "),s("p",[t._v("Get optional property")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"provider-get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-get"}},[t._v("#")]),t._v(" Provider::get")]),t._v(" "),s("p",[t._v("Get resource. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - resource. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"provider-getasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-getasync"}},[t._v("#")]),t._v(" Provider::getAsync")]),t._v(" "),s("p",[t._v("Get resource in Async manner. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult of "),s("code",[t._v("T")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"provider-stop"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#provider-stop"}},[t._v("#")]),t._v(" Provider::stop")]),t._v(" "),s("p",[t._v("Stop provider and free associated resources.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/193.6b0babce.js b/docs/.vuepress/dist/assets/js/193.6b0babce.js deleted file mode 100644 index ca072e09e..000000000 --- a/docs/.vuepress/dist/assets/js/193.6b0babce.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[193],{565:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"binary-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#binary-hpp"}},[t._v("#")]),t._v(" Binary.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/utils/Binary.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/utils/Binary.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/core/utils/Binary.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"binary"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[t._v("#")]),t._v(" Binary")]),t._v(" "),e("p",[t._v("Collection of methods for binary operations and arithmetics.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" utils "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Binary")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#binary-nextp2"}},[t._v("nextP2")])]),t._v(" "),e("td",[t._v("Calculate the next power of 2. "),e("br")])])])]),t._v(" "),e("h3",{attrs:{id:"binary-nextp2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#binary-nextp2"}},[t._v("#")]),t._v(" Binary::nextP2")]),t._v(" "),e("p",[t._v("Calculate the next power of 2. "),e("br"),t._v(" Example: "),e("br"),t._v(" "),e("code",[t._v("nextP2(127) = 128")]),t._v(", "),e("code",[t._v("nextP2(1025) = 2048")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("nextP2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 v"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/194.db26a154.js b/docs/.vuepress/dist/assets/js/194.db26a154.js deleted file mode 100644 index 72292d4fe..000000000 --- a/docs/.vuepress/dist/assets/js/194.db26a154.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[194],{566:function(t,s,a){"use strict";a.r(s);var r=a(42),e=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"conversionutils-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conversionutils-hpp"}},[t._v("#")]),t._v(" ConversionUtils.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/utils/ConversionUtils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/utils/ConversionUtils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/core/utils/ConversionUtils.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"strtoint32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtoint32"}},[t._v("#")]),t._v(" strToInt32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtoint32-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtoint32-2"}},[t._v("#")]),t._v(" strToInt32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtouint32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtouint32"}},[t._v("#")]),t._v(" strToUInt32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtouint32-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtouint32-2"}},[t._v("#")]),t._v(" strToUInt32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtoint64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtoint64"}},[t._v("#")]),t._v(" strToInt64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtoint64-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtoint64-2"}},[t._v("#")]),t._v(" strToInt64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtouint64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtouint64"}},[t._v("#")]),t._v(" strToUInt64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtouint64-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtouint64-2"}},[t._v("#")]),t._v(" strToUInt64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit unsigned integer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit unsigned integer value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_uint64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToUInt64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"int32tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int32tocharsequence"}},[t._v("#")]),t._v(" int32ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit integer value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int32ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint32tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint32tocharsequence"}},[t._v("#")]),t._v(" uint32ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint32ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"int64tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int64tocharsequence"}},[t._v("#")]),t._v(" int64ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit integer value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int64ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint64tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint64tocharsequence"}},[t._v("#")]),t._v(" uint64ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint64ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"int32tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int32tostr"}},[t._v("#")]),t._v(" int32ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int32ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint32tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint32tostr"}},[t._v("#")]),t._v(" uint32ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint32ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"int64tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int64tostr"}},[t._v("#")]),t._v(" int64ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int64ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint64tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint64tostr"}},[t._v("#")]),t._v(" uint64ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint64ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"int32tostdstr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int32tostdstr"}},[t._v("#")]),t._v(" int32ToStdStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("std::string")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int32ToStdStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint32tostdstr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint32tostdstr"}},[t._v("#")]),t._v(" uint32ToStdStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("std::string")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint32ToStdStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"int64tostdstr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#int64tostdstr"}},[t._v("#")]),t._v(" int64ToStdStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("std::string")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("int64ToStdStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"uint64tostdstr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uint64tostdstr"}},[t._v("#")]),t._v(" uint64ToStdStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit unsigned integer to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit unsigned integer value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("std::string")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("uint64ToStdStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"primitivetocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#primitivetocharsequence"}},[t._v("#")]),t._v(" primitiveToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Write value of primitive type (int, float, etc.) as it's string representation with pattern. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" T - primitive value type (int, float, etc.). ")]),a("li",[a("strong",[t._v("@param")]),t._v(" value - actual value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" pattern - pattern as for "),a("code",[t._v("snprintf")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" T"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nv_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("primitiveToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("T value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("pattern"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"primitivetostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#primitivetostr"}},[t._v("#")]),t._v(" primitiveToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Write value of primitive type (int, float, etc.) as it's string representation with pattern. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" T - primitive value type (int, float, etc.). ")]),a("li",[a("strong",[t._v("@param")]),t._v(" value - actual value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" pattern - pattern as for "),a("code",[t._v("sprintf")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" T"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("primitiveToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("T value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pattern"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"strtofloat32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtofloat32"}},[t._v("#")]),t._v(" strToFloat32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtofloat32-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtofloat32-2"}},[t._v("#")]),t._v(" strToFloat32")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 32-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 32-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 32-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat32")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtofloat64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtofloat64"}},[t._v("#")]),t._v(" strToFloat64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"strtofloat64-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtofloat64-2"}},[t._v("#")]),t._v(" strToFloat64")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("ol",[a("li",[t._v("String to 64-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("const char*")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("String to 64-bit float. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string as "),a("code",[t._v("oatpp::String")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - 64-bit float value. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_float64 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToFloat64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"float32tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#float32tocharsequence"}},[t._v("#")]),t._v(" float32ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit float to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit float value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("float32ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" format "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" OATPP_FLOAT_STRING_FORMAT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"float64tocharsequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#float64tocharsequence"}},[t._v("#")]),t._v(" float64ToCharSequence")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit float to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit float value. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" data - buffer to write data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" n - buffer size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length of the resultant string. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("float64ToCharSequence")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" format "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" OATPP_FLOAT_STRING_FORMAT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"float32tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#float32tostr"}},[t._v("#")]),t._v(" float32ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 32-bit float to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 32-bit float value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("float32ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float32 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" format "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" OATPP_FLOAT_STRING_FORMAT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"float64tostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#float64tostr"}},[t._v("#")]),t._v(" float64ToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert 64-bit float to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - 64-bit float value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("float64ToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_float64 value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" format "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" OATPP_FLOAT_STRING_FORMAT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"booltostr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#booltostr"}},[t._v("#")]),t._v(" boolToStr")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("Convert boolean to it's string representation. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" value - boolean value. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - value as "),a("code",[t._v("oatpp::String")]),t._v("; ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("boolToStr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"strtobool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strtobool"}},[t._v("#")]),t._v(" strToBool")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::utils::conversion")])]),t._v(" "),a("p",[t._v("parse string to boolean value. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" str - string to parse. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" success - out parameter. "),a("code",[t._v("true")]),t._v(" if operation was successful. "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - boolean value. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("strToBool")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" str"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" success"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/195.e094c797.js b/docs/.vuepress/dist/assets/js/195.e094c797.js deleted file mode 100644 index f23deda10..000000000 --- a/docs/.vuepress/dist/assets/js/195.e094c797.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[195],{568:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"random-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#random-hpp"}},[t._v("#")]),t._v(" Random.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/utils/Random.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/utils/Random.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/utils/Random.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"random"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),s("p",[t._v("Utility class for random values.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" utils "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" random "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Random")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#random-randombytes"}},[t._v("randomBytes")])]),t._v(" "),s("td",[t._v("Fill in buffer with random bytes [0..255].")])])])]),t._v(" "),s("h3",{attrs:{id:"random-randombytes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#random-randombytes"}},[t._v("#")]),t._v(" Random::randomBytes")]),t._v(" "),s("p",[t._v("Fill in buffer with random bytes [0..255]. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" bufferSize - size of the buffer. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("randomBytes")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p_char8 buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size bufferSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/196.5aeced80.js b/docs/.vuepress/dist/assets/js/196.5aeced80.js deleted file mode 100644 index a1b600a26..000000000 --- a/docs/.vuepress/dist/assets/js/196.5aeced80.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[196],{567:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"string-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-hpp"}},[t._v("#")]),t._v(" String.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/core/utils/String.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/core/utils/String.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/core/utils/String.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"string"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string"}},[t._v("#")]),t._v(" String")]),t._v(" "),s("p",[t._v("Utility class for Strings")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" utils "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-compare"}},[t._v("compare")])]),t._v(" "),s("td",[t._v("Compare data1, data2 using "),s("code",[t._v("std::memcmp")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_buff_size")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-compareci-ascii"}},[t._v("compareCI_ASCII")])]),t._v(" "),s("td",[t._v("Compare data1, data2 - case insensitive (ASCII only).")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-lowercase-ascii"}},[t._v("lowerCase_ASCII")])]),t._v(" "),s("td",[t._v("Change characters in data to lowercase (ASCII only).")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#string-uppercase-ascii"}},[t._v("upperCase_ASCII")])]),t._v(" "),s("td",[t._v("Change characters in data to uppercase (ASCII only).")])])])]),t._v(" "),s("h3",{attrs:{id:"string-compare"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-compare"}},[t._v("#")]),t._v(" String::compare")]),t._v(" "),s("p",[t._v("Compare data1, data2 using "),s("code",[t._v("std::memcmp")]),t._v(". "),s("em",[t._v("It's safe to pass nullptr for data1/data2")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data1 - pointer to data1. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size1 - size of data1. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" data2 - pointer to data2. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size2 - size of data2. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Negative value if the first differing byte (reinterpreted as unsigned char) in data1 is less than the corresponding byte in data2."),s("br"),t._v(" 0 if all count bytes of data1 and data2 are equal."),s("br"),t._v(" Positive value if the first differing byte in data1 is greater than the corresponding byte in data2. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compare")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"string-compareci-ascii"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-compareci-ascii"}},[t._v("#")]),t._v(" String::compareCI_ASCII")]),t._v(" "),s("p",[t._v("Compare data1, data2 - case insensitive (ASCII only). "),s("em",[t._v("It's safe to pass nullptr for data1/data2")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data1 - pointer to data1. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size1 - size of data1. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" data2 - pointer to data2. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size2 - size of data2. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - Negative value if the first differing byte (reinterpreted as unsigned char) in data1 is less than the corresponding byte in data2."),s("br"),t._v(" 0 if all count bytes of data1 and data2 are equal."),s("br"),t._v(" Positive value if the first differing byte in data1 is greater than the corresponding byte in data2. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_buff_size "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compareCI_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"string-lowercase-ascii"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-lowercase-ascii"}},[t._v("#")]),t._v(" String::lowerCase_ASCII")]),t._v(" "),s("p",[t._v("Change characters in data to lowercase (ASCII only). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size - size of the data. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("lowerCase_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"string-uppercase-ascii"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#string-uppercase-ascii"}},[t._v("#")]),t._v(" String::upperCase_ASCII")]),t._v(" "),s("p",[t._v("Change characters in data to uppercase (ASCII only). "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size - size of the data. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("upperCase_ASCII")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/197.ed90b37f.js b/docs/.vuepress/dist/assets/js/197.ed90b37f.js deleted file mode 100644 index 5779cb9d2..000000000 --- a/docs/.vuepress/dist/assets/js/197.ed90b37f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[197],{569:function(a,s,t){"use strict";t.r(s);var e=t(42),r=Object(e.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"base64-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-hpp"}},[a._v("#")]),a._v(" Base64.hpp"),t("seo")],1),a._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/encoding/Base64.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),t("OutboundLink")],1),t("br"),a._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/encoding/Base64.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),t("OutboundLink")],1)]),a._v(" "),t("p",[t("code",[a._v("API: latest")]),t("br"),a._v(" "),t("code",[a._v("module: oatpp")]),t("br"),a._v(" "),t("code",[a._v('#include "oatpp/encoding/Base64.hpp"')])]),a._v(" "),t("h2",{attrs:{id:"base64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64"}},[a._v("#")]),a._v(" Base64")]),a._v(" "),t("p",[a._v("Base64 - encoder/decoder.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" encoding "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Base64")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64"}},[a._v("ALPHABET_BASE64")])]),a._v(" "),t("td",[a._v("Standard base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '+', '/', '=']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64-url"}},[a._v("ALPHABET_BASE64_URL")])]),a._v(" "),t("td",[a._v("URL base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '-', '_', '=']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64-url-safe"}},[a._v("ALPHABET_BASE64_URL_SAFE")])]),a._v(" "),t("td",[a._v("URL safe base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '.', '_', '-']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64-auxiliary-chars"}},[a._v("ALPHABET_BASE64_AUXILIARY_CHARS")])]),a._v(" "),t("td",[a._v("Standard base64 Alphabet auxiliary chars ['+', '/', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64-url-auxiliary-chars"}},[a._v("ALPHABET_BASE64_URL_AUXILIARY_CHARS")])]),a._v(" "),t("td",[a._v("URL base64 Alphabet auxiliary chars ['-', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("const char* const")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-alphabet-base64-url-safe-auxiliary-chars"}},[a._v("ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS")])]),a._v(" "),t("td",[a._v("URL safe base64 Alphabet auxiliary chars ['.', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")])])])]),a._v(" "),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Return Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("v_buff_size")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-calcencodedstringsize"}},[a._v("calcEncodedStringSize")])]),a._v(" "),t("td",[a._v("Calculate size of encoding result of a string of the given size.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("v_buff_size")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-calcdecodedstringsize"}},[a._v("calcDecodedStringSize")])]),a._v(" "),t("td",[a._v("Calculate size of decoding result. this method assumes that data passed as a param consists of standard base64 set of chars")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("bool")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-isbase64string"}},[a._v("isBase64String")])]),a._v(" "),t("td",[a._v("Check if data is a valid base64 encoded string.")])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("oatpp::String")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-encode"}},[a._v("encode")])]),a._v(" "),t("td",[a._v("Multiple implementations: "),t("br"),t("ol",[t("li",[a._v("Encode data as base64 string. ")]),t("li",[a._v("Encode data as base64 string. ")])])])]),a._v(" "),t("tr",[t("td",[t("code",[a._v("oatpp::String")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-decode"}},[a._v("decode")])]),a._v(" "),t("td",[a._v("Multiple implementations: "),t("br"),t("ol",[t("li",[a._v("Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars ")]),t("li",[a._v("Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars ")])])])])])]),a._v(" "),t("h3",{attrs:{id:"base64-alphabet-base64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64")]),a._v(" "),t("p",[a._v("Standard base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '+', '/', '=']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64\n")])])]),t("h3",{attrs:{id:"base64-alphabet-base64-url"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64-url"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64_URL")]),a._v(" "),t("p",[a._v("URL base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '-', '_', '=']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64_URL\n")])])]),t("h3",{attrs:{id:"base64-alphabet-base64-url-safe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64-url-safe"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64_URL_SAFE")]),a._v(" "),t("p",[a._v("URL safe base64 Alphabet - "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9', '.', '_', '-']")]),a._v(". Alphabet is array of 65 chars. 64 chars encoding chars, and 65th padding char."),t("br")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64_URL_SAFE\n")])])]),t("h3",{attrs:{id:"base64-alphabet-base64-auxiliary-chars"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64-auxiliary-chars"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64_AUXILIARY_CHARS")]),a._v(" "),t("p",[a._v("Standard base64 Alphabet auxiliary chars ['+', '/', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64_AUXILIARY_CHARS\n")])])]),t("h3",{attrs:{id:"base64-alphabet-base64-url-auxiliary-chars"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64-url-auxiliary-chars"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64_URL_AUXILIARY_CHARS")]),a._v(" "),t("p",[a._v("URL base64 Alphabet auxiliary chars ['-', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64_URL_AUXILIARY_CHARS\n")])])]),t("h3",{attrs:{id:"base64-alphabet-base64-url-safe-auxiliary-chars"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-alphabet-base64-url-safe-auxiliary-chars"}},[a._v("#")]),a._v(" Base64::ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS")]),a._v(" "),t("p",[a._v("URL safe base64 Alphabet auxiliary chars ['.', '_', '=']. alphabet auxiliary chars - last 3 chars of alphabet including padding char.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" ALPHABET_BASE64_URL_SAFE_AUXILIARY_CHARS\n")])])]),t("h3",{attrs:{id:"base64-calcencodedstringsize"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-calcencodedstringsize"}},[a._v("#")]),a._v(" Base64::calcEncodedStringSize")]),a._v(" "),t("p",[a._v("Calculate size of encoding result of a string of the given size. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" size - size of string to encode. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - size of encoding result of a string of the given size ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" v_buff_size "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("calcEncodedStringSize")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("v_buff_size size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"base64-calcdecodedstringsize"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-calcdecodedstringsize"}},[a._v("#")]),a._v(" Base64::calcDecodedStringSize")]),a._v(" "),t("p",[a._v("Calculate size of decoding result. this method assumes that data passed as a param consists of standard base64 set of chars "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9']")]),a._v(" and three configurable auxiliary chars. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - pointer to data. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" size - size of the data. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" base64StrLength - out parameter. Size of base64 valid encoded string. It may appear to be less then size. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" auxiliaryChars - configurable auxiliary chars. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - size of decoded data. If data passed is not a base64 string then -1 is returned. ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" v_buff_size "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("calcDecodedStringSize")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" base64StrLength"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" auxiliaryChars "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64_AUXILIARY_CHARS"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"base64-isbase64string"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-isbase64string"}},[a._v("#")]),a._v(" Base64::isBase64String")]),a._v(" "),t("p",[a._v("Check if data is a valid base64 encoded string. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - pointer to data. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" size - data size. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" auxiliaryChars - configurable auxiliary chars. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" "),t("code",[a._v("(calcDecodedStringSize(data, size, base64StrLength, auxiliaryChars) >= 0)")]),a._v(". ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("isBase64String")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" auxiliaryChars "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64_AUXILIARY_CHARS"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"base64-encode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-encode"}},[a._v("#")]),a._v(" Base64::encode")]),a._v(" "),t("ol",[t("li",[a._v("Encode data as base64 string. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - pointer to data. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" size - data size. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" alphabet - base64 alphabet to use. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - encoded base64 string as "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[a._v("oatpp::String")]),a._v(". ")],1)]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("encode")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" alphabet "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),t("li",[a._v("Encode data as base64 string. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - data to encode. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" alphabet - base64 alphabet to use. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - encoded base64 string as "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[a._v("oatpp::String")]),a._v(". ")],1)]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("encode")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" alphabet "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])]),a._v(" "),t("h3",{attrs:{id:"base64-decode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-decode"}},[a._v("#")]),a._v(" Base64::decode")]),a._v(" "),t("ol",[t("li",[a._v("Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9']")]),a._v(" and three configurable auxiliary chars. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - pointer to data to decode. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" size - encoded data size. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" auxiliaryChars - configurable auxiliary chars. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - decoded data as "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[a._v("oatpp::String")]),a._v(". ")],1),t("li",[t("strong",[a._v("@throws")]),a._v(" - "),t("a",{attrs:{href:"#base64-decodingerror"}},[a._v("Base64::DecodingError")])])]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("decode")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" auxiliaryChars "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64_AUXILIARY_CHARS"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),t("li",[a._v("Decode base64 encoded data. This method assumes that data passed as a param consists of standard base64 set of chars "),t("code",[a._v("['A'-'Z', 'a'-'z', '0'-'9']")]),a._v(" and three configurable auxiliary chars. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" data - data to decode. ")]),t("li",[t("strong",[a._v("@param")]),a._v(" auxiliaryChars - configurable auxiliary chars. ")]),t("li",[t("strong",[a._v("@return")]),a._v(" - decoded data as "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[a._v("oatpp::String")]),a._v(". ")],1),t("li",[t("strong",[a._v("@throws")]),a._v(" - "),t("a",{attrs:{href:"#base64-decodingerror"}},[a._v("Base64::DecodingError")])])]),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("decode")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" auxiliaryChars "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" ALPHABET_BASE64_AUXILIARY_CHARS"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])]),a._v(" "),t("h2",{attrs:{id:"base64-decodingerror"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-decodingerror"}},[a._v("#")]),a._v(" Base64::DecodingError")]),a._v(" "),t("p",[a._v("DecodingError.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" encoding "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Base64")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("DecodingError")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" std"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("runtime_error "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"methods-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Return Type")]),a._v(" "),t("th",[a._v("Name")]),a._v(" "),t("th",[a._v("Summary")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[t("code",[a._v("[none]")])]),a._v(" "),t("td",[t("a",{attrs:{href:"#base64-decodingerror-decodingerror"}},[a._v("DecodingError")])]),a._v(" "),t("td",[a._v("Constructor.")])])])]),a._v(" "),t("h3",{attrs:{id:"base64-decodingerror-decodingerror"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#base64-decodingerror-decodingerror"}},[a._v("#")]),a._v(" Base64::DecodingError::DecodingError")]),a._v(" "),t("p",[a._v("Constructor. "),t("ul",[t("li",[t("strong",[a._v("@param")]),a._v(" message - error message. ")])])]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("DecodingError")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" message"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("runtime_error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("message"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/198.65babdac.js b/docs/.vuepress/dist/assets/js/198.65babdac.js deleted file mode 100644 index f99cc20d4..000000000 --- a/docs/.vuepress/dist/assets/js/198.65babdac.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[198],{570:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"hex-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-hpp"}},[t._v("#")]),t._v(" Hex.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/encoding/Hex.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/encoding/Hex.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/encoding/Hex.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"hex"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[t._v("#")]),t._v(" Hex")]),t._v(" "),s("p",[t._v("Utility class for hex string encoding/decoding .")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Hex")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-error-unknown-symbol"}},[t._v("ERROR_UNKNOWN_SYMBOL")])]),t._v(" "),s("td",[t._v("Unknown symbol error.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-writeuint16"}},[t._v("writeUInt16")])]),t._v(" "),s("td",[t._v("Write value as hex string to buffer.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-writeuint32"}},[t._v("writeUInt32")])]),t._v(" "),s("td",[t._v("Write value as hex string to buffer.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-readuint16"}},[t._v("readUInt16")])]),t._v(" "),s("td",[t._v("Parse 4-char hex string to int16.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-readuint32"}},[t._v("readUInt32")])]),t._v(" "),s("td",[t._v("Parse 8-char hex string to int32.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-encode"}},[t._v("encode")])]),t._v(" "),s("td",[t._v("Write binary data as HEX string.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-decode"}},[t._v("decode")])]),t._v(" "),s("td",[t._v("Read binary data from hex string.")])])])]),t._v(" "),s("h3",{attrs:{id:"hex-error-unknown-symbol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-error-unknown-symbol"}},[t._v("#")]),t._v(" Hex::ERROR_UNKNOWN_SYMBOL")]),t._v(" "),s("p",[t._v("Unknown symbol error.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_int32 ERROR_UNKNOWN_SYMBOL "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-writeuint16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-writeuint16"}},[t._v("#")]),t._v(" Hex::writeUInt16")]),t._v(" "),s("p",[t._v("Write value as hex string to buffer. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value - value to write. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" buffer - buffer for resultant string. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeUInt16")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint16 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-writeuint32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-writeuint32"}},[t._v("#")]),t._v(" Hex::writeUInt32")]),t._v(" "),s("p",[t._v("Write value as hex string to buffer. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" value - value to write. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" buffer - buffer for resultant string. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeUInt32")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-readuint16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-readuint16"}},[t._v("#")]),t._v(" Hex::readUInt16")]),t._v(" "),s("p",[t._v("Parse 4-char hex string to int16. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" buffer - buffer containing string to parse. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" value - out parameter. Resultant value. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - 0 on success. Negative value on failure. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readUInt16")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint16"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-readuint32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-readuint32"}},[t._v("#")]),t._v(" Hex::readUInt32")]),t._v(" "),s("p",[t._v("Parse 8-char hex string to int32. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" buffer - buffer containing string to parse. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" value - out parameter. Resultant value. ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - 0 on success. Negative value on failure. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readUInt32")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" buffer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-encode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-encode"}},[t._v("#")]),t._v(" Hex::encode")]),t._v(" "),s("p",[t._v("Write binary data as HEX string. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" stream ")]),s("li",[s("strong",[t._v("@param")]),t._v(" data ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size ")]),s("li",[s("strong",[t._v("@param")]),t._v(" alphabet ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" alphabet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ALPHABET_UPPER"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"hex-decode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-decode"}},[t._v("#")]),t._v(" Hex::decode")]),t._v(" "),s("p",[t._v("Read binary data from hex string. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" stream ")]),s("li",[s("strong",[t._v("@param")]),t._v(" data ")]),s("li",[s("strong",[t._v("@param")]),t._v(" size ")]),s("li",[s("strong",[t._v("@param")]),t._v(" allowSeparators - skip any char which is not ([A-Z], [a-z], [0-9]) without error. ")]),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("a",{attrs:{href:"#hex-decodingerror"}},[t._v("Hex::DecodingError")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("decode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" allowSeparators "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"hex-decodingerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-decodingerror"}},[t._v("#")]),t._v(" Hex::DecodingError")]),t._v(" "),s("p",[t._v("DecodingError.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Hex")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DecodingError")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("runtime_error "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#hex-decodingerror-decodingerror"}},[t._v("DecodingError")])]),t._v(" "),s("td",[t._v("Constructor.")])])])]),t._v(" "),s("h3",{attrs:{id:"hex-decodingerror-decodingerror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hex-decodingerror-decodingerror"}},[t._v("#")]),t._v(" Hex::DecodingError::DecodingError")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" message - error message. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DecodingError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("runtime_error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/199.9d6095ba.js b/docs/.vuepress/dist/assets/js/199.9d6095ba.js deleted file mode 100644 index 53157f26d..000000000 --- a/docs/.vuepress/dist/assets/js/199.9d6095ba.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[199],{571:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"unicode-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-hpp"}},[t._v("#")]),t._v(" Unicode.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/encoding/Unicode.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/encoding/Unicode.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/encoding/Unicode.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"unicode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode"}},[t._v("#")]),t._v(" Unicode")]),t._v(" "),a("p",[t._v("Helper class for processing unicode characters.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Unicode")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("v_buff_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-getutf8charsequencelength"}},[t._v("getUtf8CharSequenceLength")])]),t._v(" "),a("td",[t._v("Get length in bytes of UTF-8 character by its first byte.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_buff_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-getutf8charsequencelengthforcode"}},[t._v("getUtf8CharSequenceLengthForCode")])]),t._v(" "),a("td",[t._v("Get length in bytes of UTF-8 character by its code.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-encodeutf8char"}},[t._v("encodeUtf8Char")])]),t._v(" "),a("td",[t._v("Get code of UTF-8 character.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_buff_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-decodeutf8char"}},[t._v("decodeUtf8Char")])]),t._v(" "),a("td",[t._v("Write UTF-8 character to buffer.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-codetoutf16surrogatepair"}},[t._v("codeToUtf16SurrogatePair")])]),t._v(" "),a("td",[t._v("Get corresponding UTF-16 surrogate pair for symbol code.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#unicode-utf16surrogatepairtocode"}},[t._v("utf16SurrogatePairToCode")])]),t._v(" "),a("td",[t._v("Get symbol code of corresponding UTF-16 surrogate pair.")])])])]),t._v(" "),a("h3",{attrs:{id:"unicode-getutf8charsequencelength"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-getutf8charsequencelength"}},[t._v("#")]),t._v(" Unicode::getUtf8CharSequenceLength")]),t._v(" "),a("p",[t._v("Get length in bytes of UTF-8 character by its first byte. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" firstByte - first byte of UTF-8 character. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length in bytes of UTF-8 character. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUtf8CharSequenceLength")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 firstByte"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"unicode-getutf8charsequencelengthforcode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-getutf8charsequencelengthforcode"}},[t._v("#")]),t._v(" Unicode::getUtf8CharSequenceLengthForCode")]),t._v(" "),a("p",[t._v("Get length in bytes of UTF-8 character by its code. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" code - code of UTF-8 character. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length in bytes of UTF-8 character. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUtf8CharSequenceLengthForCode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint32 code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"unicode-encodeutf8char"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-encodeutf8char"}},[t._v("#")]),t._v(" Unicode::encodeUtf8Char")]),t._v(" "),a("p",[t._v("Get code of UTF-8 character. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" sequence - pointer to first byte of UTF-8 character. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" length - out parameter. Length in bytes of UTF-8 character. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - code of UTF-8 character. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("encodeUtf8Char")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" sequence"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" length"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"unicode-decodeutf8char"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-decodeutf8char"}},[t._v("#")]),t._v(" Unicode::decodeUtf8Char")]),t._v(" "),a("p",[t._v("Write UTF-8 character to buffer. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" code - UTF-8 character code. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" buffer - pointer to write UTF-8 character to. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - length in bytes of UTF-8 character. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_buff_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeUtf8Char")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" p_char8 buffer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"unicode-codetoutf16surrogatepair"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-codetoutf16surrogatepair"}},[t._v("#")]),t._v(" Unicode::codeToUtf16SurrogatePair")]),t._v(" "),a("p",[t._v("Get corresponding UTF-16 surrogate pair for symbol code. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" code - symbol code. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" high - out parameter. High surrogate. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" low - out parameter. Low surrogate. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeToUtf16SurrogatePair")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int16"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" high"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int16"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" low"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"unicode-utf16surrogatepairtocode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unicode-utf16surrogatepairtocode"}},[t._v("#")]),t._v(" Unicode::utf16SurrogatePairToCode")]),t._v(" "),a("p",[t._v("Get symbol code of corresponding UTF-16 surrogate pair. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" high - High surrogate. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" low - Low surrogate. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - symbol code. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("utf16SurrogatePairToCode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int16 high"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int16 low"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/20.203d15cc.js b/docs/.vuepress/dist/assets/js/20.203d15cc.js deleted file mode 100644 index aed956cec..000000000 --- a/docs/.vuepress/dist/assets/js/20.203d15cc.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{392:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"curl-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curl-hpp"}},[t._v("#")]),t._v(" Curl.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/Curl.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/Curl.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-curl")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-curl/io/Curl.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"curlheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlheaders"}},[t._v("#")]),t._v(" CurlHeaders")]),t._v(" "),s("p",[t._v("Wrapper over "),s("code",[t._v("curl_slist")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CurlHeaders")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlheaders-curlheaders"}},[t._v("CurlHeaders")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlheaders-~curlheaders"}},[t._v("~CurlHeaders")])]),t._v(" "),s("td",[t._v("Non-virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlheaders-append"}},[t._v("append")])]),t._v(" "),s("td",[t._v("Append Header to "),s("code",[t._v("curl_slist")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("curl_slist*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlheaders-getcurllist"}},[t._v("getCurlList")])]),t._v(" "),s("td",[t._v("Get underlying "),s("code",[t._v("curl_slist")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"curlheaders-curlheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlheaders-curlheaders"}},[t._v("#")]),t._v(" CurlHeaders::CurlHeaders")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlheaders-curlheaders-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlheaders-curlheaders-2"}},[t._v("#")]),t._v(" CurlHeaders::~CurlHeaders")]),t._v(" "),s("p",[t._v("Non-virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlheaders-append"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlheaders-append"}},[t._v("#")]),t._v(" CurlHeaders::append")]),t._v(" "),s("p",[t._v("Append Header to "),s("code",[t._v("curl_slist")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - header name. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - header value. "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("append")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlheaders-getcurllist"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlheaders-getcurllist"}},[t._v("#")]),t._v(" CurlHeaders::getCurlList")]),t._v(" "),s("p",[t._v("Get underlying "),s("code",[t._v("curl_slist")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("curl_slist*")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("curl_slist"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCurlList")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"curlhandles"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlhandles"}},[t._v("#")]),t._v(" CurlHandles")]),t._v(" "),s("p",[t._v("Pair of "),s("code",[t._v("CURL")]),t._v(" and "),s("code",[t._v("CURLM")]),t._v(". Curl-multi is used by "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/RequestExecutor/#requestexecutor"}},[t._v("oatpp::curl::RequestExecutor")]),t._v(", "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyReader/#curlbodyreader"}},[t._v("oatpp::curl::io::CurlBodyReader")]),t._v(", "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/CurlBodyWriter/#curlbodywriter"}},[t._v("oatpp::curl::io::CurlBodyWriter")]),t._v(" just for non-blocking perform rather then for multi-handle-perform.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CurlHandles")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlhandles-curlhandles"}},[t._v("CurlHandles")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlhandles-~curlhandles"}},[t._v("~CurlHandles")])]),t._v(" "),s("td",[t._v("Non-virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("CURL*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlhandles-geteasyhandle"}},[t._v("getEasyHandle")])]),t._v(" "),s("td",[t._v("Get curl easy handle.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("CURLM*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#curlhandles-getmultihandle"}},[t._v("getMultiHandle")])]),t._v(" "),s("td",[t._v("Get curl multi handle.")])])])]),t._v(" "),s("h3",{attrs:{id:"curlhandles-curlhandles"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlhandles-curlhandles"}},[t._v("#")]),t._v(" CurlHandles::CurlHandles")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlHandles")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlhandles-curlhandles-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlhandles-curlhandles-2"}},[t._v("#")]),t._v(" CurlHandles::~CurlHandles")]),t._v(" "),s("p",[t._v("Non-virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlHandles")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlhandles-geteasyhandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlhandles-geteasyhandle"}},[t._v("#")]),t._v(" CurlHandles::getEasyHandle")]),t._v(" "),s("p",[t._v("Get curl easy handle. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("CURL*")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CURL"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEasyHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"curlhandles-getmultihandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#curlhandles-getmultihandle"}},[t._v("#")]),t._v(" CurlHandles::getMultiHandle")]),t._v(" "),s("p",[t._v("Get curl multi handle. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("CURLM*")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("CURLM"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMultiHandle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/200.dbbe5fed.js b/docs/.vuepress/dist/assets/js/200.dbbe5fed.js deleted file mode 100644 index 76d29c19a..000000000 --- a/docs/.vuepress/dist/assets/js/200.dbbe5fed.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[200],{572:function(s,a,t){"use strict";t.r(a);var r=t(42),e=Object(r.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"address-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-hpp"}},[s._v("#")]),s._v(" Address.hpp"),t("seo")],1),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/Address.hpp",target:"_blank",rel:"noopener noreferrer"}},[s._v("This File On Github"),t("OutboundLink")],1),t("br"),s._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/Address.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[s._v("Ask A Question"),t("OutboundLink")],1)]),s._v(" "),t("p",[t("code",[s._v("API: latest")]),t("br"),s._v(" "),t("code",[s._v("module: oatpp")]),t("br"),s._v(" "),t("code",[s._v('#include "oatpp/network/Address.hpp"')])]),s._v(" "),t("h2",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[s._v("#")]),s._v(" Address")]),s._v(" "),t("p",[s._v("Network address.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" network "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Address")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])])]),t("h3",{attrs:{id:"fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[s._v("#")]),s._v(" Fields")]),s._v(" "),t("table",[t("thead",[t("tr",[t("th",[s._v("Type")]),s._v(" "),t("th",[s._v("Name")]),s._v(" "),t("th",[s._v("Summary")])])]),s._v(" "),t("tbody",[t("tr",[t("td",[t("code",[s._v("oatpp::String")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#address-host"}},[s._v("host")])]),s._v(" "),t("td",[s._v('Host name without schema and port. Ex.: "oatpp.io", "127.0.0.1", "localhost".')])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("v_uint16")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#address-port"}},[s._v("port")])]),s._v(" "),t("td",[s._v("Port.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("Family")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#address-family"}},[s._v("family")])]),s._v(" "),t("td",[s._v("Family "),t("a",{attrs:{href:"#address-family"}},[s._v("Address::Family")]),s._v(".")])])])]),s._v(" "),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[s._v("#")]),s._v(" Methods")]),s._v(" "),t("table",[t("thead",[t("tr",[t("th",[s._v("Return Type")]),s._v(" "),t("th",[s._v("Name")]),s._v(" "),t("th",[s._v("Summary")])])]),s._v(" "),t("tbody",[t("tr",[t("td",[t("code",[s._v("[none]")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#address-address"}},[s._v("Address")])]),s._v(" "),t("td",[s._v("Constructor.")])])])]),s._v(" "),t("h3",{attrs:{id:"address-host"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-host"}},[s._v("#")]),s._v(" Address::host")]),s._v(" "),t("p",[s._v('Host name without schema and port. Ex.: "oatpp.io", "127.0.0.1", "localhost".')]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String host\n")])])]),t("h3",{attrs:{id:"address-port"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-port"}},[s._v("#")]),s._v(" Address::port")]),s._v(" "),t("p",[s._v("Port.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("v_uint16 port\n")])])]),t("h3",{attrs:{id:"address-family"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-family"}},[s._v("#")]),s._v(" Address::family")]),s._v(" "),t("p",[s._v("Family "),t("a",{attrs:{href:"#address-family"}},[s._v("Address::Family")]),s._v(".")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("Family family\n")])])]),t("h3",{attrs:{id:"address-address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-address"}},[s._v("#")]),s._v(" Address::Address")]),s._v(" "),t("p",[s._v("Constructor. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" pHost ")]),t("li",[t("strong",[s._v("@param")]),s._v(" pPort ")]),t("li",[t("strong",[s._v("@param")]),s._v(" pFamily ")])])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" pHost"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" v_uint16 pPort"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" Family pFamily "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" UNSPEC"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h2",{attrs:{id:"address-family-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-family-2"}},[s._v("#")]),s._v(" Address::Family")]),s._v(" "),t("p",[s._v("Address family.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" network "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Address")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])])]),t("h3",{attrs:{id:"address-family-ip-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-family-ip-4"}},[s._v("#")]),s._v(" Address::Family::IP_4")]),s._v(" "),t("p",[s._v("IPv4.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("IP_4 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n")])])]),t("h3",{attrs:{id:"address-family-ip-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-family-ip-6"}},[s._v("#")]),s._v(" Address::Family::IP_6")]),s._v(" "),t("p",[s._v("IPv6.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("IP_6 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n")])])]),t("h3",{attrs:{id:"address-family-unspec"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address-family-unspec"}},[s._v("#")]),s._v(" Address::Family::UNSPEC")]),s._v(" "),t("p",[s._v("Unspecified.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("UNSPEC "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/201.0d6a7152.js b/docs/.vuepress/dist/assets/js/201.0d6a7152.js deleted file mode 100644 index 00dddf48d..000000000 --- a/docs/.vuepress/dist/assets/js/201.0d6a7152.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[201],{573:function(t,a,e){"use strict";e.r(a);var n=e(42),r=Object(n.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connectionhandler-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-hpp"}},[t._v("#")]),t._v(" ConnectionHandler.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/ConnectionHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/ConnectionHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/ConnectionHandler.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connectionhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler"}},[t._v("#")]),t._v(" ConnectionHandler")]),t._v(" "),e("p",[t._v("Abstract ConnectionHandler.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionHandler")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOStream")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionhandler-iostream"}},[t._v("IOStream")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::unordered_map")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionhandler-parametermap"}},[t._v("ParameterMap")])]),t._v(" "),e("td",[t._v("Convenience typedef for accompanying parameters of connection handling.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionhandler-~connectionhandler"}},[t._v("~ConnectionHandler")])]),t._v(" "),e("td",[t._v("Virtual Destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionhandler-handleconnection"}},[t._v("handleConnection")])]),t._v(" "),e("td",[t._v("Handle provided connection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionhandler-stop"}},[t._v("stop")])]),t._v(" "),e("td",[t._v("Stop all threads here")])])])]),t._v(" "),e("h3",{attrs:{id:"connectionhandler-iostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-iostream"}},[t._v("#")]),t._v(" ConnectionHandler::IOStream")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream IOStream\n")])])]),e("h3",{attrs:{id:"connectionhandler-parametermap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-parametermap"}},[t._v("#")]),t._v(" ConnectionHandler::ParameterMap")]),t._v(" "),e("p",[t._v("Convenience typedef for accompanying parameters of connection handling.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" ParameterMap\n")])])]),e("h3",{attrs:{id:"connectionhandler-connectionhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-connectionhandler"}},[t._v("#")]),t._v(" ConnectionHandler::~ConnectionHandler")]),t._v(" "),e("p",[t._v("Virtual Destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionhandler-handleconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-handleconnection"}},[t._v("#")]),t._v(" ConnectionHandler::handleConnection")]),t._v(" "),e("p",[t._v("Handle provided connection. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connectionData - see "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" params - accompanying parameters. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionhandler-stop"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionhandler-stop"}},[t._v("#")]),t._v(" ConnectionHandler::stop")]),t._v(" "),e("p",[t._v("Stop all threads here")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/202.79c3cc5e.js b/docs/.vuepress/dist/assets/js/202.79c3cc5e.js deleted file mode 100644 index aa66a96be..000000000 --- a/docs/.vuepress/dist/assets/js/202.79c3cc5e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[202],{574:function(t,o,n){"use strict";n.r(o);var a=n(42),e=Object(a.a)({},(function(){var t=this,o=t.$createElement,n=t._self._c||o;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connectionpool-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionpool-hpp"}},[t._v("#")]),t._v(" ConnectionPool.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/ConnectionPool.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/ConnectionPool.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp/network/ConnectionPool.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connectionacquisitionproxy"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionacquisitionproxy"}},[t._v("#")]),t._v(" ConnectionAcquisitionProxy")]),t._v(" "),n("p",[t._v("Wrapper over "),n("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". Will acquire connection from the pool on initialization and will return connection to the pool on destruction.")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionAcquisitionProxy")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AcquisitionProxy"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ConnectionAcquisitionProxy"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);o.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/203.49b797b8.js b/docs/.vuepress/dist/assets/js/203.49b797b8.js deleted file mode 100644 index 87e8e1ab7..000000000 --- a/docs/.vuepress/dist/assets/js/203.49b797b8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[203],{575:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/network/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Abstract ConnectionProvider. "),r("br"),t._v(" Basically it returns whatever stream ("),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v("). "),r("br"),t._v(" User of ConnectionProvider should care about IOStream only. All other properties are optional.")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"fields"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("const char* const")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-property-host"}},[t._v("PROPERTY_HOST")])]),t._v(" "),r("td",[t._v("Predefined property key for HOST.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const char* const")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-property-port"}},[t._v("PROPERTY_PORT")])]),t._v(" "),r("td",[t._v("Predefined property key for PORT.")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-property-host"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-property-host"}},[t._v("#")]),t._v(" ConnectionProvider::PROPERTY_HOST")]),t._v(" "),r("p",[t._v("Predefined property key for HOST.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" PROPERTY_HOST\n")])])]),r("h3",{attrs:{id:"connectionprovider-property-port"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-property-port"}},[t._v("#")]),t._v(" ConnectionProvider::PROPERTY_PORT")]),t._v(" "),r("p",[t._v("Predefined property key for PORT.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" PROPERTY_PORT\n")])])]),r("h2",{attrs:{id:"serverconnectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#serverconnectionprovider"}},[t._v("#")]),t._v(" ServerConnectionProvider")]),t._v(" "),r("p",[t._v("No properties here. It is just a logical division")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ServerConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h2",{attrs:{id:"clientconnectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#clientconnectionprovider"}},[t._v("#")]),t._v(" ClientConnectionProvider")]),t._v(" "),r("p",[t._v("No properties here. It is just a logical division")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ClientConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/204.9b2e8396.js b/docs/.vuepress/dist/assets/js/204.9b2e8396.js deleted file mode 100644 index aab0aff50..000000000 --- a/docs/.vuepress/dist/assets/js/204.9b2e8396.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[204],{576:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionproviderswitch-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-hpp"}},[t._v("#")]),t._v(" ConnectionProviderSwitch.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/ConnectionProviderSwitch.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/ConnectionProviderSwitch.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/network/ConnectionProviderSwitch.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionproviderswitch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch"}},[t._v("#")]),t._v(" ConnectionProviderSwitch")]),t._v(" "),r("p",[t._v("ConnectionProviderSwitch can be used to hot-change connection providers. Ex.: to hot-reload server certificate.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProviderSwitch")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ClientConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionproviderswitch-connectionproviderswitch"}},[t._v("ConnectionProviderSwitch")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Default constructor. ")]),r("li",[t._v("Constructor. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionproviderswitch-resetprovider"}},[t._v("resetProvider")])]),t._v(" "),r("td",[t._v("Reset current provider.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionproviderswitch-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get new connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionproviderswitch-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("Get new connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionproviderswitch-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Stop current provider.")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionproviderswitch-connectionproviderswitch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-connectionproviderswitch"}},[t._v("#")]),t._v(" ConnectionProviderSwitch::ConnectionProviderSwitch")]),t._v(" "),r("ol",[r("li",[t._v("Default constructor."),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProviderSwitch")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" provider ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProviderSwitch")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionproviderswitch-resetprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-resetprovider"}},[t._v("#")]),t._v(" ConnectionProviderSwitch::resetProvider")]),t._v(" "),r("p",[t._v("Reset current provider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" provider ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("resetProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionproviderswitch-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-get"}},[t._v("#")]),t._v(" ConnectionProviderSwitch::get")]),t._v(" "),r("p",[t._v("Get new connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionproviderswitch-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-getasync"}},[t._v("#")]),t._v(" ConnectionProviderSwitch::getAsync")]),t._v(" "),r("p",[t._v("Get new connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionproviderswitch-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionproviderswitch-stop"}},[t._v("#")]),t._v(" ConnectionProviderSwitch::stop")]),t._v(" "),r("p",[t._v("Stop current provider.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/205.5e2d84e6.js b/docs/.vuepress/dist/assets/js/205.5e2d84e6.js deleted file mode 100644 index a368dee02..000000000 --- a/docs/.vuepress/dist/assets/js/205.5e2d84e6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[205],{577:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"server-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-hpp"}},[t._v("#")]),t._v(" Server.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/Server.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/Server.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/network/Server.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server"}},[t._v("#")]),t._v(" Server")]),t._v(" "),a("p",[t._v("Server calls oatpp::network::ConnectionProvider::get in the loop and passes obtained Connection to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Server")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-status-created"}},[t._v("STATUS_CREATED")])]),t._v(" "),a("td",[t._v("Status constant.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-status-starting"}},[t._v("STATUS_STARTING")])]),t._v(" "),a("td",[t._v("Status constant.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-status-running"}},[t._v("STATUS_RUNNING")])]),t._v(" "),a("td",[t._v("Status constant.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-status-stopping"}},[t._v("STATUS_STOPPING")])]),t._v(" "),a("td",[t._v("Status constant.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-status-done"}},[t._v("STATUS_DONE")])]),t._v(" "),a("td",[t._v("Status constant.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-server"}},[t._v("Server")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Server.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-run"}},[t._v("run")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection ")]),a("li",[t._v("Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Break server loop.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-getstatus"}},[t._v("getStatus")])]),t._v(" "),a("td",[t._v("Get server status.")])])])]),t._v(" "),a("h3",{attrs:{id:"server-status-created"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-status-created"}},[t._v("#")]),t._v(" Server::STATUS_CREATED")]),t._v(" "),a("p",[t._v("Status constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 STATUS_CREATED\n")])])]),a("h3",{attrs:{id:"server-status-starting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-status-starting"}},[t._v("#")]),t._v(" Server::STATUS_STARTING")]),t._v(" "),a("p",[t._v("Status constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 STATUS_STARTING\n")])])]),a("h3",{attrs:{id:"server-status-running"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-status-running"}},[t._v("#")]),t._v(" Server::STATUS_RUNNING")]),t._v(" "),a("p",[t._v("Status constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 STATUS_RUNNING\n")])])]),a("h3",{attrs:{id:"server-status-stopping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-status-stopping"}},[t._v("#")]),t._v(" Server::STATUS_STOPPING")]),t._v(" "),a("p",[t._v("Status constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 STATUS_STOPPING\n")])])]),a("h3",{attrs:{id:"server-status-done"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-status-done"}},[t._v("#")]),t._v(" Server::STATUS_DONE")]),t._v(" "),a("p",[t._v("Status constant.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 STATUS_DONE\n")])])]),a("h3",{attrs:{id:"server-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-server"}},[t._v("#")]),t._v(" Server::Server")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connectionProvider - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#connectionprovider"}},[t._v("oatpp::network::ConnectionProvider")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" connectionHandler - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"server-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-createshared"}},[t._v("#")]),t._v(" Server::createShared")]),t._v(" "),a("p",[t._v("Create shared Server. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connectionProvider - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#connectionprovider"}},[t._v("oatpp::network::ConnectionProvider")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" connectionHandler - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Server. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"server-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-run"}},[t._v("#")]),t._v(" Server::run")]),t._v(" "),a("ol",[a("li",[t._v("Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" conditional - Function that is called every mainloop iteration to check if the server should continue to run "),a("br"),t._v(" Return true to let the server continue, false to shut it down. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("function"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" conditional "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1),t._v(" "),a("li",[t._v("Call oatpp::network::ConnectionProvider::getConnection in the loop and passes obtained Connection to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" startAsNewThread - Start the server blocking (thread of callee) or non-blocking (own thread) deprecated Deprecated since 1.3.0, will be removed in the next release. The new repository https://github.com/oatpp/oatpp-threaded-starter shows many configurations how to run Oat++ in its own thread. From simple No-Stop to Stop-Simple and ending in Oat++ completely isolated in its own thread-scope. We recommend the Stop-Simple for most applications! You can find it here: https://github.com/oatpp/oatpp-threaded-starter/blob/master/src/App_StopSimple.cpp The other examples are non trivial and highly specialized on specific environments or requirements. Please read the comments carefully and think about the consequences twice. If someone wants to use them please get back to us in an issue in the new repository and we can assist you with them. Again: These examples introduce special conditions and requirements for your code! ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" startAsNewThread"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1)]),t._v(" "),a("h3",{attrs:{id:"server-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-stop"}},[t._v("#")]),t._v(" Server::stop")]),t._v(" "),a("p",[t._v("Break server loop. Note: thread can still be blocked on the "),a("a",{attrs:{href:"#server-run"}},[t._v("Server::run()")]),t._v(" call as it may be waiting for ConnectionProvider to provide connection.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"server-getstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-getstatus"}},[t._v("#")]),t._v(" Server::getStatus")]),t._v(" "),a("p",[t._v("Get server status. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - one of:"),a("br"),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#server-status-created"}},[t._v("Server::STATUS_CREATED")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-status-running"}},[t._v("Server::STATUS_RUNNING")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-status-stopping"}},[t._v("Server::STATUS_STOPPING")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-status-done"}},[t._v("Server::STATUS_DONE")])])])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStatus")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/206.bac8bb77.js b/docs/.vuepress/dist/assets/js/206.bac8bb77.js deleted file mode 100644 index b8acda61d..000000000 --- a/docs/.vuepress/dist/assets/js/206.bac8bb77.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[206],{578:function(a,t,r){"use strict";r.r(t);var s=r(42),e=Object(s.a)({},(function(){var a=this,t=a.$createElement,r=a._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[r("h1",{attrs:{id:"url-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-hpp"}},[a._v("#")]),a._v(" Url.hpp"),r("seo")],1),a._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/Url.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),r("OutboundLink")],1),r("br"),a._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/Url.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),r("OutboundLink")],1)]),a._v(" "),r("p",[r("code",[a._v("API: latest")]),r("br"),a._v(" "),r("code",[a._v("module: oatpp")]),r("br"),a._v(" "),r("code",[a._v('#include "oatpp/network/Url.hpp"')])]),a._v(" "),r("h2",{attrs:{id:"url"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url"}},[a._v("#")]),a._v(" Url")]),a._v(" "),r("p",[a._v("Class holding URL information.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Url")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"typedefs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[a._v("#")]),a._v(" Typedefs")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("oatpp::data::share::StringKeyLabel")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-stringkeylabel"}},[a._v("StringKeyLabel")])]),a._v(" "),r("td",[a._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[a._v("oatpp::data::share::StringKeyLabel")]),a._v(".")],1)]),a._v(" "),r("tr",[r("td",[r("code",[a._v("oatpp::data::share::LazyStringMultimap")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parameters"}},[a._v("Parameters")])]),a._v(" "),r("td",[a._v("Parameters - map string to string. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[a._v("oatpp::data::share::LazyStringMultimap")]),a._v(".")],1)])])]),a._v(" "),r("h3",{attrs:{id:"fields"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-scheme"}},[a._v("scheme")])]),a._v(" "),r("td",[a._v("Url scheme. Ex.: [http, https, ftp, etc.]")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("Authority")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-authority"}},[a._v("authority")])]),a._v(" "),r("td",[a._v("Utl authority.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-path"}},[a._v("path")])]),a._v(" "),r("td",[a._v("Path to resource.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("Parameters")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-queryparams"}},[a._v("queryParams")])]),a._v(" "),r("td",[a._v("Query params.")])])])]),a._v(" "),r("h3",{attrs:{id:"url-stringkeylabel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-stringkeylabel"}},[a._v("#")]),a._v(" Url::StringKeyLabel")]),a._v(" "),r("p",[a._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[a._v("oatpp::data::share::StringKeyLabel")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("StringKeyLabel StringKeyLabel\n")])])]),r("h3",{attrs:{id:"url-parameters"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parameters"}},[a._v("#")]),a._v(" Url::Parameters")]),a._v(" "),r("p",[a._v("Parameters - map string to string. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[a._v("oatpp::data::share::LazyStringMultimap")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("LazyStringMultimap"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("StringKeyLabel"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" Parameters\n")])])]),r("h3",{attrs:{id:"url-scheme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-scheme"}},[a._v("#")]),a._v(" Url::scheme")]),a._v(" "),r("p",[a._v("Url scheme. Ex.: [http, https, ftp, etc.]")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String scheme\n")])])]),r("h3",{attrs:{id:"url-authority"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-authority"}},[a._v("#")]),a._v(" Url::authority")]),a._v(" "),r("p",[a._v("Utl authority.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("Authority authority\n")])])]),r("h3",{attrs:{id:"url-path"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-path"}},[a._v("#")]),a._v(" Url::path")]),a._v(" "),r("p",[a._v("Path to resource.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String path\n")])])]),r("h3",{attrs:{id:"url-queryparams"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-queryparams"}},[a._v("#")]),a._v(" Url::queryParams")]),a._v(" "),r("p",[a._v("Query params.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("Parameters queryParams\n")])])]),r("h2",{attrs:{id:"url-authority-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-authority-2"}},[a._v("#")]),a._v(" Url::Authority")]),a._v(" "),r("p",[a._v("Structure representing URL Authority information.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Url")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("struct")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Authority")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"fields-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[a._v("#")]),a._v(" Fields")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-authority-userinfo"}},[a._v("userInfo")])]),a._v(" "),r("td",[a._v("User info.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-authority-host"}},[a._v("host")])]),a._v(" "),r("td",[a._v("Host.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("v_int32")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-authority-port"}},[a._v("port")])]),a._v(" "),r("td",[a._v("Port. Treat -1 as undefined or as default.")])])])]),a._v(" "),r("h3",{attrs:{id:"url-authority-userinfo"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-authority-userinfo"}},[a._v("#")]),a._v(" Url::Authority::userInfo")]),a._v(" "),r("p",[a._v("User info.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String userInfo\n")])])]),r("h3",{attrs:{id:"url-authority-host"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-authority-host"}},[a._v("#")]),a._v(" Url::Authority::host")]),a._v(" "),r("p",[a._v("Host.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String host\n")])])]),r("h3",{attrs:{id:"url-authority-port"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-authority-port"}},[a._v("#")]),a._v(" Url::Authority::port")]),a._v(" "),r("p",[a._v("Port. Treat -1 as undefined or as default.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("v_int32 port "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n")])])]),r("h2",{attrs:{id:"url-parser"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser"}},[a._v("#")]),a._v(" Url::Parser")]),a._v(" "),r("p",[a._v("Url parser.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Url")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Parser")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parser-parsescheme"}},[a._v("parseScheme")])]),a._v(" "),r("td",[a._v("parse "),r("code",[a._v("")]),a._v(":")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("Url::Authority")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parser-parseauthority"}},[a._v("parseAuthority")])]),a._v(" "),r("td",[a._v("parse url authority components.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("oatpp::String")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parser-parsepath"}},[a._v("parsePath")])]),a._v(" "),r("td",[a._v("parse path of the url")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parser-parsequeryparams"}},[a._v("parseQueryParams")])]),a._v(" "),r("td",[a._v("Multiple implementations: "),r("br"),r("ol",[r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by ParsingCaret ")]),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by str ")]),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by ParsingCaret ")]),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by str ")])])])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("Url")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#url-parser-parseurl"}},[a._v("parseUrl")])]),a._v(" "),r("td",[a._v("Multiple implementations: "),r("br"),r("ol",[r("li",[a._v("Parse Url ")]),r("li",[a._v("Parse Url ")])])])])])]),a._v(" "),r("h3",{attrs:{id:"url-parser-parsescheme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser-parsescheme"}},[a._v("#")]),a._v(" Url::Parser::parseScheme")]),a._v(" "),r("p",[a._v("parse "),r("code",[a._v("")]),a._v(': example "http", "https", "ftp" returns lowercase string before \':\' char caret should be at the first char of the scheme')]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseScheme")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"url-parser-parseauthority"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser-parseauthority"}},[a._v("#")]),a._v(" Url::Parser::parseAuthority")]),a._v(" "),r("p",[a._v('parse url authority components. userinfo is not parsed into login and password separately as inclusion of password in userinfo is deprecated and ignored here caret should be at the first char of the authority (not at "//")')]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" Url"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Authority "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseAuthority")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"url-parser-parsepath"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser-parsepath"}},[a._v("#")]),a._v(" Url::Parser::parsePath")]),a._v(" "),r("p",[a._v("parse path of the url caret should be at the first char of the path")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parsePath")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"url-parser-parsequeryparams"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser-parsequeryparams"}},[a._v("#")]),a._v(" Url::Parser::parseQueryParams")]),a._v(" "),r("ol",[r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by ParsingCaret and put that params to Parameters map"),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseQueryParams")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Url"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Parameters"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" params"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by str and put that params to Parameters map"),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseQueryParams")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Url"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Parameters"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" params"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" str"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by ParsingCaret"),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" Url"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Parameters "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseQueryParams")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),r("li",[a._v("parse query params in form of "),r("code",[a._v('"?==..."')]),a._v(" referred by str"),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" Url"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Parameters "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseQueryParams")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" str"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])]),a._v(" "),r("h3",{attrs:{id:"url-parser-parseurl"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#url-parser-parseurl"}},[a._v("#")]),a._v(" Url::Parser::parseUrl")]),a._v(" "),r("ol",[r("li",[a._v("Parse Url "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" caret ")]),r("li",[r("strong",[a._v("@return")]),a._v(" parsed URL structure ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" Url "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseUrl")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("parser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Caret"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" caret"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])]),a._v(" "),r("li",[a._v("Parse Url "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" str ")]),r("li",[r("strong",[a._v("@return")]),a._v(" parsed URL structure ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" Url "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseUrl")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" str"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/207.69288777.js b/docs/.vuepress/dist/assets/js/207.69288777.js deleted file mode 100644 index 505c897d8..000000000 --- a/docs/.vuepress/dist/assets/js/207.69288777.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[207],{579:function(t,e,n){"use strict";n.r(e);var a=n(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connectioninactivitychecker-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectioninactivitychecker-hpp"}},[t._v("#")]),t._v(" ConnectionInactivityChecker.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/monitor/ConnectionInactivityChecker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/monitor/ConnectionInactivityChecker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp/network/monitor/ConnectionInactivityChecker.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connectioninactivitychecker"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectioninactivitychecker"}},[t._v("#")]),t._v(" ConnectionInactivityChecker")]),t._v(" "),n("p",[t._v("ConnectionInactivityChecker - checks if a connection is inactive (has no read/writes) and whether it should be closed. Extends - "),n("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/MetricsChecker/#metricschecker"}},[t._v("oatpp::network::monitor::MetricsChecker")]),t._v(".")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionInactivityChecker")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" MetricsChecker "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),n("h3",{attrs:{id:"methods"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),n("table",[n("thead",[n("tr",[n("th",[t._v("Return Type")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Summary")])])]),t._v(" "),n("tbody",[n("tr",[n("td",[n("code",[t._v("[none]")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectioninactivitychecker-connectioninactivitychecker"}},[t._v("ConnectionInactivityChecker")])]),t._v(" "),n("td",[t._v("Constructor.")])])])]),t._v(" "),n("h3",{attrs:{id:"connectioninactivitychecker-connectioninactivitychecker"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectioninactivitychecker-connectioninactivitychecker"}},[t._v("#")]),t._v(" ConnectionInactivityChecker::ConnectionInactivityChecker")]),t._v(" "),n("p",[t._v("Constructor. "),n("ul",[n("li",[n("strong",[t._v("@param")]),t._v(" lastReadTimeout - how long can live connection without reads. ")]),n("li",[n("strong",[t._v("@param")]),t._v(" lastWriteTimeout - how long can live connection without writes. ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionInactivityChecker")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" lastReadTimeout"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" lastWriteTimeout"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/208.f1589bc6.js b/docs/.vuepress/dist/assets/js/208.f1589bc6.js deleted file mode 100644 index db70a8828..000000000 --- a/docs/.vuepress/dist/assets/js/208.f1589bc6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[208],{580:function(t,e,a){"use strict";a.r(e);var n=a(42),o=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connectionmaxagechecker-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionmaxagechecker-hpp"}},[t._v("#")]),t._v(" ConnectionMaxAgeChecker.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/monitor/ConnectionMaxAgeChecker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/monitor/ConnectionMaxAgeChecker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/network/monitor/ConnectionMaxAgeChecker.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connectionmaxagechecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionmaxagechecker"}},[t._v("#")]),t._v(" ConnectionMaxAgeChecker")]),t._v(" "),a("p",[t._v("ConnectionMaxAgeChecker - checks if connection is too old and should be closed. Extends - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/MetricsChecker/#metricschecker"}},[t._v("oatpp::network::monitor::MetricsChecker")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionMaxAgeChecker")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" MetricsChecker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionmaxagechecker-connectionmaxagechecker"}},[t._v("ConnectionMaxAgeChecker")])]),t._v(" "),a("td",[t._v("Constructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"connectionmaxagechecker-connectionmaxagechecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionmaxagechecker-connectionmaxagechecker"}},[t._v("#")]),t._v(" ConnectionMaxAgeChecker::ConnectionMaxAgeChecker")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" maxAge - how long should connection live. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionMaxAgeChecker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" maxAge"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/209.6c3de31c.js b/docs/.vuepress/dist/assets/js/209.6c3de31c.js deleted file mode 100644 index 9c2838904..000000000 --- a/docs/.vuepress/dist/assets/js/209.6c3de31c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[209],{581:function(t,n,e){"use strict";e.r(n);var o=e(42),r=Object(o.a)({},(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connectionmonitor-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionmonitor-hpp"}},[t._v("#")]),t._v(" ConnectionMonitor.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/monitor/ConnectionMonitor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/monitor/ConnectionMonitor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/monitor/ConnectionMonitor.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connectionmonitor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionmonitor"}},[t._v("#")]),t._v(" ConnectionMonitor")]),t._v(" "),e("p",[t._v("ConnectionMonitor is a middleman who's able to manage provided connections and close those ones that are not satisfy selected rules.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionMonitor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ClientConnectionProvider"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ServerConnectionProvider "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionmonitor-connectionmonitor"}},[t._v("ConnectionMonitor")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionmonitor-addmetricschecker"}},[t._v("addMetricsChecker")])]),t._v(" "),e("td",[t._v("Add metrics checker.")])])])]),t._v(" "),e("h3",{attrs:{id:"connectionmonitor-connectionmonitor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionmonitor-connectionmonitor"}},[t._v("#")]),t._v(" ConnectionMonitor::ConnectionMonitor")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connectionProvider - underlying connection provider. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionMonitor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionmonitor-addmetricschecker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionmonitor-addmetricschecker"}},[t._v("#")]),t._v(" ConnectionMonitor::addMetricsChecker")]),t._v(" "),e("p",[t._v("Add metrics checker. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" checker - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/MetricsChecker/#metricschecker"}},[t._v("oatpp::network::monitor::MetricsChecker")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addMetricsChecker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MetricsChecker"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" checker"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);n.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/21.60f4c92f.js b/docs/.vuepress/dist/assets/js/21.60f4c92f.js deleted file mode 100644 index 9ee7b67b3..000000000 --- a/docs/.vuepress/dist/assets/js/21.60f4c92f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{395:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"curlbodyreader-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader-hpp"}},[t._v("#")]),t._v(" CurlBodyReader.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/CurlBodyReader.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/CurlBodyReader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-curl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-curl/io/CurlBodyReader.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"curlbodyreader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader"}},[t._v("#")]),t._v(" CurlBodyReader")]),t._v(" "),e("p",[t._v("This class is wrapper over "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/#curlhandles"}},[t._v("oatpp::curl::io::CurlHandles")]),t._v(" to provide input-stream like interface")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CurlBodyReader")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#curlbodyreader-curlbodyreader"}},[t._v("CurlBodyReader")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#curlbodyreader-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read body data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#curlbodyreader-readnonblocking"}},[t._v("readNonBlocking")])]),t._v(" "),e("td",[t._v("Non blocking attempt to Read body data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#curlbodyreader-getavailablebytescount"}},[t._v("getAvailableBytesCount")])]),t._v(" "),e("td",[t._v("Available amount of bytes currently buffered.")])])])]),t._v(" "),e("h3",{attrs:{id:"curlbodyreader-curlbodyreader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader-curlbodyreader"}},[t._v("#")]),t._v(" CurlBodyReader::CurlBodyReader")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" curlHandles - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/#curlhandles"}},[t._v("oatpp::curl::io::CurlHandles")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlBodyReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CurlHandles"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" curlHandles"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"curlbodyreader-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader-read"}},[t._v("#")]),t._v(" CurlBodyReader::read")]),t._v(" "),e("p",[t._v("Read body data. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes read. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"curlbodyreader-readnonblocking"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader-readnonblocking"}},[t._v("#")]),t._v(" CurlBodyReader::readNonBlocking")]),t._v(" "),e("p",[t._v("Non blocking attempt to Read body data. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes read. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readNonBlocking")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"curlbodyreader-getavailablebytescount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlbodyreader-getavailablebytescount"}},[t._v("#")]),t._v(" CurlBodyReader::getAvailableBytesCount")]),t._v(" "),e("p",[t._v("Available amount of bytes currently buffered. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAvailableBytesCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/210.30202064.js b/docs/.vuepress/dist/assets/js/210.30202064.js deleted file mode 100644 index 2ef966209..000000000 --- a/docs/.vuepress/dist/assets/js/210.30202064.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[210],{582:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"metricschecker-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker-hpp"}},[t._v("#")]),t._v(" MetricsChecker.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/monitor/MetricsChecker.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/monitor/MetricsChecker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/network/monitor/MetricsChecker.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"metricschecker"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker"}},[t._v("#")]),t._v(" MetricsChecker")]),t._v(" "),r("p",[t._v("MetricsChecker checks "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/#connectionstats"}},[t._v("oatpp::network::monitor::ConnectionStats")]),t._v(" if those are satisfy the rule.")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MetricsChecker")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#metricschecker-~metricschecker"}},[t._v("~MetricsChecker")])]),t._v(" "),r("td",[t._v("Default virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::vector")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#metricschecker-getmetricslist"}},[t._v("getMetricsList")])]),t._v(" "),r("td",[t._v("Get list of metrics names that are checked by this MetricsChecker.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#metricschecker-createstatcollector"}},[t._v("createStatCollector")])]),t._v(" "),r("td",[t._v("Create "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/#statcollector"}},[t._v("oatpp::network::monitor::StatCollector")]),t._v(" for given "),r("code",[t._v("metricName")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("bool")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#metricschecker-check"}},[t._v("check")])]),t._v(" "),r("td",[t._v("Called by "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionMonitor/#connectionmonitor"}},[t._v("oatpp::network::monitor::ConnectionMonitor")]),t._v(" on each")],1)])])]),t._v(" "),r("h3",{attrs:{id:"metricschecker-metricschecker"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker-metricschecker"}},[t._v("#")]),t._v(" MetricsChecker::~MetricsChecker")]),t._v(" "),r("p",[t._v("Default virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("MetricsChecker")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),r("h3",{attrs:{id:"metricschecker-getmetricslist"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker-getmetricslist"}},[t._v("#")]),t._v(" MetricsChecker::getMetricsList")]),t._v(" "),r("p",[t._v("Get list of metrics names that are checked by this MetricsChecker. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMetricsList")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"metricschecker-createstatcollector"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker-createstatcollector"}},[t._v("#")]),t._v(" MetricsChecker::createStatCollector")]),t._v(" "),r("p",[t._v("Create "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/#statcollector"}},[t._v("oatpp::network::monitor::StatCollector")]),t._v(" for given "),r("code",[t._v("metricName")]),t._v(". This method will be called by "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionMonitor/#connectionmonitor"}},[t._v("oatpp::network::monitor::ConnectionMonitor")]),t._v(" only if there is no such "),r("code",[t._v("StatCollector")]),t._v(" registered in the "),r("code",[t._v("ConnectionMonitor")]),t._v(" yet. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" metricName - name of the metric. ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/#statcollector"}},[t._v("oatpp::network::monitor::StatCollector")]),t._v(". ")],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("StatCollector"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createStatCollector")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" metricName"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"metricschecker-check"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#metricschecker-check"}},[t._v("#")]),t._v(" MetricsChecker::check")]),t._v(" "),r("p",[t._v("Called by "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/ConnectionMonitor/#connectionmonitor"}},[t._v("oatpp::network::monitor::ConnectionMonitor")]),t._v(" on each time interval to check if connection satisfies the rule. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" stats - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/monitor/StatCollector/#connectionstats"}},[t._v("oatpp::network::monitor::ConnectionStats")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" currMicroTime - current time microseconds. ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("true")]),t._v(" if connection satisfies the rule. "),r("code",[t._v("false")]),t._v(" if connection should be closed. ")])])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("check")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ConnectionStats"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stats"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 currMicroTime"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/211.d16992f2.js b/docs/.vuepress/dist/assets/js/211.d16992f2.js deleted file mode 100644 index d35075df6..000000000 --- a/docs/.vuepress/dist/assets/js/211.d16992f2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[211],{583:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"statcollector-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-hpp"}},[t._v("#")]),t._v(" StatCollector.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/monitor/StatCollector.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/monitor/StatCollector.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/monitor/StatCollector.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connectionstats"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats"}},[t._v("#")]),t._v(" ConnectionStats")]),t._v(" "),e("p",[t._v("ConnectionStats.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionStats")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-timestampcreated"}},[t._v("timestampCreated")])]),t._v(" "),e("td",[t._v("Timestamp created microseconds. When connection was created.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-totalread"}},[t._v("totalRead")])]),t._v(" "),e("td",[t._v("Total bytes read from the connection. Logs all bytes when the "),e("code",[t._v("read")]),t._v(" method is called.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-totalwrite"}},[t._v("totalWrite")])]),t._v(" "),e("td",[t._v("Total bytes written to the connection. Logs all bytes when the "),e("code",[t._v("write")]),t._v(" method is called.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-timestamplastread"}},[t._v("timestampLastRead")])]),t._v(" "),e("td",[t._v("Timestamp microseconds when the last successful read was performed on the connection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-timestamplastwrite"}},[t._v("timestampLastWrite")])]),t._v(" "),e("td",[t._v("Timestamp microseconds when the last successful write was performed on the connection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-lastreadsize"}},[t._v("lastReadSize")])]),t._v(" "),e("td",[t._v("Amount of bytes read during the last successful read.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-lastwritesize"}},[t._v("lastWriteSize")])]),t._v(" "),e("td",[t._v("Amount of bytes written during the last successful write.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::unordered_map")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connectionstats-metricsdata"}},[t._v("metricsData")])]),t._v(" "),e("td",[t._v("Data collected by stat-collectors - "),e("a",{attrs:{href:"#statcollector"}},[t._v("StatCollector")])])])])]),t._v(" "),e("h3",{attrs:{id:"connectionstats-timestampcreated"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-timestampcreated"}},[t._v("#")]),t._v(" ConnectionStats::timestampCreated")]),t._v(" "),e("p",[t._v("Timestamp created microseconds. When connection was created.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 timestampCreated "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-totalread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-totalread"}},[t._v("#")]),t._v(" ConnectionStats::totalRead")]),t._v(" "),e("p",[t._v("Total bytes read from the connection. Logs all bytes when the "),e("code",[t._v("read")]),t._v(" method is called.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size totalRead "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-totalwrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-totalwrite"}},[t._v("#")]),t._v(" ConnectionStats::totalWrite")]),t._v(" "),e("p",[t._v("Total bytes written to the connection. Logs all bytes when the "),e("code",[t._v("write")]),t._v(" method is called.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size totalWrite "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-timestamplastread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-timestamplastread"}},[t._v("#")]),t._v(" ConnectionStats::timestampLastRead")]),t._v(" "),e("p",[t._v("Timestamp microseconds when the last successful read was performed on the connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 timestampLastRead "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-timestamplastwrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-timestamplastwrite"}},[t._v("#")]),t._v(" ConnectionStats::timestampLastWrite")]),t._v(" "),e("p",[t._v("Timestamp microseconds when the last successful write was performed on the connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 timestampLastWrite "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-lastreadsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-lastreadsize"}},[t._v("#")]),t._v(" ConnectionStats::lastReadSize")]),t._v(" "),e("p",[t._v("Amount of bytes read during the last successful read.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size lastReadSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-lastwritesize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-lastwritesize"}},[t._v("#")]),t._v(" ConnectionStats::lastWriteSize")]),t._v(" "),e("p",[t._v("Amount of bytes written during the last successful write.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size lastWriteSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"connectionstats-metricsdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connectionstats-metricsdata"}},[t._v("#")]),t._v(" ConnectionStats::metricsData")]),t._v(" "),e("p",[t._v("Data collected by stat-collectors - "),e("a",{attrs:{href:"#statcollector"}},[t._v("StatCollector")])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" metricsData\n")])])]),e("h2",{attrs:{id:"statcollector"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector"}},[t._v("#")]),t._v(" StatCollector")]),t._v(" "),e("p",[t._v("StatCollector collects metrics data of the connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" monitor "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StatCollector")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-~statcollector"}},[t._v("~StatCollector")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-metricname"}},[t._v("metricName")])]),t._v(" "),e("td",[t._v("Unique metric name that is collected by this "),e("code",[t._v("StatCollector")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-createmetricdata"}},[t._v("createMetricData")])]),t._v(" "),e("td",[t._v("Metric data constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-deletemetricdata"}},[t._v("deleteMetricData")])]),t._v(" "),e("td",[t._v("Metric data destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-onread"}},[t._v("onRead")])]),t._v(" "),e("td",[t._v("On connection read event.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#statcollector-onwrite"}},[t._v("onWrite")])]),t._v(" "),e("td",[t._v("On connection write event.")])])])]),t._v(" "),e("h3",{attrs:{id:"statcollector-statcollector"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-statcollector"}},[t._v("#")]),t._v(" StatCollector::~StatCollector")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("StatCollector")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"statcollector-metricname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-metricname"}},[t._v("#")]),t._v(" StatCollector::metricName")]),t._v(" "),e("p",[t._v("Unique metric name that is collected by this "),e("code",[t._v("StatCollector")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - metricName. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("metricName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"statcollector-createmetricdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-createmetricdata"}},[t._v("#")]),t._v(" StatCollector::createMetricData")]),t._v(" "),e("p",[t._v("Metric data constructor. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createMetricData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"statcollector-deletemetricdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-deletemetricdata"}},[t._v("#")]),t._v(" StatCollector::deleteMetricData")]),t._v(" "),e("p",[t._v("Metric data destructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" metricData ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("deleteMetricData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" metricData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"statcollector-onread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-onread"}},[t._v("#")]),t._v(" StatCollector::onRead")]),t._v(" "),e("p",[t._v("On connection read event. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" metricData - metric data of the given connection.- the one created in the "),e("code",[t._v("createMetricData")]),t._v(" method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" readResult - result of the connection read method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" timestamp - timestamp microseconds when the connection "),e("code",[t._v("read")]),t._v(" method was called. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("onRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" metricData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size readResult"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 timestamp"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"statcollector-onwrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#statcollector-onwrite"}},[t._v("#")]),t._v(" StatCollector::onWrite")]),t._v(" "),e("p",[t._v("On connection write event. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" metricData - metric data of the given connection.- the one created in the "),e("code",[t._v("createMetricData")]),t._v(" method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" writeResult - result of the connection write method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" timestamp - timestamp microseconds when the connection "),e("code",[t._v("write")]),t._v(" method was called. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("onWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" metricData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size writeResult"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 timestamp"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/212.961724e7.js b/docs/.vuepress/dist/assets/js/212.961724e7.js deleted file mode 100644 index f33bc882c..000000000 --- a/docs/.vuepress/dist/assets/js/212.961724e7.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[212],{584:function(t,a,e){"use strict";e.r(a);var n=e(42),s=Object(n.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connection-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/tcp/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/tcp/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/tcp/Connection.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),e("p",[t._v("TCP Connection implementation. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(" and "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" tcp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-connection"}},[t._v("Connection")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-~connection"}},[t._v("~Connection")])]),t._v(" "),e("td",[t._v("Virtual Destructor (See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(").")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Implementation of oatpp::data::stream::IOStream::write.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Implementation of oatpp::data::stream::IOStream::read.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get output stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get input stream context. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Close socket handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_handle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gethandle"}},[t._v("getHandle")])]),t._v(" "),e("td",[t._v("Get socket handle.")])])])]),t._v(" "),e("h3",{attrs:{id:"connection-connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection"}},[t._v("#")]),t._v(" Connection::Connection")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" handle - file descriptor (socket handle). See oatpp::v_io_handle. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle handle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-connection-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection-2"}},[t._v("#")]),t._v(" Connection::~Connection")]),t._v(" "),e("p",[t._v("Virtual Destructor (See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v("). Close socket handle.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-write"}},[t._v("#")]),t._v(" Connection::write")]),t._v(" "),e("p",[t._v("Implementation of oatpp::data::stream::IOStream::write. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buff - buffer containing data to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - bytes count you want to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-read"}},[t._v("#")]),t._v(" Connection::read")]),t._v(" "),e("p",[t._v("Implementation of oatpp::data::stream::IOStream::read. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buff - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes read. See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("#")]),t._v(" Connection::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setinputstreamiomode"}},[t._v("#")]),t._v(" Connection::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamiomode"}},[t._v("#")]),t._v(" Connection::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamcontext"}},[t._v("#")]),t._v(" Connection::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-close"}},[t._v("#")]),t._v(" Connection::close")]),t._v(" "),e("p",[t._v("Close socket handle.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-gethandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gethandle"}},[t._v("#")]),t._v(" Connection::getHandle")]),t._v(" "),e("p",[t._v("Get socket handle. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - socket handle. oatpp::v_io_handle. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_handle "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/213.309b5652.js b/docs/.vuepress/dist/assets/js/213.309b5652.js deleted file mode 100644 index 68c5ab88c..000000000 --- a/docs/.vuepress/dist/assets/js/213.309b5652.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[213],{585:function(t,e,r){"use strict";r.r(e);var s=r(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/tcp/client/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/tcp/client/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/network/tcp/client/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Simple provider of clinet TCP connections.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" tcp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ClientConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Create shared client ConnectionProvider.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Implements "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/provider/Provider/#provider-stop"}},[t._v("oatpp::provider::Provider::stop()")]),t._v(". Here does nothing.")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("Get connection in asynchronous manner.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const network::Address&")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getaddress"}},[t._v("getAddress")])]),t._v(" "),r("td",[t._v("Get address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(".")],1)])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("p",[t._v("Create shared client ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Implements "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/provider/Provider/#provider-stop"}},[t._v("oatpp::provider::Provider::stop()")]),t._v(". Here does nothing.")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("Get connection in asynchronous manner. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getaddress"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getaddress"}},[t._v("#")]),t._v(" ConnectionProvider::getAddress")]),t._v(" "),r("p",[t._v("Get address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@return")])])])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAddress")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/214.50c8ab4a.js b/docs/.vuepress/dist/assets/js/214.50c8ab4a.js deleted file mode 100644 index f20547b5a..000000000 --- a/docs/.vuepress/dist/assets/js/214.50c8ab4a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[214],{586:function(t,e,a){"use strict";a.r(e);var n=a(42),r=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connectionprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/tcp/server/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/tcp/server/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),a("p",[t._v("Simple provider of TCP connections.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" tcp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ServerConnectionProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared ConnectionProvider.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-~connectionprovider"}},[t._v("~ConnectionProvider")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Close accept-socket.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),a("td",[t._v("Get incoming connection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),a("td",[t._v("No need to implement this."),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const network::Address&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-getaddress"}},[t._v("getAddress")])]),t._v(" "),a("td",[t._v("Get address - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" address - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),a("code",[t._v("true")]),t._v(" to use "),a("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),a("code",[t._v("false")]),t._v(" to use "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" useExtendedConnections "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),a("p",[t._v("Create shared ConnectionProvider. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" address - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),a("code",[t._v("true")]),t._v(" to use "),a("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),a("code",[t._v("false")]),t._v(" to use "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" useExtendedConnections "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-connectionprovider-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider::~ConnectionProvider")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),a("p",[t._v("Close accept-socket.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),a("p",[t._v("Get incoming connection. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-getasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),a("p",[t._v("No need to implement this."),a("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),a("br"),t._v(" "),a("em",[t._v("It may be implemented later")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-getaddress"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getaddress"}},[t._v("#")]),t._v(" ConnectionProvider::getAddress")]),t._v(" "),a("p",[t._v("Get address - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@return")])])])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAddress")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h2",{attrs:{id:"connectionprovider-extendedconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("#")]),t._v(" ConnectionProvider::ExtendedConnection")]),t._v(" "),a("p",[t._v("Connection with extra data - ex.: peer address.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" tcp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ServerConnectionProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ExtendedConnection")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Connection "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-extendedconnection-extendedconnection"}},[t._v("ExtendedConnection")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-extendedconnection-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),a("td",[t._v("Get output stream context.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-extendedconnection-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),a("td",[t._v("Get input stream context. "),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"connectionprovider-extendedconnection-extendedconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-extendedconnection-extendedconnection"}},[t._v("#")]),t._v(" ConnectionProvider::ExtendedConnection::ExtendedConnection")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" handle - oatpp::v_io_handle. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" properties - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context-properties"}},[t._v("oatpp::data::stream::Context::Properties")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ExtendedConnection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle handle"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Properties"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" properties"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-extendedconnection-getoutputstreamcontext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-extendedconnection-getoutputstreamcontext"}},[t._v("#")]),t._v(" ConnectionProvider::ExtendedConnection::getOutputStreamContext")]),t._v(" "),a("p",[t._v("Get output stream context. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-extendedconnection-getinputstreamcontext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-extendedconnection-getinputstreamcontext"}},[t._v("#")]),t._v(" ConnectionProvider::ExtendedConnection::getInputStreamContext")]),t._v(" "),a("p",[t._v("Get input stream context. "),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/215.d60e68b0.js b/docs/.vuepress/dist/assets/js/215.d60e68b0.js deleted file mode 100644 index 9e9fd3d82..000000000 --- a/docs/.vuepress/dist/assets/js/215.d60e68b0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[215],{587:function(t,a,e){"use strict";e.r(a);var s=e(42),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"interface-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-hpp"}},[t._v("#")]),t._v(" Interface.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/virtual_/Interface.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/virtual_/Interface.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/virtual_/Interface.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"interface"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface"}},[t._v("#")]),t._v(" Interface")]),t._v(" "),e("p",[t._v('"Virtual" Interface provides functionality for accepting "virtual" connections. "virtual" connection is represented by '),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Interface")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-~interface"}},[t._v("~Interface")])]),t._v(" "),e("td",[t._v("Destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-obtainshared"}},[t._v("obtainShared")])]),t._v(" "),e("td",[t._v("Obtain interface for given name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-bind"}},[t._v("bind")])]),t._v(" "),e("td",[t._v("Aquire "),e("a",{attrs:{href:"#interface-listenerlock"}},[t._v("Interface::ListenerLock")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connect"}},[t._v("connect")])]),t._v(" "),e("td",[t._v("Connect to interface.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectnonblocking"}},[t._v("connectNonBlocking")])]),t._v(" "),e("td",[t._v("Connect to interface.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-accept"}},[t._v("accept")])]),t._v(" "),e("td",[t._v("Block and wait for incloming connection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-acceptnonblocking"}},[t._v("acceptNonBlocking")])]),t._v(" "),e("td",[t._v("Check if incoming connection is available. NonBlocking.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-dropallconnection"}},[t._v("dropAllConnection")])]),t._v(" "),e("td",[t._v("Drop all waiting connections.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-notifyacceptors"}},[t._v("notifyAcceptors")])]),t._v(" "),e("td",[t._v("Notify all threads that are waiting on accept().")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-getname"}},[t._v("getName")])]),t._v(" "),e("td",[t._v("Get interface name.")])])])]),t._v(" "),e("h3",{attrs:{id:"interface-interface"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-interface"}},[t._v("#")]),t._v(" Interface::~Interface")]),t._v(" "),e("p",[t._v("Destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Interface")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-obtainshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-obtainshared"}},[t._v("#")]),t._v(" Interface::obtainShared")]),t._v(" "),e("p",[t._v("Obtain interface for given name. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name - name of the interface. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to Interface. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Interface"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("obtainShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-bind"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-bind"}},[t._v("#")]),t._v(" Interface::bind")]),t._v(" "),e("p",[t._v("Aquire "),e("a",{attrs:{href:"#interface-listenerlock"}},[t._v("Interface::ListenerLock")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("a",{attrs:{href:"#interface-listenerlock"}},[t._v("Interface::ListenerLock")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ListenerLock"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("bind")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connect"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connect"}},[t._v("#")]),t._v(" Interface::connect")]),t._v(" "),e("p",[t._v("Connect to interface. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#interface-connectionsubmission"}},[t._v("Interface::ConnectionSubmission")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionSubmission"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("connect")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connectnonblocking"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectnonblocking"}},[t._v("#")]),t._v(" Interface::connectNonBlocking")]),t._v(" "),e("p",[t._v("Connect to interface. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#interface-connectionsubmission"}},[t._v("Interface::ConnectionSubmission")]),t._v(" on success. Empty "),e("code",[t._v("std::shared_ptr")]),t._v(" on failure. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionSubmission"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("connectNonBlocking")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-accept"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-accept"}},[t._v("#")]),t._v(" Interface::accept")]),t._v(" "),e("p",[t._v("Block and wait for incloming connection. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" waitingHandle - reference to a boolean variable. User may set waitingHandle = false and call "),e("a",{attrs:{href:"#interface-notifyacceptors"}},[t._v("Interface::notifyAcceptors()")]),t._v(" in order to break waiting loop. and exit accept() method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" timeout ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("accept")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" waitingHandle "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("duration"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("v_int64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("micro"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" timeout "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("minutes")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-acceptnonblocking"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-acceptnonblocking"}},[t._v("#")]),t._v(" Interface::acceptNonBlocking")]),t._v(" "),e("p",[t._v("Check if incoming connection is available. NonBlocking. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(" if available. Empty "),e("code",[t._v("std::shared_ptr")]),t._v(" if no incoming connection is available at the moment. ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("acceptNonBlocking")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-dropallconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-dropallconnection"}},[t._v("#")]),t._v(" Interface::dropAllConnection")]),t._v(" "),e("p",[t._v("Drop all waiting connections.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("dropAllConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-notifyacceptors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-notifyacceptors"}},[t._v("#")]),t._v(" Interface::notifyAcceptors")]),t._v(" "),e("p",[t._v("Notify all threads that are waiting on accept(). Those threads that have waitingHandle changed to false will be unblocked.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("notifyAcceptors")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-getname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-getname"}},[t._v("#")]),t._v(" Interface::getName")]),t._v(" "),e("p",[t._v("Get interface name. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"interface-listenerlock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-listenerlock"}},[t._v("#")]),t._v(" Interface::ListenerLock")]),t._v(" "),e("p",[e("code",[t._v("ListenerLock")]),t._v(" is the Lock object, which represents interface binding ownership.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Interface")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ListenerLock")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"interface-connectionsubmission"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission")]),t._v(" "),e("p",[t._v('"Future" for '),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Interface")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionSubmission")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectionsubmission-connectionsubmission"}},[t._v("ConnectionSubmission")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectionsubmission-setsocket"}},[t._v("setSocket")])]),t._v(" "),e("td",[t._v("Set socket to be returned in call to "),e("a",{attrs:{href:"#interface-connectionsubmission-getsocket"}},[t._v("Interface::ConnectionSubmission::getSocket()")]),t._v("/"),e("a",{attrs:{href:"#interface-connectionsubmission-getsocketnonblocking"}},[t._v("Interface::ConnectionSubmission::getSocketNonBlocking()")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectionsubmission-getsocket"}},[t._v("getSocket")])]),t._v(" "),e("td",[t._v("Block and wait for socket.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectionsubmission-getsocketnonblocking"}},[t._v("getSocketNonBlocking")])]),t._v(" "),e("td",[t._v("Check if socket already available.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#interface-connectionsubmission-isvalid"}},[t._v("isValid")])]),t._v(" "),e("td",[t._v("Check if submission is still valid.")])])])]),t._v(" "),e("h3",{attrs:{id:"interface-connectionsubmission-connectionsubmission"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission-connectionsubmission"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission::ConnectionSubmission")]),t._v(" "),e("p",[t._v("Constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionSubmission")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" valid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_valid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("valid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connectionsubmission-setsocket"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission-setsocket"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission::setSocket")]),t._v(" "),e("p",[t._v("Set socket to be returned in call to "),e("a",{attrs:{href:"#interface-connectionsubmission-getsocket"}},[t._v("Interface::ConnectionSubmission::getSocket()")]),t._v("/"),e("a",{attrs:{href:"#interface-connectionsubmission-getsocketnonblocking"}},[t._v("Interface::ConnectionSubmission::getSocketNonBlocking()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" socket - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSocket")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" socket"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connectionsubmission-getsocket"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission-getsocket"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission::getSocket")]),t._v(" "),e("p",[t._v("Block and wait for socket. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSocket")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connectionsubmission-getsocketnonblocking"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission-getsocketnonblocking"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission::getSocketNonBlocking")]),t._v(" "),e("p",[t._v("Check if socket already available. User should repeat call if "),e("code",[t._v("(!socket isPending())")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSocketNonBlocking")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"interface-connectionsubmission-isvalid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-connectionsubmission-isvalid"}},[t._v("#")]),t._v(" Interface::ConnectionSubmission::isValid")]),t._v(" "),e("p",[t._v("Check if submission is still valid. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if still valid. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isValid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/216.783cd245.js b/docs/.vuepress/dist/assets/js/216.783cd245.js deleted file mode 100644 index b1bd490b9..000000000 --- a/docs/.vuepress/dist/assets/js/216.783cd245.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[216],{588:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"pipe-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-hpp"}},[t._v("#")]),t._v(" Pipe.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/virtual_/Pipe.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/virtual_/Pipe.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/virtual_/Pipe.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"pipe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe"}},[t._v("#")]),t._v(" Pipe")]),t._v(" "),e("p",[t._v("Virtual pipe implementation. Can be used for unidirectional data transfer between different threads of the same process. "),e("br"),t._v(" Under the hood it uses "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/FIFOBuffer/#synchronizedfifobuffer"}},[t._v("oatpp::data::buffer::SynchronizedFIFOBuffer")]),t._v(" over the "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/IOBuffer/#iobuffer"}},[t._v("oatpp::data::buffer::IOBuffer")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Pipe")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-pipe"}},[t._v("Pipe")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared pipe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-~pipe"}},[t._v("~Pipe")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Writer*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-getwriter"}},[t._v("getWriter")])]),t._v(" "),e("td",[t._v("Get pointer to "),e("a",{attrs:{href:"#pipe-writer"}},[t._v("Pipe::Writer")]),t._v(" for this pipe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Reader*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-getreader"}},[t._v("getReader")])]),t._v(" "),e("td",[t._v("Get pointer to "),e("a",{attrs:{href:"#pipe-reader"}},[t._v("Pipe::Reader")]),t._v(" for this pipe.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Mark pipe as closed.")])])])]),t._v(" "),e("h3",{attrs:{id:"pipe-pipe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-pipe"}},[t._v("#")]),t._v(" Pipe::Pipe")]),t._v(" "),e("p",[t._v("Constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Pipe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-createshared"}},[t._v("#")]),t._v(" Pipe::createShared")]),t._v(" "),e("p",[t._v("Create shared pipe. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to Pipe. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pipe"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-pipe-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-pipe-2"}},[t._v("#")]),t._v(" Pipe::~Pipe")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Pipe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-getwriter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-getwriter"}},[t._v("#")]),t._v(" Pipe::getWriter")]),t._v(" "),e("p",[t._v("Get pointer to "),e("a",{attrs:{href:"#pipe-writer"}},[t._v("Pipe::Writer")]),t._v(" for this pipe. There can be only one "),e("a",{attrs:{href:"#pipe-writer"}},[t._v("Pipe::Writer")]),t._v(" per pipe. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#pipe-writer"}},[t._v("Pipe::Writer")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Writer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getWriter")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-getreader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-getreader"}},[t._v("#")]),t._v(" Pipe::getReader")]),t._v(" "),e("p",[t._v("Get pointer to "),e("a",{attrs:{href:"#pipe-reader"}},[t._v("Pipe::Reader")]),t._v(" for this pipe. There can be only one "),e("a",{attrs:{href:"#pipe-reader"}},[t._v("Pipe::Reader")]),t._v(" per pipe. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#pipe-reader"}},[t._v("Pipe::Reader")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Reader"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-close"}},[t._v("#")]),t._v(" Pipe::close")]),t._v(" "),e("p",[t._v("Mark pipe as closed.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"pipe-reader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader"}},[t._v("#")]),t._v(" Pipe::Reader")]),t._v(" "),e("p",[t._v("Pipe Reader. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". Provides read interface for the pipe. Can work in both blocking and nonblocking regime.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Pipe")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Reader")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-setmaxavailabletoread"}},[t._v("setMaxAvailableToRead")])]),t._v(" "),e("td",[t._v("Limit the available amount of bytes to read from pipe."),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Implements oatpp::data::stream::InputStream::read method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-reader-notifywaitlist"}},[t._v("notifyWaitList")])]),t._v(" "),e("td",[t._v("Notify coroutine wait-list")])])])]),t._v(" "),e("h3",{attrs:{id:"pipe-reader-setmaxavailabletoread"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-setmaxavailabletoread"}},[t._v("#")]),t._v(" Pipe::Reader::setMaxAvailableToRead")]),t._v(" "),e("p",[t._v("Limit the available amount of bytes to read from pipe."),e("br"),t._v(" This method is used for testing purposes only."),e("br"),t._v(" set to -1 in order to ignore this value."),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" maxAvailableToRead - maximum available amount of bytes to read. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setMaxAvailableToRead")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_size maxAvailableToRead"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-reader-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-read"}},[t._v("#")]),t._v(" Pipe::Reader::read")]),t._v(" "),e("p",[t._v("Implements oatpp::data::stream::InputStream::read method. Read data from pipe. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - max count of bytes to read. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-reader-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-setinputstreamiomode"}},[t._v("#")]),t._v(" Pipe::Reader::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-reader-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-getinputstreamiomode"}},[t._v("#")]),t._v(" Pipe::Reader::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-reader-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-getinputstreamcontext"}},[t._v("#")]),t._v(" Pipe::Reader::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-reader-notifywaitlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-reader-notifywaitlist"}},[t._v("#")]),t._v(" Pipe::Reader::notifyWaitList")]),t._v(" "),e("p",[t._v("Notify coroutine wait-list")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("notifyWaitList")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"pipe-writer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer"}},[t._v("#")]),t._v(" Pipe::Writer")]),t._v(" "),e("p",[t._v("Pipe writer. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". Provides write interface for the pipe. Can work in both blocking and nonblocking regime.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Pipe")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Writer")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-setmaxavailabletowrite"}},[t._v("setMaxAvailableToWrite")])]),t._v(" "),e("td",[t._v("Limit the available space for data writes in pipe."),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Implements oatpp::data::stream::OutputStream::write method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#pipe-writer-notifywaitlist"}},[t._v("notifyWaitList")])]),t._v(" "),e("td",[t._v("Notify coroutine wait-list")])])])]),t._v(" "),e("h3",{attrs:{id:"pipe-writer-setmaxavailabletowrite"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-setmaxavailabletowrite"}},[t._v("#")]),t._v(" Pipe::Writer::setMaxAvailableToWrite")]),t._v(" "),e("p",[t._v("Limit the available space for data writes in pipe."),e("br"),t._v(" This method is used for testing purposes only."),e("br"),t._v(" set to -1 in order to ignore this value."),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" maxAvailableToWrite - maximum available amount of bytes to write. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setMaxAvailableToWrite")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_size maxAvailableToWrite"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"pipe-writer-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-write"}},[t._v("#")]),t._v(" Pipe::Writer::write")]),t._v(" "),e("p",[t._v("Implements oatpp::data::stream::OutputStream::write method. Write data to pipe. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - data to write to pipe. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - data size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-writer-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-setoutputstreamiomode"}},[t._v("#")]),t._v(" Pipe::Writer::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-writer-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-getoutputstreamiomode"}},[t._v("#")]),t._v(" Pipe::Writer::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-writer-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-getoutputstreamcontext"}},[t._v("#")]),t._v(" Pipe::Writer::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"pipe-writer-notifywaitlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pipe-writer-notifywaitlist"}},[t._v("#")]),t._v(" Pipe::Writer::notifyWaitList")]),t._v(" "),e("p",[t._v("Notify coroutine wait-list")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("notifyWaitList")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/217.b7ee3395.js b/docs/.vuepress/dist/assets/js/217.b7ee3395.js deleted file mode 100644 index 51dc17529..000000000 --- a/docs/.vuepress/dist/assets/js/217.b7ee3395.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[217],{589:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"socket-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-hpp"}},[t._v("#")]),t._v(" Socket.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/virtual_/Socket.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/virtual_/Socket.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/network/virtual_/Socket.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"socket"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket"}},[t._v("#")]),t._v(" Socket")]),t._v(" "),e("p",[t._v("Virtual socket implementation. Can be used as a bidirectional data transfer between different threads of the same process. "),e("br"),t._v(" Under the hood it uses a pair of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Pipe/#pipe"}},[t._v("oatpp::network::virtual_::Pipe")]),t._v(". One to write data to, and one to read data from. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(" and "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Socket")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-socket"}},[t._v("Socket")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared socket.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-~socket"}},[t._v("~Socket")])]),t._v(" "),e("td",[t._v("Virtual destructor. Close corresponding pipes.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-setmaxavailabletoreadwrtie"}},[t._v("setMaxAvailableToReadWrtie")])]),t._v(" "),e("td",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read data from socket.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write data to socket.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get output stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get input stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#socket-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Close socket pipes.")])])])]),t._v(" "),e("h3",{attrs:{id:"socket-socket"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-socket"}},[t._v("#")]),t._v(" Socket::Socket")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pipeIn - pipe to read data from. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pipeOut - pipe to write data to. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Socket")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pipe"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pipeIn"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pipe"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pipeOut"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"socket-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-createshared"}},[t._v("#")]),t._v(" Socket::createShared")]),t._v(" "),e("p",[t._v("Create shared socket. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pipeIn - pipe to read data from. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pipeOut - pipe to write data to. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to Socket. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Socket"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pipe"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pipeIn"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pipe"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pipeOut"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"socket-socket-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-socket-2"}},[t._v("#")]),t._v(" Socket::~Socket")]),t._v(" "),e("p",[t._v("Virtual destructor. Close corresponding pipes.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Socket")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"socket-setmaxavailabletoreadwrtie"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-setmaxavailabletoreadwrtie"}},[t._v("#")]),t._v(" Socket::setMaxAvailableToReadWrtie")]),t._v(" "),e("p",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),e("br"),t._v(" This method is used for testing purposes only."),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" maxToRead - maximum available amount of bytes to read. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" maxToWrite - maximum available amount of bytes to write. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setMaxAvailableToReadWrtie")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_size maxToRead"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size maxToWrite"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"socket-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-read"}},[t._v("#")]),t._v(" Socket::read")]),t._v(" "),e("p",[t._v("Read data from socket. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of data read from socket. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-write"}},[t._v("#")]),t._v(" Socket::write")]),t._v(" "),e("p",[t._v("Write data to socket. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - data to write to socket. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - data size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of data written to socket. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-setoutputstreamiomode"}},[t._v("#")]),t._v(" Socket::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-getoutputstreamiomode"}},[t._v("#")]),t._v(" Socket::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-setinputstreamiomode"}},[t._v("#")]),t._v(" Socket::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-getinputstreamiomode"}},[t._v("#")]),t._v(" Socket::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-getoutputstreamcontext"}},[t._v("#")]),t._v(" Socket::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-getinputstreamcontext"}},[t._v("#")]),t._v(" Socket::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"socket-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#socket-close"}},[t._v("#")]),t._v(" Socket::close")]),t._v(" "),e("p",[t._v("Close socket pipes.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/218.1376d30d.js b/docs/.vuepress/dist/assets/js/218.1376d30d.js deleted file mode 100644 index 1352a9dfb..000000000 --- a/docs/.vuepress/dist/assets/js/218.1376d30d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[218],{590:function(t,e,a){"use strict";a.r(e);var r=a(42),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connectionprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/virtual_/client/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/virtual_/client/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/network/virtual_/client/ConnectionProvider.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),a("p",[t._v('Provider of "virtual" connections for client. See '),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(", "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(" "),a("br"),t._v(" Extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared ConnectionProvider.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-setsocketmaxavailabletoreadwrtie"}},[t._v("setSocketMaxAvailableToReadWrtie")])]),t._v(" "),a("td",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Implementation of oatpp::provider::Provider::Stop method.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),a("td",[t._v("Get connection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),a("td",[t._v("Get connection in asynchronous manner.")])])])]),t._v(" "),a("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" interface - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),a("p",[t._v("Create shared ConnectionProvider. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" interface - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-setsocketmaxavailabletoreadwrtie"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-setsocketmaxavailabletoreadwrtie"}},[t._v("#")]),t._v(" ConnectionProvider::setSocketMaxAvailableToReadWrtie")]),t._v(" "),a("p",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),a("br"),t._v(" This method is used for testing purposes only."),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" maxToRead - maximum available amount of bytes to read. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" maxToWrite - maximum available amount of bytes to write. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSocketMaxAvailableToReadWrtie")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_size maxToRead"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size maxToWrite"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),a("p",[t._v("Implementation of oatpp::provider::Provider::Stop method.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),a("p",[t._v("Get connection. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-getasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),a("p",[t._v("Get connection in asynchronous manner. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/219.e05ba04f.js b/docs/.vuepress/dist/assets/js/219.e05ba04f.js deleted file mode 100644 index 542e69387..000000000 --- a/docs/.vuepress/dist/assets/js/219.e05ba04f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[219],{591:function(t,e,a){"use strict";a.r(e);var r=a(42),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connectionprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/network/virtual_/server/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/network/virtual_/server/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/network/virtual_/server/ConnectionProvider.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),a("p",[t._v('Provider of "virtual" connections. See '),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(", "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Socket/#socket"}},[t._v("oatpp::network::virtual_::Socket")]),t._v(" "),a("br"),t._v(" Extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" network "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" virtual_ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared ConnectionProvider.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-setsocketmaxavailabletoreadwrtie"}},[t._v("setSocketMaxAvailableToReadWrtie")])]),t._v(" "),a("td",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),a("td",[t._v("Break accepting loop.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),a("td",[t._v("Get incoming connection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),a("td",[a("strong",[t._v("NOT IMPLEMENTED!")]),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" interface - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),a("p",[t._v("Create shared ConnectionProvider. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" interface - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/#interface"}},[t._v("oatpp::network::virtual_::Interface")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-setsocketmaxavailabletoreadwrtie"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-setsocketmaxavailabletoreadwrtie"}},[t._v("#")]),t._v(" ConnectionProvider::setSocketMaxAvailableToReadWrtie")]),t._v(" "),a("p",[t._v("Limit the available amount of bytes to read from socket and limit the available amount of bytes to write to socket. "),a("br"),t._v(" This method is used for testing purposes only."),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" maxToRead - maximum available amount of bytes to read. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" maxToWrite - maximum available amount of bytes to write. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSocketMaxAvailableToReadWrtie")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_size maxToRead"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size maxToWrite"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"connectionprovider-stop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),a("p",[t._v("Break accepting loop.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),a("p",[t._v("Get incoming connection. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"connectionprovider-getasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),a("p",[a("strong",[t._v("NOT IMPLEMENTED!")]),a("br"),t._v(" No need to implement this."),a("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),a("br"),t._v(" "),a("em",[t._v("It may be implemented later.")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/22.123befab.js b/docs/.vuepress/dist/assets/js/22.123befab.js deleted file mode 100644 index 0622fc8e8..000000000 --- a/docs/.vuepress/dist/assets/js/22.123befab.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{393:function(t,r,a){"use strict";a.r(r);var e=a(42),s=Object(e.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"curlbodywriter-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlbodywriter-hpp"}},[t._v("#")]),t._v(" CurlBodyWriter.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/CurlBodyWriter.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/CurlBodyWriter.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-curl")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-curl/io/CurlBodyWriter.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"curlbodywriter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlbodywriter"}},[t._v("#")]),t._v(" CurlBodyWriter")]),t._v(" "),a("p",[t._v("This class is wrapper over "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/#curlhandles"}},[t._v("oatpp::curl::io::CurlHandles")]),t._v(" to provide output-stream like interface")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" curl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" io "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CurlBodyWriter")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#curlbodywriter-curlbodywriter"}},[t._v("CurlBodyWriter")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#curlbodywriter-write"}},[t._v("write")])]),t._v(" "),a("td",[t._v("Write data to body.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#curlbodywriter-writenonblocking"}},[t._v("writeNonBlocking")])]),t._v(" "),a("td",[t._v("Non blocking attempt to write data to body.")])])])]),t._v(" "),a("h3",{attrs:{id:"curlbodywriter-curlbodywriter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlbodywriter-curlbodywriter"}},[t._v("#")]),t._v(" CurlBodyWriter::CurlBodyWriter")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" curlHandles - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/#curlhandles"}},[t._v("oatpp::curl::io::CurlHandles")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CurlBodyWriter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CurlHandles"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" curlHandles"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"curlbodywriter-write"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlbodywriter-write"}},[t._v("#")]),t._v(" CurlBodyWriter::write")]),t._v(" "),a("p",[t._v("Write data to body. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to data to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" count - data size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"curlbodywriter-writenonblocking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlbodywriter-writenonblocking"}},[t._v("#")]),t._v(" CurlBodyWriter::writeNonBlocking")]),t._v(" "),a("p",[t._v("Non blocking attempt to write data to body. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to data to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" count - data size. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeNonBlocking")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_io_size count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/220.d52377d0.js b/docs/.vuepress/dist/assets/js/220.d52377d0.js deleted file mode 100644 index 73c1a15e7..000000000 --- a/docs/.vuepress/dist/assets/js/220.d52377d0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[220],{592:function(t,n,a){"use strict";a.r(n);var e=a(42),s=Object(e.a)({},(function(){var t=this,n=t.$createElement,a=t._self._c||n;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"connection-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/orm/Connection.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"connection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),a("p",[t._v("Abstract database connection.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#connection-~connection"}},[t._v("~Connection")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"connection-connection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection"}},[t._v("#")]),t._v(" Connection::~Connection")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])])}),[],!1,null,null,null);n.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/221.a07164fb.js b/docs/.vuepress/dist/assets/js/221.a07164fb.js deleted file mode 100644 index dc347e4b8..000000000 --- a/docs/.vuepress/dist/assets/js/221.a07164fb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[221],{593:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"dbclient-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-hpp"}},[t._v("#")]),t._v(" DbClient.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/DbClient.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/DbClient.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/orm/DbClient.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"dbclient"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient"}},[t._v("#")]),t._v(" DbClient")]),t._v(" "),a("p",[t._v("Database client.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DbClient")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-dbclient"}},[t._v("DbClient")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-~dbclient"}},[t._v("~DbClient")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("provider::ResourceHandle")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-getconnection"}},[t._v("getConnection")])]),t._v(" "),a("td",[t._v("Get database connection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-setenabledinterpretations"}},[t._v("setEnabledInterpretations")])]),t._v(" "),a("td",[t._v("Set enabled type interpretations.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-gettyperesolver"}},[t._v("getTypeResolver")])]),t._v(" "),a("td",[t._v("Get type resolver.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("data::share::StringTemplate")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-parsequerytemplate"}},[t._v("parseQueryTemplate")])]),t._v(" "),a("td",[t._v("Parse query template.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-execute"}},[t._v("execute")])]),t._v(" "),a("td",[t._v("Execute query using template.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-executequery"}},[t._v("executeQuery")])]),t._v(" "),a("td",[t._v("Execute arbitrary query.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Transaction")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#dbclient-begintransaction"}},[t._v("beginTransaction")])]),t._v(" "),a("td",[t._v("Begin database transaction.")])])])]),t._v(" "),a("h3",{attrs:{id:"dbclient-dbclient"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-dbclient"}},[t._v("#")]),t._v(" DbClient::DbClient")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" executor - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/#executor"}},[t._v("oatpp::orm::Executor")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-dbclient-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-dbclient-2"}},[t._v("#")]),t._v(" DbClient::~DbClient")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-getconnection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-getconnection"}},[t._v("#")]),t._v(" DbClient::getConnection")]),t._v(" "),a("p",[t._v("Get database connection. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-setenabledinterpretations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-setenabledinterpretations"}},[t._v("#")]),t._v(" DbClient::setEnabledInterpretations")]),t._v(" "),a("p",[t._v("Set enabled type interpretations. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" enabledInterpretations ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEnabledInterpretations")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" enabledInterpretations"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-gettyperesolver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-gettyperesolver"}},[t._v("#")]),t._v(" DbClient::getTypeResolver")]),t._v(" "),a("p",[t._v("Get type resolver. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/#typeresolver"}},[t._v("oatpp::data::mapping::TypeResolver")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTypeResolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-parsequerytemplate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-parsequerytemplate"}},[t._v("#")]),t._v(" DbClient::parseQueryTemplate")]),t._v(" "),a("p",[t._v("Parse query template. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name - template name. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" text - template text. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" paramsTypeMap - template parameter types. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" prepare - "),a("code",[t._v("true")]),t._v(" if the query should use prepared statement, "),a("code",[t._v("false")]),t._v(" otherwise. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate"}},[t._v("oatpp::data::share::StringTemplate")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseQueryTemplate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParamsTypeMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" paramsTypeMap"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" prepare "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-execute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-execute"}},[t._v("#")]),t._v(" DbClient::execute")]),t._v(" "),a("p",[t._v("Execute query using template. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" queryTemplate - a query template obtained in a prior call to "),a("a",{attrs:{href:"#dbclient-parsequerytemplate"}},[t._v("DbClient::parseQueryTemplate()")]),t._v(" method. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" params - query parameters. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("execute")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" queryTemplate"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-executequery"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-executequery"}},[t._v("#")]),t._v(" DbClient::executeQuery")]),t._v(" "),a("p",[t._v("Execute arbitrary query. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" query - query text. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" params - query parameters. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeQuery")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" query"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-begintransaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-begintransaction"}},[t._v("#")]),t._v(" DbClient::beginTransaction")]),t._v(" "),a("p",[t._v("Begin database transaction. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Transaction "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("beginTransaction")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/222.c6e39856.js b/docs/.vuepress/dist/assets/js/222.c6e39856.js deleted file mode 100644 index 02f65ab8a..000000000 --- a/docs/.vuepress/dist/assets/js/222.c6e39856.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[222],{594:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"executor-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-hpp"}},[t._v("#")]),t._v(" Executor.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/Executor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/Executor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/orm/Executor.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"executor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor"}},[t._v("#")]),t._v(" Executor")]),t._v(" "),e("p",[t._v("Database executor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Executor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-executor"}},[t._v("Executor")])]),t._v(" "),e("td",[t._v("Default constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-~executor"}},[t._v("~Executor")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-getdefaulttyperesolver"}},[t._v("getDefaultTypeResolver")])]),t._v(" "),e("td",[t._v("Get default type resolver.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-createtyperesolver"}},[t._v("createTypeResolver")])]),t._v(" "),e("td",[t._v("Create new type resolver.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("provider::ResourceHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-getconnection"}},[t._v("getConnection")])]),t._v(" "),e("td",[t._v("Get database connection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("StringTemplate")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-parsequerytemplate"}},[t._v("parseQueryTemplate")])]),t._v(" "),e("td",[t._v("Parse query template.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-execute"}},[t._v("execute")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Execute database query using a query template. ")]),e("li",[t._v("Execute an arbitrary database query. "),e("br")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-begin"}},[t._v("begin")])]),t._v(" "),e("td",[t._v("Begin database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead.")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-commit"}},[t._v("commit")])]),t._v(" "),e("td",[t._v("Commit database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead.")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-rollback"}},[t._v("rollback")])]),t._v(" "),e("td",[t._v("Rollback database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead.")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-getschemaversion"}},[t._v("getSchemaVersion")])]),t._v(" "),e("td",[t._v("Get current database schema version.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#executor-migrateschema"}},[t._v("migrateSchema")])]),t._v(" "),e("td",[t._v("Run schema migration script. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/SchemaMigration/#schemamigration"}},[t._v("oatpp::orm::SchemaMigration")]),t._v(" instead.")],1)])])]),t._v(" "),e("h3",{attrs:{id:"executor-executor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-executor"}},[t._v("#")]),t._v(" Executor::Executor")]),t._v(" "),e("p",[t._v("Default constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Executor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-executor-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-executor-2"}},[t._v("#")]),t._v(" Executor::~Executor")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Executor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-getdefaulttyperesolver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-getdefaulttyperesolver"}},[t._v("#")]),t._v(" Executor::getDefaultTypeResolver")]),t._v(" "),e("p",[t._v("Get default type resolver. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDefaultTypeResolver")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-createtyperesolver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-createtyperesolver"}},[t._v("#")]),t._v(" Executor::createTypeResolver")]),t._v(" "),e("p",[t._v("Create new type resolver. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createTypeResolver")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-getconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-getconnection"}},[t._v("#")]),t._v(" Executor::getConnection")]),t._v(" "),e("p",[t._v("Get database connection. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-parsequerytemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-parsequerytemplate"}},[t._v("#")]),t._v(" Executor::parseQueryTemplate")]),t._v(" "),e("p",[t._v("Parse query template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name - template name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" text - template text. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" paramsTypeMap - template parameter types. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" prepare - "),e("code",[t._v("true")]),t._v(" if the query should use prepared statement, "),e("code",[t._v("false")]),t._v(" otherwise. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate"}},[t._v("oatpp::data::share::StringTemplate")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" StringTemplate "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseQueryTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParamsTypeMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" paramsTypeMap"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" prepare "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-execute"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-execute"}},[t._v("#")]),t._v(" Executor::execute")]),t._v(" "),e("ol",[e("li",[t._v("Execute database query using a query template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" queryTemplate - a query template obtained in a prior call to "),e("a",{attrs:{href:"#executor-parsequerytemplate"}},[t._v("Executor::parseQueryTemplate()")]),t._v(" method. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" params - query parameters. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" enabledInterpretations - enabled type interpretations. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("execute")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringTemplate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" queryTemplate"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" typeResolver "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Execute an arbitrary database query. "),e("br"),t._v(" In its default implementation it'll call execute with the null-named query template. The query template will be created by a call to "),e("code",[t._v("parseQueryTemplate(nullptr, query, {}, false)")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" query - query text. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" params - query parameters. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" enabledInterpretations - enabled type interpretations. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("execute")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" query"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" typeResolver "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"executor-begin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-begin"}},[t._v("#")]),t._v(" Executor::begin")]),t._v(" "),e("p",[t._v("Begin database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("begin")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-commit"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-commit"}},[t._v("#")]),t._v(" Executor::commit")]),t._v(" "),e("p",[t._v("Commit database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("commit")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-rollback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-rollback"}},[t._v("#")]),t._v(" Executor::rollback")]),t._v(" "),e("p",[t._v("Rollback database transaction. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction"}},[t._v("oatpp::orm::Transaction")]),t._v(" instead. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("rollback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-getschemaversion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-getschemaversion"}},[t._v("#")]),t._v(" Executor::getSchemaVersion")]),t._v(" "),e("p",[t._v("Get current database schema version. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" suffix - suffix of schema version control table name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - database connection. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - schema version. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSchemaVersion")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" suffix "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"executor-migrateschema"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#executor-migrateschema"}},[t._v("#")]),t._v(" Executor::migrateSchema")]),t._v(" "),e("p",[t._v("Run schema migration script. Should NOT be used directly. Use "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/SchemaMigration/#schemamigration"}},[t._v("oatpp::orm::SchemaMigration")]),t._v(" instead. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" script - script text. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" newVersion - schema version corresponding to this script. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" suffix - suffix of schema version control table name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - database connection. ")])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("migrateSchema")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" script"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int64 newVersion"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" suffix "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/223.08736ec2.js b/docs/.vuepress/dist/assets/js/223.08736ec2.js deleted file mode 100644 index 933e82201..000000000 --- a/docs/.vuepress/dist/assets/js/223.08736ec2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[223],{595:function(t,s,e){"use strict";e.r(s);var a=e(42),r=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"queryresult-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-hpp"}},[t._v("#")]),t._v(" QueryResult.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/QueryResult.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/QueryResult.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/orm/QueryResult.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"queryresult"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult"}},[t._v("#")]),t._v(" QueryResult")]),t._v(" "),e("p",[t._v("Result of DB query.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("QueryResult")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-~queryresult"}},[t._v("~QueryResult")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("provider::ResourceHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-getconnection"}},[t._v("getConnection")])]),t._v(" "),e("td",[t._v("Get DB connection associated with this result.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-issuccess"}},[t._v("isSuccess")])]),t._v(" "),e("td",[t._v("Check if the query was successful.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-geterrormessage"}},[t._v("getErrorMessage")])]),t._v(" "),e("td",[t._v("Get error message in case "),e("code",[t._v("isSuccess() == false")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-getposition"}},[t._v("getPosition")])]),t._v(" "),e("td",[t._v("Get result read position.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-getknowncount"}},[t._v("getKnownCount")])]),t._v(" "),e("td",[t._v("Get result entries count in the case it's known.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-hasmoretofetch"}},[t._v("hasMoreToFetch")])]),t._v(" "),e("td",[t._v("Check if there is more data to fetch.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#queryresult-fetch"}},[t._v("fetch")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Fetch result entries. ")]),e("li",[t._v("Fetch result entries. ")])])])])])]),t._v(" "),e("h3",{attrs:{id:"queryresult-queryresult"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-queryresult"}},[t._v("#")]),t._v(" QueryResult::~QueryResult")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("QueryResult")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-getconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-getconnection"}},[t._v("#")]),t._v(" QueryResult::getConnection")]),t._v(" "),e("p",[t._v("Get DB connection associated with this result. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-issuccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-issuccess"}},[t._v("#")]),t._v(" QueryResult::isSuccess")]),t._v(" "),e("p",[t._v("Check if the query was successful. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isSuccess")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-geterrormessage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-geterrormessage"}},[t._v("#")]),t._v(" QueryResult::getErrorMessage")]),t._v(" "),e("p",[t._v("Get error message in case "),e("code",[t._v("isSuccess() == false")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getErrorMessage")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-getposition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-getposition"}},[t._v("#")]),t._v(" QueryResult::getPosition")]),t._v(" "),e("p",[t._v("Get result read position. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPosition")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-getknowncount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-getknowncount"}},[t._v("#")]),t._v(" QueryResult::getKnownCount")]),t._v(" "),e("p",[t._v("Get result entries count in the case it's known. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("[0..N]")]),t._v(" - in case known. "),e("code",[t._v("-1")]),t._v(" - otherwise. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-hasmoretofetch"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-hasmoretofetch"}},[t._v("#")]),t._v(" QueryResult::hasMoreToFetch")]),t._v(" "),e("p",[t._v("Check if there is more data to fetch. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("hasMoreToFetch")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"queryresult-fetch"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-fetch"}},[t._v("#")]),t._v(" QueryResult::fetch")]),t._v(" "),e("ol",[e("li",[t._v("Fetch result entries. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" resultType - wanted output type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - how many entries to fetch. Use "),e("code",[t._v("-1")]),t._v(" to fetch all. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("oatpp::Void")]),t._v(". ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" resultType"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Fetch result entries. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - output type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - how many entries to fetch. Use "),e("code",[t._v("-1")]),t._v(" to fetch all. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("Wrapper")]),t._v(". ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 count "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/224.7f7a42f2.js b/docs/.vuepress/dist/assets/js/224.7f7a42f2.js deleted file mode 100644 index 3a76bd4ed..000000000 --- a/docs/.vuepress/dist/assets/js/224.7f7a42f2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[224],{596:function(t,a,s){"use strict";s.r(a);var r=s(42),e=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"schemamigration-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-hpp"}},[t._v("#")]),t._v(" SchemaMigration.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/SchemaMigration.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/SchemaMigration.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/orm/SchemaMigration.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"schemamigration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration"}},[t._v("#")]),t._v(" SchemaMigration")]),t._v(" "),s("p",[t._v("Database schema migration helper.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SchemaMigration")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schemamigration-schemamigration"}},[t._v("SchemaMigration")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schemamigration-~schemamigration"}},[t._v("~SchemaMigration")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schemamigration-addtext"}},[t._v("addText")])]),t._v(" "),s("td",[t._v("Add migration script as text.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schemamigration-addfile"}},[t._v("addFile")])]),t._v(" "),s("td",[t._v("Add migration script file.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schemamigration-migrate"}},[t._v("migrate")])]),t._v(" "),s("td",[t._v("Run database schema migration.")])])])]),t._v(" "),s("h3",{attrs:{id:"schemamigration-schemamigration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-schemamigration"}},[t._v("#")]),t._v(" SchemaMigration::SchemaMigration")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" executor - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/#executor"}},[t._v("oatpp::orm::Executor")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" suffix - suffix of schema version control table. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SchemaMigration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" suffix "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schemamigration-schemamigration-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-schemamigration-2"}},[t._v("#")]),t._v(" SchemaMigration::~SchemaMigration")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SchemaMigration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"schemamigration-addtext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-addtext"}},[t._v("#")]),t._v(" SchemaMigration::addText")]),t._v(" "),s("p",[t._v("Add migration script as text. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" version - schema version corresponding to this script. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" script - script text. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addText")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 version"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" script"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schemamigration-addfile"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-addfile"}},[t._v("#")]),t._v(" SchemaMigration::addFile")]),t._v(" "),s("p",[t._v("Add migration script file. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" version - schema version corresponding to this script. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" script - path to script file. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int64 version"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schemamigration-migrate"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schemamigration-migrate"}},[t._v("#")]),t._v(" SchemaMigration::migrate")]),t._v(" "),s("p",[t._v("Run database schema migration.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("migrate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/225.de69f3b4.js b/docs/.vuepress/dist/assets/js/225.de69f3b4.js deleted file mode 100644 index b9ff2b5ed..000000000 --- a/docs/.vuepress/dist/assets/js/225.de69f3b4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[225],{597:function(t,a,s){"use strict";s.r(a);var r=s(42),n=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"transaction-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-hpp"}},[t._v("#")]),t._v(" Transaction.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/orm/Transaction.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/orm/Transaction.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/orm/Transaction.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"transaction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),s("p",[t._v("Database transaction.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" orm "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Transaction")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#transaction-transaction"}},[t._v("Transaction")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Copy constructor. ")]),s("li",[t._v("Move constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#transaction-~transaction"}},[t._v("~Transaction")])]),t._v(" "),s("td",[t._v("Virtual destructor. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("provider::ResourceHandle")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#transaction-getconnection"}},[t._v("getConnection")])]),t._v(" "),s("td",[t._v("Get the database connection associated with the transaction. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#transaction-commit"}},[t._v("commit")])]),t._v(" "),s("td",[t._v("Commit transaction.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#transaction-rollback"}},[t._v("rollback")])]),t._v(" "),s("td",[t._v("Rollback transaction.")])])])]),t._v(" "),s("h3",{attrs:{id:"transaction-transaction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-transaction"}},[t._v("#")]),t._v(" Transaction::Transaction")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" executor - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/#executor"}},[t._v("oatpp::orm::Executor")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" connection - database connection. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Transaction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Copy constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Transaction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Transaction"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Move constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" other ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Transaction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Transaction"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" other"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"transaction-transaction-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-transaction-2"}},[t._v("#")]),t._v(" Transaction::~Transaction")]),t._v(" "),s("p",[t._v("Virtual destructor. "),s("br"),t._v(" Will automatically call "),s("a",{attrs:{href:"#transaction-rollback"}},[t._v("Transaction::rollback()")]),t._v(" if there was no prior call to "),s("a",{attrs:{href:"#transaction-commit"}},[t._v("Transaction::commit()")]),t._v(" method.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Transaction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"transaction-getconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-getconnection"}},[t._v("#")]),t._v(" Transaction::getConnection")]),t._v(" "),s("p",[t._v("Get the database connection associated with the transaction. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" all database queries within the transaction MUST be called on this connection. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"transaction-commit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-commit"}},[t._v("#")]),t._v(" Transaction::commit")]),t._v(" "),s("p",[t._v("Commit transaction. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("commit")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"transaction-rollback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transaction-rollback"}},[t._v("#")]),t._v(" Transaction::rollback")]),t._v(" "),s("p",[t._v("Rollback transaction. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("QueryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rollback")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/226.17926877.js b/docs/.vuepress/dist/assets/js/226.17926877.js deleted file mode 100644 index d2828abc5..000000000 --- a/docs/.vuepress/dist/assets/js/226.17926877.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[226],{598:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"beautifier-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-hpp"}},[t._v("#")]),t._v(" Beautifier.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/parser/json/Beautifier.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/parser/json/Beautifier.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/parser/json/Beautifier.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"beautifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier"}},[t._v("#")]),t._v(" Beautifier")]),t._v(" "),a("p",[t._v("JSON output stream beautifier.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" json "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Beautifier")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#beautifier-beautifier"}},[t._v("Beautifier")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#beautifier-write"}},[t._v("write")])]),t._v(" "),a("td",[t._v("Write "),a("code",[t._v("count")]),t._v(" of bytes to stream.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#beautifier-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),a("td",[t._v("Set stream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("IOMode")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#beautifier-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),a("td",[t._v("Get stream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Context&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#beautifier-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),a("td",[t._v("Get stream context.")])])])]),t._v(" "),a("h3",{attrs:{id:"beautifier-beautifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-beautifier"}},[t._v("#")]),t._v(" Beautifier::Beautifier")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" outputStream - destination output stream. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" indent ")]),a("li",[a("strong",[t._v("@param")]),t._v(" newLine ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Beautifier")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ConsistentOutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" outputStream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" indent"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" newLine"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"beautifier-write"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-write"}},[t._v("#")]),t._v(" Beautifier::write")]),t._v(" "),a("p",[t._v("Write "),a("code",[t._v("count")]),t._v(" of bytes to stream. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - data to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" count - number of bytes to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" action ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - actual number of bytes written. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"beautifier-setoutputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-setoutputstreamiomode"}},[t._v("#")]),t._v(" Beautifier::setOutputStreamIOMode")]),t._v(" "),a("p",[t._v("Set stream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@throws")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("IOMode ioMode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"beautifier-getoutputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-getoutputstreamiomode"}},[t._v("#")]),t._v(" Beautifier::getOutputStreamIOMode")]),t._v(" "),a("p",[t._v("Get stream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("IOMode "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"beautifier-getoutputstreamcontext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#beautifier-getoutputstreamcontext"}},[t._v("#")]),t._v(" Beautifier::getOutputStreamContext")]),t._v(" "),a("p",[t._v("Get stream context. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/227.c1a8d398.js b/docs/.vuepress/dist/assets/js/227.c1a8d398.js deleted file mode 100644 index 402213294..000000000 --- a/docs/.vuepress/dist/assets/js/227.c1a8d398.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[227],{599:function(t,s,a){"use strict";a.r(s);var r=a(42),e=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"utils-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-hpp"}},[t._v("#")]),t._v(" Utils.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/parser/json/Utils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/parser/json/Utils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/parser/json/Utils.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[t._v("#")]),t._v(" Utils")]),t._v(" "),a("p",[t._v("Utility class for json serializer/deserializer. Used by "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Serializer/#serializer"}},[t._v("oatpp::parser::json::mapping::Serializer")]),t._v(", "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Deserializer/#deserializer"}},[t._v("oatpp::parser::json::mapping::Deserializer")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" json "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Utils")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("v_int64")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-error-code-invalid-escaped-char"}},[t._v("ERROR_CODE_INVALID_ESCAPED_CHAR")])]),t._v(" "),a("td",[t._v("ERROR_CODE_INVALID_ESCAPED_CHAR")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int64")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-error-code-invalid-surrogate-pair"}},[t._v("ERROR_CODE_INVALID_SURROGATE_PAIR")])]),t._v(" "),a("td",[t._v("ERROR_CODE_INVALID_SURROGATE_PAIR")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int64")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-error-code-parser-quote-expected"}},[t._v("ERROR_CODE_PARSER_QUOTE_EXPECTED")])]),t._v(" "),a("td",[t._v("'\\' - EXPECTED\" ERROR_CODE_PARSER_QUOTE_EXPECTED")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-escapestring"}},[t._v("escapeString")])]),t._v(" "),a("td",[t._v("Escape string as for json standard. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-unescapestring"}},[t._v("unescapeString")])]),t._v(" "),a("td",[t._v("Unescape string as for json standard.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::string")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-unescapestringtostdstring"}},[t._v("unescapeStringToStdString")])]),t._v(" "),a("td",[t._v("Same as "),a("a",{attrs:{href:"#utils-unescapestring"}},[t._v("Utils::unescapeString()")]),t._v(" but return "),a("code",[t._v("std::string")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-parsestring"}},[t._v("parseString")])]),t._v(" "),a("td",[t._v("Parse string enclosed in "),a("code",[t._v('""')]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::string")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#utils-parsestringtostdstring"}},[t._v("parseStringToStdString")])]),t._v(" "),a("td",[t._v("Parse string enclosed in "),a("code",[t._v('""')]),t._v(".")])])])]),t._v(" "),a("h3",{attrs:{id:"utils-error-code-invalid-escaped-char"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-error-code-invalid-escaped-char"}},[t._v("#")]),t._v(" Utils::ERROR_CODE_INVALID_ESCAPED_CHAR")]),t._v(" "),a("p",[t._v("ERROR_CODE_INVALID_ESCAPED_CHAR")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_int64 ERROR_CODE_INVALID_ESCAPED_CHAR "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-error-code-invalid-surrogate-pair"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-error-code-invalid-surrogate-pair"}},[t._v("#")]),t._v(" Utils::ERROR_CODE_INVALID_SURROGATE_PAIR")]),t._v(" "),a("p",[t._v("ERROR_CODE_INVALID_SURROGATE_PAIR")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_int64 ERROR_CODE_INVALID_SURROGATE_PAIR "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-error-code-parser-quote-expected"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-error-code-parser-quote-expected"}},[t._v("#")]),t._v(" Utils::ERROR_CODE_PARSER_QUOTE_EXPECTED")]),t._v(" "),a("p",[t._v("'\\' - EXPECTED\" ERROR_CODE_PARSER_QUOTE_EXPECTED")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_int64 ERROR_CODE_PARSER_QUOTE_EXPECTED "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-escapestring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-escapestring"}},[t._v("#")]),t._v(" Utils::escapeString")]),t._v(" "),a("p",[t._v("Escape string as for json standard. "),a("br"),t._v(" "),a("em",[t._v("Note:")]),t._v(" if(copyAsOwnData == false escapedString == initialString) then result string will point to initial data. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to string to escape. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" size - data size. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" flags - escape flags. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("escapeString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_uint32 flags "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" FLAG_ESCAPE_ALL"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-unescapestring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-unescapestring"}},[t._v("#")]),t._v(" Utils::unescapeString")]),t._v(" "),a("p",[t._v("Unescape string as for json standard. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to string to unescape. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" size - data size. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" errorCode - out parameter. Error code "),a("br"),t._v(" "),a("em",[t._v("One of:")]),a("br"),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#utils-error-code-invalid-escaped-char"}},[t._v("Utils::ERROR_CODE_INVALID_ESCAPED_CHAR")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#utils-error-code-invalid-surrogate-pair"}},[t._v("Utils::ERROR_CODE_INVALID_SURROGATE_PAIR")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#utils-error-code-parser-quote-expected"}},[t._v("Utils::ERROR_CODE_PARSER_QUOTE_EXPECTED")])])])]),a("li",[a("strong",[t._v("@param")]),t._v(" errorPosition - out parameter. Error position in data. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unescapeString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorPosition"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-unescapestringtostdstring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-unescapestringtostdstring"}},[t._v("#")]),t._v(" Utils::unescapeStringToStdString")]),t._v(" "),a("p",[t._v("Same as "),a("a",{attrs:{href:"#utils-unescapestring"}},[t._v("Utils::unescapeString()")]),t._v(" but return "),a("code",[t._v("std::string")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" data - pointer to string to unescape. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" size - data size. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" errorCode - out parameter. Error code "),a("br"),t._v(" "),a("em",[t._v("One of:")]),a("br"),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#utils-error-code-invalid-escaped-char"}},[t._v("Utils::ERROR_CODE_INVALID_ESCAPED_CHAR")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#utils-error-code-invalid-surrogate-pair"}},[t._v("Utils::ERROR_CODE_INVALID_SURROGATE_PAIR")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#utils-error-code-parser-quote-expected"}},[t._v("Utils::ERROR_CODE_PARSER_QUOTE_EXPECTED")])])])]),a("li",[a("strong",[t._v("@param")]),t._v(" errorPosition - out parameter. Error position in data. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unescapeStringToStdString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size size"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorPosition"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-parsestring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-parsestring"}},[t._v("#")]),t._v(" Utils::parseString")]),t._v(" "),a("p",[t._v("Parse string enclosed in "),a("code",[t._v('""')]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" caret - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ParsingCaret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"utils-parsestringtostdstring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-parsestringtostdstring"}},[t._v("#")]),t._v(" Utils::parseStringToStdString")]),t._v(" "),a("p",[t._v("Parse string enclosed in "),a("code",[t._v('""')]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" caret - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::string")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseStringToStdString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ParsingCaret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/228.32876dc3.js b/docs/.vuepress/dist/assets/js/228.32876dc3.js deleted file mode 100644 index 04caf5458..000000000 --- a/docs/.vuepress/dist/assets/js/228.32876dc3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[228],{600:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"deserializer-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-hpp"}},[e._v("#")]),e._v(" Deserializer.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/parser/json/mapping/Deserializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/parser/json/mapping/Deserializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/parser/json/mapping/Deserializer.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"deserializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer"}},[e._v("#")]),e._v(" Deserializer")]),e._v(" "),a("p",[e._v("Json Deserializer. Deserialize oatpp DTO object from json. See "),a("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Transfer Object(DTO) component"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" parser "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" json "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Deserializer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-object-scope-open"}},[e._v("ERROR_CODE_OBJECT_SCOPE_OPEN")])]),e._v(" "),a("td",[e._v("\"'{' - expected\"")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-object-scope-close"}},[e._v("ERROR_CODE_OBJECT_SCOPE_CLOSE")])]),e._v(" "),a("td",[e._v("\"'}' - expected\"")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-object-scope-unknown-field"}},[e._v("ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD")])]),e._v(" "),a("td",[e._v('"Unknown field"')])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-object-scope-colon-missing"}},[e._v("ERROR_CODE_OBJECT_SCOPE_COLON_MISSING")])]),e._v(" "),a("td",[e._v("\"':' - expected\"")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-array-scope-open"}},[e._v("ERROR_CODE_ARRAY_SCOPE_OPEN")])]),e._v(" "),a("td",[e._v("\"'[' - expected\"")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-array-scope-close"}},[e._v("ERROR_CODE_ARRAY_SCOPE_CLOSE")])]),e._v(" "),a("td",[e._v("\"']' - expected\"")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-error-code-value-boolean"}},[e._v("ERROR_CODE_VALUE_BOOLEAN")])]),e._v(" "),a("td",[e._v("\"'true' or 'false' - expected\"")])])])]),e._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-deserializer"}},[e._v("Deserializer")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("void")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-setdeserializermethod"}},[e._v("setDeserializerMethod")])]),e._v(" "),a("td",[e._v("Set deserializer method for type.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("oatpp::Void")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-deserialize"}},[e._v("deserialize")])]),e._v(" "),a("td",[e._v("Deserialize text.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("const std::shared_ptr&")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-getconfig"}},[e._v("getConfig")])]),e._v(" "),a("td",[e._v("Get deserializer config.")])])])]),e._v(" "),a("h3",{attrs:{id:"deserializer-error-code-object-scope-open"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-object-scope-open"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_OBJECT_SCOPE_OPEN")]),e._v(" "),a("p",[e._v("\"'{' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_OBJECT_SCOPE_OPEN "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-object-scope-close"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-object-scope-close"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_OBJECT_SCOPE_CLOSE")]),e._v(" "),a("p",[e._v("\"'}' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_OBJECT_SCOPE_CLOSE "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("2")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-object-scope-unknown-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-object-scope-unknown-field"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD")]),e._v(" "),a("p",[e._v('"Unknown field"')]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_OBJECT_SCOPE_UNKNOWN_FIELD "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("3")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-object-scope-colon-missing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-object-scope-colon-missing"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_OBJECT_SCOPE_COLON_MISSING")]),e._v(" "),a("p",[e._v("\"':' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_OBJECT_SCOPE_COLON_MISSING "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("4")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-array-scope-open"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-array-scope-open"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_ARRAY_SCOPE_OPEN")]),e._v(" "),a("p",[e._v("\"'[' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_ARRAY_SCOPE_OPEN "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("5")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-array-scope-close"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-array-scope-close"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_ARRAY_SCOPE_CLOSE")]),e._v(" "),a("p",[e._v("\"']' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_ARRAY_SCOPE_CLOSE "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("6")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-error-code-value-boolean"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-error-code-value-boolean"}},[e._v("#")]),e._v(" Deserializer::ERROR_CODE_VALUE_BOOLEAN")]),e._v(" "),a("p",[e._v("\"'true' or 'false' - expected\"")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" v_int32 ERROR_CODE_VALUE_BOOLEAN "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("7")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-deserializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-deserializer"}},[e._v("#")]),e._v(" Deserializer::Deserializer")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" config ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("Deserializer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-setdeserializermethod"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-setdeserializermethod"}},[e._v("#")]),e._v(" Deserializer::setDeserializerMethod")]),e._v(" "),a("p",[e._v("Set deserializer method for type. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" classId - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#classid"}},[e._v("oatpp::data::mapping::type::ClassId")]),e._v(". ")],1),a("li",[a("strong",[e._v("@param")]),e._v(" method - "),a("code",[e._v("typedef oatpp::Void (*DeserializerMethod)(Deserializer*, parser::Caret, const Type* const)")]),e._v(". ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("void")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("setDeserializerMethod")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("ClassId"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" classId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" DeserializerMethod method"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-deserialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-deserialize"}},[e._v("#")]),e._v(" Deserializer::deserialize")]),e._v(" "),a("p",[e._v("Deserialize text. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" caret - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[e._v("oatpp::parser::Caret")]),e._v(". ")],1),a("li",[a("strong",[e._v("@param")]),e._v(" type - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[e._v("oatpp::data::mapping::type::Type")])],1),a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("code",[e._v("oatpp::Void")]),e._v(" over deserialized object. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Void "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("deserialize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Caret"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" caret"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" Type"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" type"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-getconfig"}},[e._v("#")]),e._v(" Deserializer::getConfig")]),e._v(" "),a("p",[e._v("Get deserializer config. "),a("ul",[a("li",[a("strong",[e._v("@return")])])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("getConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"deserializer-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config"}},[e._v("#")]),e._v(" Deserializer::Config")]),e._v(" "),a("p",[e._v("Deserializer config.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" parser "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" json "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Deserializer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Config")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("public")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"fields-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("bool")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-allowunknownfields"}},[e._v("allowUnknownFields")])]),e._v(" "),a("td",[e._v('Do not fail if unknown field is found in json. "unknown field" is the one which is not present in DTO object class.')])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("std::vector")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-enabledinterpretations"}},[e._v("enabledInterpretations")])]),e._v(" "),a("td",[e._v("Enable type interpretations.")])])])]),e._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-config"}},[e._v("Config")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("std::shared_ptr")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-createshared"}},[e._v("createShared")])]),e._v(" "),a("td",[e._v("Create shared Config.")])])])]),e._v(" "),a("h3",{attrs:{id:"deserializer-config-allowunknownfields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-allowunknownfields"}},[e._v("#")]),e._v(" Deserializer::Config::allowUnknownFields")]),e._v(" "),a("p",[e._v('Do not fail if unknown field is found in json. "unknown field" is the one which is not present in DTO object class.')]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" allowUnknownFields "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-enabledinterpretations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-enabledinterpretations"}},[e._v("#")]),e._v(" Deserializer::Config::enabledInterpretations")]),e._v(" "),a("p",[e._v("Enable type interpretations.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("vector"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("string"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" enabledInterpretations "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-config"}},[e._v("#")]),e._v(" Deserializer::Config::Config")]),e._v(" "),a("p",[e._v("Constructor.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-createshared"}},[e._v("#")]),e._v(" Deserializer::Config::createShared")]),e._v(" "),a("p",[e._v("Create shared Config. "),a("ul",[a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("code",[e._v("std::shared_ptr")]),e._v(" to Config. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/229.b875a2fb.js b/docs/.vuepress/dist/assets/js/229.b875a2fb.js deleted file mode 100644 index b4d47b98d..000000000 --- a/docs/.vuepress/dist/assets/js/229.b875a2fb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[229],{601:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"objectmapper-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-hpp"}},[t._v("#")]),t._v(" ObjectMapper.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/parser/json/mapping/ObjectMapper.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/parser/json/mapping/ObjectMapper.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper"}},[t._v("#")]),t._v(" ObjectMapper")]),t._v(" "),e("p",[t._v("Json ObjectMapper. Serialized/Deserializes oatpp DTO objects to/from JSON. See "),e("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),e("OutboundLink")],1),t._v(". "),e("br"),t._v(" Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" parser "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" json "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-objectmapper"}},[t._v("ObjectMapper")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Create shared ObjectMapper. ")]),e("li",[t._v("Create shared ObjectMapper. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-write"}},[t._v("oatpp::data::mapping::ObjectMapper::write()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-read"}},[t._v("oatpp::data::mapping::ObjectMapper::read()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-getserializer"}},[t._v("getSerializer")])]),t._v(" "),e("td",[t._v("Get serializer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-getdeserializer"}},[t._v("getDeserializer")])]),t._v(" "),e("td",[t._v("Get deserializer.")])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-objectmapper"}},[t._v("#")]),t._v(" ObjectMapper::ObjectMapper")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializerConfig - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Serializer/#serializer-config"}},[t._v("oatpp::parser::json::mapping::Serializer::Config")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" deserializerConfig - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Deserializer/#deserializer-config"}},[t._v("oatpp::parser::json::mapping::Deserializer::Config")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializer ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-createshared"}},[t._v("#")]),t._v(" ObjectMapper::createShared")]),t._v(" "),e("ol",[e("li",[t._v("Create shared ObjectMapper. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializerConfig - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Serializer/#serializer-config"}},[t._v("oatpp::parser::json::mapping::Serializer::Config")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" deserializerConfig - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Deserializer/#deserializer-config"}},[t._v("oatpp::parser::json::mapping::Deserializer::Config")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to ObjectMapper. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Create shared ObjectMapper. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializer ")]),e("li",[e("strong",[t._v("@return")])])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-write"}},[t._v("#")]),t._v(" ObjectMapper::write")]),t._v(" "),e("p",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-write"}},[t._v("oatpp::data::mapping::ObjectMapper::write()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write serializerd data to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#consistentoutputstream"}},[t._v("oatpp::data::stream::ConsistentOutputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" variant - object to serialize "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" variant"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"objectmapper-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-read"}},[t._v("#")]),t._v(" ObjectMapper::read")]),t._v(" "),e("p",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-read"}},[t._v("oatpp::data::mapping::ObjectMapper::read()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" caret - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" type - type of resultant object "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(" holding resultant object. ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"objectmapper-getserializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-getserializer"}},[t._v("#")]),t._v(" ObjectMapper::getSerializer")]),t._v(" "),e("p",[t._v("Get serializer. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSerializer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-getdeserializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-getdeserializer"}},[t._v("#")]),t._v(" ObjectMapper::getDeserializer")]),t._v(" "),e("p",[t._v("Get deserializer. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDeserializer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/23.c993db9d.js b/docs/.vuepress/dist/assets/js/23.c993db9d.js deleted file mode 100644 index 79e314a67..000000000 --- a/docs/.vuepress/dist/assets/js/23.c993db9d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{394:function(e,t,a){"use strict";a.r(t);var r=a(42),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"curlheadersreader-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-hpp"}},[e._v("#")]),e._v(" CurlHeadersReader.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/src/oatpp-curl/io/CurlHeadersReader.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/issues/new?title=API%20question&body=In%20file:%20oatpp-curl/io/CurlHeadersReader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp-curl")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp-curl/io/CurlHeadersReader.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"curlheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader"}},[e._v("#")]),e._v(" CurlHeadersReader")]),e._v(" "),a("p",[e._v("Curl headers reader is responsible for reading response headers. "),a("br"),e._v(" It implements "),a("code",[e._v("CURLOPT_HEADERFUNCTION")]),e._v(" and stores headers in "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(". It also captures response "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#responsestartingline"}},[e._v("oatpp::web::protocol::http::ResponseStartingLine")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" curl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" io "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("CurlHeadersReader")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-state-initialized"}},[e._v("STATE_INITIALIZED")])]),e._v(" "),a("td",[e._v("STATE_INITIALIZED state of CurlHeadersReader.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-state-started"}},[e._v("STATE_STARTED")])]),e._v(" "),a("td",[e._v("STATE_STARTED state of CurlHeadersReader.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-state-finished"}},[e._v("STATE_FINISHED")])]),e._v(" "),a("td",[e._v("STATE_FINISHED state of CurlHeadersReader.")])])])]),e._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-curlheadersreader"}},[e._v("CurlHeadersReader")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int32")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-getstate"}},[e._v("getState")])]),e._v(" "),a("td",[e._v("State of CurlHeadersReader.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("const oatpp::web::protocol::http::ResponseStartingLine&")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-getstartingline"}},[e._v("getStartingLine")])]),e._v(" "),a("td",[e._v("Get response starting line.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("const oatpp::web::protocol::http::Headers&")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#curlheadersreader-getheaders"}},[e._v("getHeaders")])]),e._v(" "),a("td",[e._v("Get headers map.")])])])]),e._v(" "),a("h3",{attrs:{id:"curlheadersreader-state-initialized"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-state-initialized"}},[e._v("#")]),e._v(" CurlHeadersReader::STATE_INITIALIZED")]),e._v(" "),a("p",[e._v("STATE_INITIALIZED state of CurlHeadersReader.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" v_int32 STATE_INITIALIZED "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-state-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-state-started"}},[e._v("#")]),e._v(" CurlHeadersReader::STATE_STARTED")]),e._v(" "),a("p",[e._v("STATE_STARTED state of CurlHeadersReader.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" v_int32 STATE_STARTED "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-state-finished"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-state-finished"}},[e._v("#")]),e._v(" CurlHeadersReader::STATE_FINISHED")]),e._v(" "),a("p",[e._v("STATE_FINISHED state of CurlHeadersReader.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("constexpr")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" v_int32 STATE_FINISHED "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("2")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-curlheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-curlheadersreader"}},[e._v("#")]),e._v(" CurlHeadersReader::CurlHeadersReader")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" curlHandles - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/io/Curl/#curlhandles"}},[e._v("oatpp::curl::io::CurlHandles")]),e._v(". ")],1)])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("CurlHeadersReader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("CurlHandles"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" curlHandles"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-getstate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-getstate"}},[e._v("#")]),e._v(" CurlHeadersReader::getState")]),e._v(" "),a("p",[e._v("State of CurlHeadersReader. "),a("ul",[a("li",[a("strong",[e._v("@return")]),e._v(" - one of: "),a("ul",[a("li",[a("a",{attrs:{href:"#curlheadersreader-state-initialized"}},[e._v("CurlHeadersReader::STATE_INITIALIZED")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#curlheadersreader-state-started"}},[e._v("CurlHeadersReader::STATE_STARTED")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#curlheadersreader-state-finished"}},[e._v("CurlHeadersReader::STATE_FINISHED")])])])])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("getState")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-getstartingline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-getstartingline"}},[e._v("#")]),e._v(" CurlHeadersReader::getStartingLine")]),e._v(" "),a("p",[e._v("Get response starting line. "),a("ul",[a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#responsestartingline"}},[e._v("oatpp::web::protocol::http::ResponseStartingLine")]),e._v(". ")],1)])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("ResponseStartingLine"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("getStartingLine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v("\n")])])]),a("h3",{attrs:{id:"curlheadersreader-getheaders"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curlheadersreader-getheaders"}},[e._v("#")]),e._v(" CurlHeadersReader::getHeaders")]),e._v(" "),a("p",[e._v("Get headers map. "),a("ul",[a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(". ")],1)])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("getHeaders")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/230.81965674.js b/docs/.vuepress/dist/assets/js/230.81965674.js deleted file mode 100644 index 5ddcd4cc9..000000000 --- a/docs/.vuepress/dist/assets/js/230.81965674.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[230],{603:function(e,a,t){"use strict";t.r(a);var s=t(42),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"serializer-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-hpp"}},[e._v("#")]),e._v(" Serializer.hpp"),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/parser/json/mapping/Serializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),t("OutboundLink")],1),t("br"),e._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/parser/json/mapping/Serializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("code",[e._v("API: latest")]),t("br"),e._v(" "),t("code",[e._v("module: oatpp")]),t("br"),e._v(" "),t("code",[e._v('#include "oatpp/parser/json/mapping/Serializer.hpp"')])]),e._v(" "),t("h2",{attrs:{id:"serializer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer"}},[e._v("#")]),e._v(" Serializer")]),e._v(" "),t("p",[e._v("Json Serializer. Serializes oatpp DTO object to json. See "),t("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Transfer Object(DTO) component"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" parser "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" json "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Serializer")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("h2",{attrs:{id:"serializer-config"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config"}},[e._v("#")]),e._v(" Serializer::Config")]),e._v(" "),t("p",[e._v("Serializer config.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" parser "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" json "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Serializer")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Config")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("public")]),e._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("base"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Countable "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("h3",{attrs:{id:"fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Type")]),e._v(" "),t("th",[e._v("Name")]),e._v(" "),t("th",[e._v("Summary")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-includenullfields"}},[e._v("includeNullFields")])]),e._v(" "),t("td",[e._v("Include fields with value == nullptr into serialized json. Field will still be included when field-info "),t("code",[e._v("required")]),e._v(" is set to true and alwaysIncludeRequired is set to true.")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-alwaysincluderequired"}},[e._v("alwaysIncludeRequired")])]),e._v(" "),t("td",[e._v("Always include required fields (set in in DTO_FIELD_INFO) even if they are "),t("code",[e._v("value == nullptr")])])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-alwaysincludenullcollectionelements"}},[e._v("alwaysIncludeNullCollectionElements")])]),e._v(" "),t("td",[e._v("Always include array or map elements, even if their value is "),t("code",[e._v("nullptr")]),e._v(".")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-throwonunknowntypes"}},[e._v("throwOnUnknownTypes")])]),e._v(" "),t("td",[e._v("If "),t("code",[e._v("true")]),e._v(" - insert string "),t("code",[e._v('""')]),e._v(" in json field value in case unknown field found. Fail if "),t("code",[e._v("false")]),e._v(". Known types for this serializer are:"),t("br"),e._v(" (String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("bool")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-usebeautifier"}},[e._v("useBeautifier")])]),e._v(" "),t("td",[e._v("Use JSON Beautifier.")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("oatpp::String")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-beautifierindent"}},[e._v("beautifierIndent")])]),e._v(" "),t("td",[e._v("Beautifier Indent.")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("oatpp::String")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-beautifiernewline"}},[e._v("beautifierNewLine")])]),e._v(" "),t("td",[e._v("Beautifier new line.")])])])]),e._v(" "),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Return Type")]),e._v(" "),t("th",[e._v("Name")]),e._v(" "),t("th",[e._v("Summary")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("code",[e._v("[none]")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-config"}},[e._v("Config")])]),e._v(" "),t("td",[e._v("Constructor.")])]),e._v(" "),t("tr",[t("td",[t("code",[e._v("std::shared_ptr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#serializer-config-createshared"}},[e._v("createShared")])]),e._v(" "),t("td",[e._v("Create shared config.")])])])]),e._v(" "),t("h3",{attrs:{id:"serializer-config-includenullfields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-includenullfields"}},[e._v("#")]),e._v(" Serializer::Config::includeNullFields")]),e._v(" "),t("p",[e._v("Include fields with value == nullptr into serialized json. Field will still be included when field-info "),t("code",[e._v("required")]),e._v(" is set to true and alwaysIncludeRequired is set to true.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" includeNullFields "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-alwaysincluderequired"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-alwaysincluderequired"}},[e._v("#")]),e._v(" Serializer::Config::alwaysIncludeRequired")]),e._v(" "),t("p",[e._v("Always include required fields (set in in DTO_FIELD_INFO) even if they are "),t("code",[e._v("value == nullptr")])]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" alwaysIncludeRequired "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-alwaysincludenullcollectionelements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-alwaysincludenullcollectionelements"}},[e._v("#")]),e._v(" Serializer::Config::alwaysIncludeNullCollectionElements")]),e._v(" "),t("p",[e._v("Always include array or map elements, even if their value is "),t("code",[e._v("nullptr")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" alwaysIncludeNullCollectionElements "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-throwonunknowntypes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-throwonunknowntypes"}},[e._v("#")]),e._v(" Serializer::Config::throwOnUnknownTypes")]),e._v(" "),t("p",[e._v("If "),t("code",[e._v("true")]),e._v(" - insert string "),t("code",[e._v('""')]),e._v(" in json field value in case unknown field found. Fail if "),t("code",[e._v("false")]),e._v(". Known types for this serializer are:"),t("br"),e._v(" (String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" throwOnUnknownTypes "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-usebeautifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-usebeautifier"}},[e._v("#")]),e._v(" Serializer::Config::useBeautifier")]),e._v(" "),t("p",[e._v("Use JSON Beautifier.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("bool")]),e._v(" useBeautifier "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-beautifierindent"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-beautifierindent"}},[e._v("#")]),e._v(" Serializer::Config::beautifierIndent")]),e._v(" "),t("p",[e._v("Beautifier Indent.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v("oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("String beautifierIndent "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('" "')]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-beautifiernewline"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-beautifiernewline"}},[e._v("#")]),e._v(" Serializer::Config::beautifierNewLine")]),e._v(" "),t("p",[e._v("Beautifier new line.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v("oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("String beautifierNewLine "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(' "\n')])])]),t("h3",{attrs:{id:"serializer-config-config"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-config"}},[e._v("#")]),e._v(" Serializer::Config::Config")]),e._v(" "),t("p",[e._v("Constructor.")]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("Config")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("h3",{attrs:{id:"serializer-config-createshared"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-createshared"}},[e._v("#")]),e._v(" Serializer::Config::createShared")]),e._v(" "),t("p",[e._v("Create shared config. "),t("ul",[t("li",[t("strong",[e._v("@return")]),e._v(" - "),t("code",[e._v("std::shared_ptr")]),e._v(" to Config. ")])])]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" std"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("Config"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("createShared")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/231.72079c57.js b/docs/.vuepress/dist/assets/js/231.72079c57.js deleted file mode 100644 index 281e08dec..000000000 --- a/docs/.vuepress/dist/assets/js/231.72079c57.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[231],{602:function(t,a,e){"use strict";e.r(a);var p=e(42),n=Object(p.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"apiclient-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-hpp"}},[t._v("#")]),t._v(" ApiClient.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/client/ApiClient.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/client/ApiClient.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/client/ApiClient.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"apiclient"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient"}},[t._v("#")]),t._v(" ApiClient")]),t._v(" "),e("p",[t._v("ApiClient class provides convenient Retrofit-like interface over the oatpp::web::client::RequestExecutor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ApiClient")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Status")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-status"}},[t._v("Status")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Header")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-header"}},[t._v("Header")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-string"}},[t._v("String")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#string"}},[t._v("oatpp::data::mapping::type::String")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-int8"}},[t._v("Int8")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int8"}},[t._v("oatpp::data::mapping::type::Int8")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-uint8"}},[t._v("UInt8")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint8"}},[t._v("oatpp::data::mapping::type::UInt8")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int16")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-int16"}},[t._v("Int16")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int16"}},[t._v("oatpp::data::mapping::type::Int16")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt16")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-uint16"}},[t._v("UInt16")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint16"}},[t._v("oatpp::data::mapping::type::UInt16")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-int32"}},[t._v("Int32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int32"}},[t._v("oatpp::data::mapping::type::Int32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-uint32"}},[t._v("UInt32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint32"}},[t._v("oatpp::data::mapping::type::UInt32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-int64"}},[t._v("Int64")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int64"}},[t._v("oatpp::data::mapping::type::Int64")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-uint64"}},[t._v("UInt64")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint64"}},[t._v("oatpp::data::mapping::type::UInt64")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Float32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-float32"}},[t._v("Float32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float32"}},[t._v("oatpp::data::mapping::type::Float32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Float64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-float64"}},[t._v("Float64")])]),t._v(" "),e("td",[t._v("Convenience typedef for atpp::data::mapping::type::Float64.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-boolean"}},[t._v("Boolean")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#boolean"}},[t._v("oatpp::data::mapping::type::Boolean")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Headers")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-headers"}},[t._v("Headers")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::incoming::Response")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-response"}},[t._v("Response")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("RequestExecutor::AsyncCallback")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-asynccallback"}},[t._v("AsyncCallback")])]),t._v(" "),e("td",[t._v("Convenience typedef for oatpp::web::client::RequestExecutor::AsyncCallback.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-getconnection"}},[t._v("getConnection")])]),t._v(" "),e("td",[t._v("Call "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-getconnection"}},[t._v("oatpp::web::client::RequestExecutor::getConnection()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-getconnectionasync"}},[t._v("getConnectionAsync")])]),t._v(" "),e("td",[t._v("Call "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-getconnectionasync"}},[t._v("oatpp::web::client::RequestExecutor::getConnectionAsync()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apiclient-invalidateconnection"}},[t._v("invalidateConnection")])]),t._v(" "),e("td",[t._v("Invalidate connection.")])])])]),t._v(" "),e("h3",{attrs:{id:"apiclient-status"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-status"}},[t._v("#")]),t._v(" ApiClient::Status")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status Status\n")])])]),e("h3",{attrs:{id:"apiclient-header"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-header"}},[t._v("#")]),t._v(" ApiClient::Header")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header Header\n")])])]),e("h3",{attrs:{id:"apiclient-string"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-string"}},[t._v("#")]),t._v(" ApiClient::String")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#string"}},[t._v("oatpp::data::mapping::type::String")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String String\n")])])]),e("h3",{attrs:{id:"apiclient-int8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-int8"}},[t._v("#")]),t._v(" ApiClient::Int8")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int8"}},[t._v("oatpp::data::mapping::type::Int8")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int8 Int8\n")])])]),e("h3",{attrs:{id:"apiclient-uint8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-uint8"}},[t._v("#")]),t._v(" ApiClient::UInt8")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint8"}},[t._v("oatpp::data::mapping::type::UInt8")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt8 UInt8\n")])])]),e("h3",{attrs:{id:"apiclient-int16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-int16"}},[t._v("#")]),t._v(" ApiClient::Int16")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int16"}},[t._v("oatpp::data::mapping::type::Int16")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int16 Int16\n")])])]),e("h3",{attrs:{id:"apiclient-uint16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-uint16"}},[t._v("#")]),t._v(" ApiClient::UInt16")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint16"}},[t._v("oatpp::data::mapping::type::UInt16")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt16 UInt16\n")])])]),e("h3",{attrs:{id:"apiclient-int32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-int32"}},[t._v("#")]),t._v(" ApiClient::Int32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int32"}},[t._v("oatpp::data::mapping::type::Int32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32 Int32\n")])])]),e("h3",{attrs:{id:"apiclient-uint32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-uint32"}},[t._v("#")]),t._v(" ApiClient::UInt32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint32"}},[t._v("oatpp::data::mapping::type::UInt32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt32 UInt32\n")])])]),e("h3",{attrs:{id:"apiclient-int64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-int64"}},[t._v("#")]),t._v(" ApiClient::Int64")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int64"}},[t._v("oatpp::data::mapping::type::Int64")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int64 Int64\n")])])]),e("h3",{attrs:{id:"apiclient-uint64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-uint64"}},[t._v("#")]),t._v(" ApiClient::UInt64")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint64"}},[t._v("oatpp::data::mapping::type::UInt64")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt64 UInt64\n")])])]),e("h3",{attrs:{id:"apiclient-float32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-float32"}},[t._v("#")]),t._v(" ApiClient::Float32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float32"}},[t._v("oatpp::data::mapping::type::Float32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float32 Float32\n")])])]),e("h3",{attrs:{id:"apiclient-float64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-float64"}},[t._v("#")]),t._v(" ApiClient::Float64")]),t._v(" "),e("p",[t._v("Convenience typedef for atpp::data::mapping::type::Float64.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float64 Float64\n")])])]),e("h3",{attrs:{id:"apiclient-boolean"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-boolean"}},[t._v("#")]),t._v(" ApiClient::Boolean")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#boolean"}},[t._v("oatpp::data::mapping::type::Boolean")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Boolean Boolean\n")])])]),e("h3",{attrs:{id:"apiclient-headers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-headers"}},[t._v("#")]),t._v(" ApiClient::Headers")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),e("h3",{attrs:{id:"apiclient-response"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-response"}},[t._v("#")]),t._v(" ApiClient::Response")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response Response\n")])])]),e("h3",{attrs:{id:"apiclient-asynccallback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-asynccallback"}},[t._v("#")]),t._v(" ApiClient::AsyncCallback")]),t._v(" "),e("p",[t._v("Convenience typedef for oatpp::web::client::RequestExecutor::AsyncCallback.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" RequestExecutor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncCallback AsyncCallback\n")])])]),e("h3",{attrs:{id:"apiclient-getconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-getconnection"}},[t._v("#")]),t._v(" ApiClient::getConnection")]),t._v(" "),e("p",[t._v("Call "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-getconnection"}},[t._v("oatpp::web::client::RequestExecutor::getConnection()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-connectionhandle"}},[t._v("oatpp::web::client::RequestExecutor::ConnectionHandle")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RequestExecutor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apiclient-getconnectionasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-getconnectionasync"}},[t._v("#")]),t._v(" ApiClient::getConnectionAsync")]),t._v(" "),e("p",[t._v("Call "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-getconnectionasync"}},[t._v("oatpp::web::client::RequestExecutor::getConnectionAsync()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RequestExecutor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apiclient-invalidateconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-invalidateconnection"}},[t._v("#")]),t._v(" ApiClient::invalidateConnection")]),t._v(" "),e("p",[t._v("Invalidate connection. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connectionHandle ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidateConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RequestExecutor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/232.f0be7c32.js b/docs/.vuepress/dist/assets/js/232.f0be7c32.js deleted file mode 100644 index f3f5d59a8..000000000 --- a/docs/.vuepress/dist/assets/js/232.f0be7c32.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[232],{604:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"httprequestexecutor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-hpp"}},[t._v("#")]),t._v(" HttpRequestExecutor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/client/HttpRequestExecutor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/client/HttpRequestExecutor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/client/HttpRequestExecutor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"httprequestexecutor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor"}},[t._v("#")]),t._v(" HttpRequestExecutor")]),t._v(" "),s("p",[t._v("Default implementation of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor"}},[t._v("oatpp::web::client::RequestExecutor")]),t._v(" for making http request.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpRequestExecutor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" RequestExecutor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-httprequestexecutor"}},[t._v("HttpRequestExecutor")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared HttpRequestExecutor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("getConnection")])]),t._v(" "),s("td",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-connectionhandle"}},[t._v("oatpp::web::client::RequestExecutor::ConnectionHandle")])],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-getconnectionasync"}},[t._v("getConnectionAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("HttpRequestExecutor::getConnection()")]),t._v(" but async.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-invalidateconnection"}},[t._v("invalidateConnection")])]),t._v(" "),s("td",[t._v("Invalidate connection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-executeonce"}},[t._v("executeOnce")])]),t._v(" "),s("td",[t._v("Execute http request.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httprequestexecutor-executeonceasync"}},[t._v("executeOnceAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#httprequestexecutor-execute"}},[t._v("HttpRequestExecutor::execute()")]),t._v(" but Async.")])])])]),t._v(" "),s("h3",{attrs:{id:"httprequestexecutor-httprequestexecutor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-httprequestexecutor"}},[t._v("#")]),t._v(" HttpRequestExecutor::HttpRequestExecutor")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connectionProvider - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyDecoder - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpRequestExecutor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ClientConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RetryPolicy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" retryPolicy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" BodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyDecoder "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SimpleBodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-createshared"}},[t._v("#")]),t._v(" HttpRequestExecutor::createShared")]),t._v(" "),s("p",[t._v("Create shared HttpRequestExecutor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connectionProvider - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyDecoder - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("HttpRequestExecutor")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ClientConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RetryPolicy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" retryPolicy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" BodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyDecoder "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SimpleBodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-getconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("#")]),t._v(" HttpRequestExecutor::getConnection")]),t._v(" "),s("p",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-connectionhandle"}},[t._v("oatpp::web::client::RequestExecutor::ConnectionHandle")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - ConnectionHandle which is "),s("a",{attrs:{href:"#httprequestexecutor-httpconnectionhandle"}},[t._v("HttpRequestExecutor::HttpConnectionHandle")]),t._v(". ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-getconnectionasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-getconnectionasync"}},[t._v("#")]),t._v(" HttpRequestExecutor::getConnectionAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("HttpRequestExecutor::getConnection()")]),t._v(" but async. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-invalidateconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-invalidateconnection"}},[t._v("#")]),t._v(" HttpRequestExecutor::invalidateConnection")]),t._v(" "),s("p",[t._v("Invalidate connection. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidateConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-executeonce"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-executeonce"}},[t._v("#")]),t._v(" HttpRequestExecutor::executeOnce")]),t._v(" "),s("p",[t._v("Execute http request. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),s("li",[s("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers - headers map "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-headers"}},[t._v("oatpp::web::client::RequestExecutor::Headers")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" body - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-body"}},[t._v("oatpp::web::client::RequestExecutor::Body")]),t._v(" object. ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle - ConnectionHandle obtain in call to "),s("a",{attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("HttpRequestExecutor::getConnection()")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(". ")],1),s("li",[s("strong",[t._v("@throws")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-requestexecutionerror"}},[t._v("oatpp::web::client::RequestExecutor::RequestExecutionError")])],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnce")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"httprequestexecutor-executeonceasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-executeonceasync"}},[t._v("#")]),t._v(" HttpRequestExecutor::executeOnceAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#httprequestexecutor-execute"}},[t._v("HttpRequestExecutor::execute()")]),t._v(" but Async. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),s("li",[s("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers - headers map "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-headers"}},[t._v("oatpp::web::client::RequestExecutor::Headers")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" body - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-body"}},[t._v("oatpp::web::client::RequestExecutor::Body")]),t._v(" object. ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" connectionHandle - ConnectionHandle obtain in call to "),s("a",{attrs:{href:"#httprequestexecutor-getconnection"}},[t._v("HttpRequestExecutor::getConnection()")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnceAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h2",{attrs:{id:"httprequestexecutor-httpconnectionhandle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httprequestexecutor-httpconnectionhandle"}},[t._v("#")]),t._v(" HttpRequestExecutor::HttpConnectionHandle")]),t._v(" "),s("p",[t._v("Connection handle for "),s("a",{attrs:{href:"#httprequestexecutor"}},[t._v("HttpRequestExecutor")]),t._v(" "),s("br"),t._v(" For more details see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/#requestexecutor-connectionhandle"}},[t._v("oatpp::web::client::RequestExecutor::ConnectionHandle")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpRequestExecutor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" RequestExecutor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpConnectionHandle")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ConnectionHandle "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/233.11343c2f.js b/docs/.vuepress/dist/assets/js/233.11343c2f.js deleted file mode 100644 index 425a41dd6..000000000 --- a/docs/.vuepress/dist/assets/js/233.11343c2f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[233],{605:function(t,e,r){"use strict";r.r(e);var s=r(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"requestexecutor-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-hpp"}},[t._v("#")]),t._v(" RequestExecutor.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/client/RequestExecutor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/client/RequestExecutor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/client/RequestExecutor.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"requestexecutor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor"}},[t._v("#")]),t._v(" RequestExecutor")]),t._v(" "),r("p",[t._v("Abstract RequestExecutor. RequestExecutor is class responsible for making remote requests.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutor")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"typedefs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-string"}},[t._v("String")])]),t._v(" "),r("td",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::Action")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-action"}},[t._v("Action")])]),t._v(" "),r("td",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::web::protocol::http::Headers")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("Headers")])]),t._v(" "),r("td",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::web::protocol::http::incoming::Response")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-response"}},[t._v("Response")])]),t._v(" "),r("td",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::web::protocol::http::outgoing::Body")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-body"}},[t._v("Body")])]),t._v(" "),r("td",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(".")],1)])])]),t._v(" "),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutor"}},[t._v("RequestExecutor")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-~requestexecutor"}},[t._v("~RequestExecutor")])]),t._v(" "),r("td",[t._v("Virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-getconnection"}},[t._v("getConnection")])]),t._v(" "),r("td",[t._v("Obtain "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")]),t._v(" which then can be passed to "),r("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(".")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-getconnectionasync"}},[t._v("getConnectionAsync")])]),t._v(" "),r("td",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-getconnection"}},[t._v("RequestExecutor::getConnection()")]),t._v(" but Async.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-invalidateconnection"}},[t._v("invalidateConnection")])]),t._v(" "),r("td",[t._v("Invalidate connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-executeonce"}},[t._v("executeOnce")])]),t._v(" "),r("td",[t._v("Execute request once without any retries.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-executeonceasync"}},[t._v("executeOnceAsync")])]),t._v(" "),r("td",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-executeonce"}},[t._v("RequestExecutor::executeOnce()")]),t._v(" but Async.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("execute")])]),t._v(" "),r("td",[t._v("Execute request taking into account retry policy.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-executeasync"}},[t._v("executeAsync")])]),t._v(" "),r("td",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(" but Async.")])])])]),t._v(" "),r("h3",{attrs:{id:"requestexecutor-string"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-string"}},[t._v("#")]),t._v(" RequestExecutor::String")]),t._v(" "),r("p",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String String\n")])])]),r("h3",{attrs:{id:"requestexecutor-action"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-action"}},[t._v("#")]),t._v(" RequestExecutor::Action")]),t._v(" "),r("p",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action Action\n")])])]),r("h3",{attrs:{id:"requestexecutor-headers"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-headers"}},[t._v("#")]),t._v(" RequestExecutor::Headers")]),t._v(" "),r("p",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),r("h3",{attrs:{id:"requestexecutor-response"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-response"}},[t._v("#")]),t._v(" RequestExecutor::Response")]),t._v(" "),r("p",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response Response\n")])])]),r("h3",{attrs:{id:"requestexecutor-body"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-body"}},[t._v("#")]),t._v(" RequestExecutor::Body")]),t._v(" "),r("p",[t._v("Convenience typedef for "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Body Body\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutor"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutor")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" retryPolicy - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RetryPolicy/#retrypolicy"}},[t._v("oatpp::web::client::RetryPolicy")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("RequestExecutor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RetryPolicy"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" retryPolicy"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutor-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutor-2"}},[t._v("#")]),t._v(" RequestExecutor::~RequestExecutor")]),t._v(" "),r("p",[t._v("Virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("RequestExecutor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-getconnection"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-getconnection"}},[t._v("#")]),t._v(" RequestExecutor::getConnection")]),t._v(" "),r("p",[t._v("Obtain "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")]),t._v(" which then can be passed to "),r("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" std::shared_ptr to "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")]),t._v(". ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-getconnectionasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-getconnectionasync"}},[t._v("#")]),t._v(" RequestExecutor::getConnectionAsync")]),t._v(" "),r("p",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-getconnection"}},[t._v("RequestExecutor::getConnection()")]),t._v(" but Async. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-invalidateconnection"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-invalidateconnection"}},[t._v("#")]),t._v(" RequestExecutor::invalidateConnection")]),t._v(" "),r("p",[t._v("Invalidate connection. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" connectionHandle ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("invalidateConnection")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-executeonce"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-executeonce"}},[t._v("#")]),t._v(" RequestExecutor::executeOnce")]),t._v(" "),r("p",[t._v("Execute request once without any retries. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),r("li",[r("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" headers - headers map "),r("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("RequestExecutor::Headers")]),t._v(". ")]),r("li",[r("strong",[t._v("@param")]),t._v(" body - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("a",{attrs:{href:"#requestexecutor-body"}},[t._v("RequestExecutor::Body")]),t._v(" object. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" connectionHandle - "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")])]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnce")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-executeonceasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-executeonceasync"}},[t._v("#")]),t._v(" RequestExecutor::executeOnceAsync")]),t._v(" "),r("p",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-executeonce"}},[t._v("RequestExecutor::executeOnce()")]),t._v(" but Async. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),r("li",[r("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" headers - headers map "),r("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("RequestExecutor::Headers")]),t._v(". ")]),r("li",[r("strong",[t._v("@param")]),t._v(" body - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("a",{attrs:{href:"#requestexecutor-body"}},[t._v("RequestExecutor::Body")]),t._v(" object. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" connectionHandle - "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")]),t._v(". ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeOnceAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-execute"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-execute"}},[t._v("#")]),t._v(" RequestExecutor::execute")]),t._v(" "),r("p",[t._v("Execute request taking into account retry policy. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),r("li",[r("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" headers - headers map "),r("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("RequestExecutor::Headers")]),t._v(". ")]),r("li",[r("strong",[t._v("@param")]),t._v(" body - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("a",{attrs:{href:"#requestexecutor-body"}},[t._v("RequestExecutor::Body")]),t._v(" object. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" connectionHandle - "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")])]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("execute")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-executeasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-executeasync"}},[t._v("#")]),t._v(" RequestExecutor::executeAsync")]),t._v(" "),r("p",[t._v("Same as "),r("a",{attrs:{href:"#requestexecutor-execute"}},[t._v("RequestExecutor::execute()")]),t._v(" but Async. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(' method - method ex: ["GET", "POST", "PUT", etc.]. ')]),r("li",[r("strong",[t._v("@param")]),t._v(" path - path to resource. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" headers - headers map "),r("a",{attrs:{href:"#requestexecutor-headers"}},[t._v("RequestExecutor::Headers")]),t._v(". ")]),r("li",[r("strong",[t._v("@param")]),t._v(" body - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("a",{attrs:{href:"#requestexecutor-body"}},[t._v("RequestExecutor::Body")]),t._v(" object. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" connectionHandle - "),r("a",{attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("RequestExecutor::ConnectionHandle")]),t._v(". ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionHandle"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h2",{attrs:{id:"requestexecutor-connectionhandle"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-connectionhandle"}},[t._v("#")]),t._v(" RequestExecutor::ConnectionHandle")]),t._v(" "),r("p",[t._v("ConnectionHandle is always specific to a RequestExecutor. You can't pass ConnectionHandle retrieved by one RequestExecutor implementation to another")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutor")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionHandle")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h2",{attrs:{id:"requestexecutor-requestexecutionerror"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError")]),t._v(" "),r("p",[t._v("Class representing Request Execution Error.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutor")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestExecutionError")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("runtime_error "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"fields"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("const v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-connect"}},[t._v("ERROR_CODE_CANT_CONNECT")])]),t._v(" "),r("td",[t._v('Error code for "can\'t connect" error.')])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-parse-starting-line"}},[t._v("ERROR_CODE_CANT_PARSE_STARTING_LINE")])]),t._v(" "),r("td",[t._v('Error code for "can\'t parse starting line" error.')])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-parse-headers"}},[t._v("ERROR_CODE_CANT_PARSE_HEADERS")])]),t._v(" "),r("td",[t._v('Error code for "can\'t parse headers" error.')])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-read-response"}},[t._v("ERROR_CODE_CANT_READ_RESPONSE")])]),t._v(" "),r("td",[t._v('Error code for "can\'t read response" error.')])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-no-response"}},[t._v("ERROR_CODE_NO_RESPONSE")])]),t._v(" "),r("td",[t._v('Error code for "no response" error.')])])])]),t._v(" "),r("h3",{attrs:{id:"methods-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-requestexecutionerror"}},[t._v("RequestExecutionError")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-geterrorcode"}},[t._v("getErrorCode")])]),t._v(" "),r("td",[t._v("Get error code.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const char*")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-getmessage"}},[t._v("getMessage")])]),t._v(" "),r("td",[t._v("Get error message.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("v_int32")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-getreaderrorcode"}},[t._v("getReadErrorCode")])]),t._v(" "),r("td",[t._v("This value is valid if errorCode == "),r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-read-response"}},[t._v("RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE")]),t._v(" "),r("br")])])])]),t._v(" "),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-error-code-cant-connect"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-connect"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_CONNECT")]),t._v(" "),r("p",[t._v('Error code for "can\'t connect" error.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 ERROR_CODE_CANT_CONNECT "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-error-code-cant-parse-starting-line"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-parse-starting-line"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_PARSE_STARTING_LINE")]),t._v(" "),r("p",[t._v('Error code for "can\'t parse starting line" error.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 ERROR_CODE_CANT_PARSE_STARTING_LINE "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-error-code-cant-parse-headers"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-parse-headers"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_PARSE_HEADERS")]),t._v(" "),r("p",[t._v('Error code for "can\'t parse headers" error.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 ERROR_CODE_CANT_PARSE_HEADERS "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-error-code-cant-read-response"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-read-response"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE")]),t._v(" "),r("p",[t._v('Error code for "can\'t read response" error.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 ERROR_CODE_CANT_READ_RESPONSE "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-error-code-no-response"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-error-code-no-response"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::ERROR_CODE_NO_RESPONSE")]),t._v(" "),r("p",[t._v('Error code for "no response" error.')]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" v_int32 ERROR_CODE_NO_RESPONSE "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-requestexecutionerror"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-requestexecutionerror"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::RequestExecutionError")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" errorCode - error code. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" message - error message. ")]),r("li",[r("strong",[t._v("@param")]),t._v(" readErrorCode - io error code. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("RequestExecutionError")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 errorCode"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" message"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 readErrorCode "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-geterrorcode"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-geterrorcode"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::getErrorCode")]),t._v(" "),r("p",[t._v("Get error code. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - error code. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("v_int32 "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getErrorCode")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-getmessage"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-getmessage"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::getMessage")]),t._v(" "),r("p",[t._v("Get error message. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - error message. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMessage")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),r("h3",{attrs:{id:"requestexecutor-requestexecutionerror-getreaderrorcode"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#requestexecutor-requestexecutionerror-getreaderrorcode"}},[t._v("#")]),t._v(" RequestExecutor::RequestExecutionError::getReadErrorCode")]),t._v(" "),r("p",[t._v("This value is valid if errorCode == "),r("a",{attrs:{href:"#requestexecutor-requestexecutionerror-error-code-cant-read-response"}},[t._v("RequestExecutor::RequestExecutionError::ERROR_CODE_CANT_READ_RESPONSE")]),t._v(" "),r("br"),t._v(" For more information about the read error you get check out: "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(" for possible error codes.")],1),t._v(" "),r("li",[t._v("Implementation-specific behaviour of corresponding Connection and ConnectionProvider.")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("v_int32 "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getReadErrorCode")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/234.22540412.js b/docs/.vuepress/dist/assets/js/234.22540412.js deleted file mode 100644 index 1e67b6dae..000000000 --- a/docs/.vuepress/dist/assets/js/234.22540412.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[234],{606:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"retrypolicy-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-hpp"}},[t._v("#")]),t._v(" RetryPolicy.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/client/RetryPolicy.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/client/RetryPolicy.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/client/RetryPolicy.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"retrypolicy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy"}},[t._v("#")]),t._v(" RetryPolicy")]),t._v(" "),s("p",[t._v("Class to control retries in RequestExecutor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RetryPolicy")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#retrypolicy-~retrypolicy"}},[t._v("~RetryPolicy")])]),t._v(" "),s("td",[t._v("Virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#retrypolicy-canretry"}},[t._v("canRetry")])]),t._v(" "),s("td",[t._v("Check if the context is eligible to retry.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#retrypolicy-retryonresponse"}},[t._v("retryOnResponse")])]),t._v(" "),s("td",[t._v("Check whether the client should retry for a given response from the server.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#retrypolicy-waitformicroseconds"}},[t._v("waitForMicroseconds")])]),t._v(" "),s("td",[t._v("How much client should wait before the next attempt?")])])])]),t._v(" "),s("h3",{attrs:{id:"retrypolicy-retrypolicy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-retrypolicy"}},[t._v("#")]),t._v(" RetryPolicy::~RetryPolicy")]),t._v(" "),s("p",[t._v("Virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("RetryPolicy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"retrypolicy-canretry"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-canretry"}},[t._v("#")]),t._v(" RetryPolicy::canRetry")]),t._v(" "),s("p",[t._v("Check if the context is eligible to retry. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" context - "),s("a",{attrs:{href:"#retrypolicy-context"}},[t._v("RetryPolicy::Context")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" - to retry. "),s("code",[t._v("false")]),t._v(" - do NOT retry. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("canRetry")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Context"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" context"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"retrypolicy-retryonresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-retryonresponse"}},[t._v("#")]),t._v(" RetryPolicy::retryOnResponse")]),t._v(" "),s("p",[t._v("Check whether the client should retry for a given response from the server. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" responseStatusCode - HTTP status code of the response. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" context - "),s("a",{attrs:{href:"#retrypolicy-context"}},[t._v("RetryPolicy::Context")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" - to retry. "),s("code",[t._v("false")]),t._v(" - do NOT retry. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retryOnResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 responseStatusCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Context"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" context"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h3",{attrs:{id:"retrypolicy-waitformicroseconds"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-waitformicroseconds"}},[t._v("#")]),t._v(" RetryPolicy::waitForMicroseconds")]),t._v(" "),s("p",[t._v("How much client should wait before the next attempt? "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" context - "),s("a",{attrs:{href:"#retrypolicy-context"}},[t._v("RetryPolicy::Context")]),t._v(". ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - delay in microseconds. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitForMicroseconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Context"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" context"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),s("h2",{attrs:{id:"retrypolicy-context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-context"}},[t._v("#")]),t._v(" RetryPolicy::Context")]),t._v(" "),s("p",[t._v("This structure holds information about request attempts.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RetryPolicy")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Context")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#retrypolicy-context-attempt"}},[t._v("attempt")])]),t._v(" "),s("td",[t._v("Attempt number.")])])])]),t._v(" "),s("h3",{attrs:{id:"retrypolicy-context-attempt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#retrypolicy-context-attempt"}},[t._v("#")]),t._v(" RetryPolicy::Context::attempt")]),t._v(" "),s("p",[t._v("Attempt number.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 attempt "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/235.116d09ed.js b/docs/.vuepress/dist/assets/js/235.116d09ed.js deleted file mode 100644 index fa2e4e086..000000000 --- a/docs/.vuepress/dist/assets/js/235.116d09ed.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[235],{607:function(e,t,a){"use strict";a.r(t);var r=a(42),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"fileprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fileprovider-hpp"}},[e._v("#")]),e._v(" FileProvider.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/FileProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/FileProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/web/mime/multipart/FileProvider.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"createfilepartreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#createfilepartreader"}},[e._v("#")]),e._v(" createFilePartReader")]),e._v(" "),a("p",[a("strong",[e._v("Namespace:")]),e._v(" "),a("code",[e._v("oatpp::web::mime::multipart")])]),e._v(" "),a("p",[e._v("Create file part reader. "),a("br"),e._v(" Reader will save part to a specified file. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" filename - name of the file. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" maxDataSize - max size of the received data. put "),a("code",[e._v("-1")]),e._v(" for no-limit. ")]),a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("code",[e._v("std::shared_ptr")]),e._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartReader/#partreader"}},[e._v("oatpp::web::mime::multipart::PartReader")]),e._v(". ")],1)])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("PartReader"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("createFilePartReader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" filename"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" v_io_size maxDataSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"createasyncfilepartreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#createasyncfilepartreader"}},[e._v("#")]),e._v(" createAsyncFilePartReader")]),e._v(" "),a("p",[a("strong",[e._v("Namespace:")]),e._v(" "),a("code",[e._v("oatpp::web::mime::multipart")])]),e._v(" "),a("p",[e._v("Create async file part reader. "),a("br"),e._v(" Reader will save part to a specified file. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" filename - name of the file. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" maxDataSize - max size of the received data. put "),a("code",[e._v("-1")]),e._v(" for no-limit. ")]),a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("code",[e._v("std::shared_ptr")]),e._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartReader/#asyncpartreader"}},[e._v("oatpp::web::mime::multipart::AsyncPartReader")]),e._v(". ")],1)])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("AsyncPartReader"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("createAsyncFilePartReader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" filename"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" v_io_size maxDataSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/236.c061926f.js b/docs/.vuepress/dist/assets/js/236.c061926f.js deleted file mode 100644 index 3c8fe1df7..000000000 --- a/docs/.vuepress/dist/assets/js/236.c061926f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[236],{608:function(e,a,t){"use strict";t.r(a);var r=t(42),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"inmemorydataprovider-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inmemorydataprovider-hpp"}},[e._v("#")]),e._v(" InMemoryDataProvider.hpp"),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/InMemoryDataProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),t("OutboundLink")],1),t("br"),e._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/InMemoryDataProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("code",[e._v("API: latest")]),t("br"),e._v(" "),t("code",[e._v("module: oatpp")]),t("br"),e._v(" "),t("code",[e._v('#include "oatpp/web/mime/multipart/InMemoryDataProvider.hpp"')])]),e._v(" "),t("h2",{attrs:{id:"createinmemorypartreader"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#createinmemorypartreader"}},[e._v("#")]),e._v(" createInMemoryPartReader")]),e._v(" "),t("p",[t("strong",[e._v("Namespace:")]),e._v(" "),t("code",[e._v("oatpp::web::mime::multipart")])]),e._v(" "),t("p",[e._v("Create in-memory part reader. "),t("ul",[t("li",[t("strong",[e._v("@param")]),e._v(" maxDataSize - max-allowed size of the data. Use "),t("code",[e._v("-1")]),e._v(" for infinity. ")]),t("li",[t("strong",[e._v("@return")])])])]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("PartReader"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("createInMemoryPartReader")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("v_io_size maxDataSize"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("h2",{attrs:{id:"createasyncinmemorypartreader"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#createasyncinmemorypartreader"}},[e._v("#")]),e._v(" createAsyncInMemoryPartReader")]),e._v(" "),t("p",[t("strong",[e._v("Namespace:")]),e._v(" "),t("code",[e._v("oatpp::web::mime::multipart")])]),e._v(" "),t("p",[e._v("Create Async in-memory part reader. "),t("ul",[t("li",[t("strong",[e._v("@param")]),e._v(" maxDataSize - max-allowed size of the data. Use "),t("code",[e._v("-1")]),e._v(" for infinity. ")]),t("li",[t("strong",[e._v("@return")])])])]),e._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("AsyncPartReader"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("createAsyncInMemoryPartReader")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("v_io_size maxDataSize"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/237.1586c1f1.js b/docs/.vuepress/dist/assets/js/237.1586c1f1.js deleted file mode 100644 index 8cf286928..000000000 --- a/docs/.vuepress/dist/assets/js/237.1586c1f1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[237],{609:function(t,a,r){"use strict";r.r(a);var s=r(42),e=Object(s.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"multipart-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-hpp"}},[t._v("#")]),t._v(" Multipart.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/Multipart.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/Multipart.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/mime/multipart/Multipart.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"headers"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#headers"}},[t._v("#")]),t._v(" Headers")]),t._v(" "),r("p",[r("strong",[t._v("Namespace:")]),t._v(" "),r("code",[t._v("oatpp::web::mime::multipart")])]),t._v(" "),r("p",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[t._v("oatpp::data::share::LazyStringMap")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMultimap"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Headers\n")])])]),r("h2",{attrs:{id:"multipart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart"}},[t._v("#")]),t._v(" Multipart")]),t._v(" "),r("p",[t._v("Abstract Multipart.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Multipart")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-multipart"}},[t._v("Multipart")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-~multipart"}},[t._v("~Multipart")])]),t._v(" "),r("td",[t._v("Default virtual Destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-getboundary"}},[t._v("getBoundary")])]),t._v(" "),r("td",[t._v("Get multipart boundary value.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-readnextpart"}},[t._v("readNextPart")])]),t._v(" "),r("td",[t._v("Read part-by-part from Multipart.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-writenextpart"}},[t._v("writeNextPart")])]),t._v(" "),r("td",[t._v("Write part-by-part to Multipart.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-readnextpartsimple"}},[t._v("readNextPartSimple")])]),t._v(" "),r("td",[t._v("Read part-by-part from Multipart. "),r("br")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-writenextpartsimple"}},[t._v("writeNextPartSimple")])]),t._v(" "),r("td",[t._v("Write part-by-part to Multipart.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-generaterandomboundary"}},[t._v("generateRandomBoundary")])]),t._v(" "),r("td",[t._v("Generate random boundary for Multipart object. Base64 encoded.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#multipart-parseboundaryfromheaders"}},[t._v("parseBoundaryFromHeaders")])]),t._v(" "),r("td",[t._v("Parse boundary value from headers")])])])]),t._v(" "),r("h3",{attrs:{id:"multipart-multipart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-multipart"}},[t._v("#")]),t._v(" Multipart::Multipart")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" boundary - multipart boundary value. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("Multipart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" boundary"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-multipart-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-multipart-2"}},[t._v("#")]),t._v(" Multipart::~Multipart")]),t._v(" "),r("p",[t._v("Default virtual Destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("Multipart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-getboundary"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-getboundary"}},[t._v("#")]),t._v(" Multipart::getBoundary")]),t._v(" "),r("p",[t._v("Get multipart boundary value. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - multipart boundary value. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBoundary")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-readnextpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-readnextpart"}},[t._v("#")]),t._v(" Multipart::readNextPart")]),t._v(" "),r("p",[t._v("Read part-by-part from Multipart. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("readNextPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-writenextpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-writenextpart"}},[t._v("#")]),t._v(" Multipart::writeNextPart")]),t._v(" "),r("p",[t._v("Write part-by-part to Multipart. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" part ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeNextPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-readnextpartsimple"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-readnextpartsimple"}},[t._v("#")]),t._v(" Multipart::readNextPartSimple")]),t._v(" "),r("p",[t._v("Read part-by-part from Multipart. "),r("br"),t._v(" Call writeNextPart(...) and throw if "),r("code",[t._v("action.isNone() == false")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("readNextPartSimple")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-writenextpartsimple"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-writenextpartsimple"}},[t._v("#")]),t._v(" Multipart::writeNextPartSimple")]),t._v(" "),r("p",[t._v("Write part-by-part to Multipart. Call writeNextPartSimple(...) and throw if "),r("code",[t._v("action.isNone() == false")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" part ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeNextPartSimple")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-generaterandomboundary"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-generaterandomboundary"}},[t._v("#")]),t._v(" Multipart::generateRandomBoundary")]),t._v(" "),r("p",[t._v("Generate random boundary for Multipart object. Base64 encoded. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" boundarySize - size in bytes of random vector. ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateRandomBoundary")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 boundarySize "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"multipart-parseboundaryfromheaders"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#multipart-parseboundaryfromheaders"}},[t._v("#")]),t._v(" Multipart::parseBoundaryFromHeaders")]),t._v(" "),r("p",[t._v("Parse boundary value from headers "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" headers ")]),r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseBoundaryFromHeaders")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" requestHeaders"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/238.0cef5cb6.js b/docs/.vuepress/dist/assets/js/238.0cef5cb6.js deleted file mode 100644 index d5c13bde4..000000000 --- a/docs/.vuepress/dist/assets/js/238.0cef5cb6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[238],{610:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"part-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-hpp"}},[t._v("#")]),t._v(" Part.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/Part.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/Part.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/mime/multipart/Part.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"part"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part"}},[t._v("#")]),t._v(" Part")]),t._v(" "),e("p",[t._v("One part of the multipart.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mime "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Part")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::data::share::LazyStringMultimap")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-headers"}},[t._v("Headers")])]),t._v(" "),e("td",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[t._v("oatpp::data::share::LazyStringMap")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-part"}},[t._v("Part")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-setpayload"}},[t._v("setPayload")])]),t._v(" "),e("td",[t._v("Set payload.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-getpayload"}},[t._v("getPayload")])]),t._v(" "),e("td",[t._v("Get payload.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-getname"}},[t._v("getName")])]),t._v(" "),e("td",[t._v("Get name of the part.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-getfilename"}},[t._v("getFilename")])]),t._v(" "),e("td",[t._v("Get filename of the part (if applicable).")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const Headers&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-getheaders"}},[t._v("getHeaders")])]),t._v(" "),e("td",[t._v("Get request's headers map.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-getheader"}},[t._v("getHeader")])]),t._v(" "),e("td",[t._v("Get header value")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-putheader"}},[t._v("putHeader")])]),t._v(" "),e("td",[t._v("Add http header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-putheaderifnotexists"}},[t._v("putHeaderIfNotExists")])]),t._v(" "),e("td",[t._v("Add http header if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-settag"}},[t._v("setTag")])]),t._v(" "),e("td",[t._v("Tag-object - object used to associate some data with the Part. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const char*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-gettagname"}},[t._v("getTagName")])]),t._v(" "),e("td",[t._v("Get tag name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-gettagobject"}},[t._v("getTagObject")])]),t._v(" "),e("td",[t._v("Get tag object.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#part-cleartag"}},[t._v("clearTag")])]),t._v(" "),e("td",[t._v("Clear the tag.")])])])]),t._v(" "),e("h3",{attrs:{id:"part-headers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-headers"}},[t._v("#")]),t._v(" Part::Headers")]),t._v(" "),e("p",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[t._v("oatpp::data::share::LazyStringMap")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMultimap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Headers\n")])])]),e("h3",{attrs:{id:"part-part"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-part"}},[t._v("#")]),t._v(" Part::Part")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Part")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - headers of the part. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" payload - part payload. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Part")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" payload "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"part-setpayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-setpayload"}},[t._v("#")]),t._v(" Part::setPayload")]),t._v(" "),e("p",[t._v("Set payload. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" payload ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPayload")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" payload"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-getpayload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-getpayload"}},[t._v("#")]),t._v(" Part::getPayload")]),t._v(" "),e("p",[t._v("Get payload. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resource"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPayload")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-getname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-getname"}},[t._v("#")]),t._v(" Part::getName")]),t._v(" "),e("p",[t._v("Get name of the part. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - name of the part. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-getfilename"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-getfilename"}},[t._v("#")]),t._v(" Part::getFilename")]),t._v(" "),e("p",[t._v("Get filename of the part (if applicable). "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - filename. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getFilename")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-getheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-getheaders"}},[t._v("#")]),t._v(" Part::getHeaders")]),t._v(" "),e("p",[t._v("Get request's headers map. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" Headers map ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-getheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-getheader"}},[t._v("#")]),t._v(" Part::getHeader")]),t._v(" "),e("p",[t._v("Get header value "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headerName ")]),e("li",[e("strong",[t._v("@return")]),t._v(" header value ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-putheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-putheader"}},[t._v("#")]),t._v(" Part::putHeader")]),t._v(" "),e("p",[t._v("Add http header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-putheaderifnotexists"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-putheaderifnotexists"}},[t._v("#")]),t._v(" Part::putHeaderIfNotExists")]),t._v(" "),e("p",[t._v("Add http header if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-settag"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-settag"}},[t._v("#")]),t._v(" Part::setTag")]),t._v(" "),e("p",[t._v("Tag-object - object used to associate some data with the Part. "),e("br"),t._v(" Ex.: used by oatpp::web::mime::multipart::InMemoryPartReader. to associate intermediate buffer with the part. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tagName ")]),e("li",[e("strong",[t._v("@param")]),t._v(" tagObject ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setTag")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" tagName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tagObject"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-gettagname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-gettagname"}},[t._v("#")]),t._v(" Part::getTagName")]),t._v(" "),e("p",[t._v("Get tag name. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTagName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-gettagobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-gettagobject"}},[t._v("#")]),t._v(" Part::getTagObject")]),t._v(" "),e("p",[t._v("Get tag object. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTagObject")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"part-cleartag"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#part-cleartag"}},[t._v("#")]),t._v(" Part::clearTag")]),t._v(" "),e("p",[t._v("Clear the tag.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("clearTag")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/239.e5dacf08.js b/docs/.vuepress/dist/assets/js/239.e5dacf08.js deleted file mode 100644 index e66326600..000000000 --- a/docs/.vuepress/dist/assets/js/239.e5dacf08.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[239],{611:function(t,a,r){"use strict";r.r(a);var s=r(42),e=Object(s.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"partlist-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-hpp"}},[t._v("#")]),t._v(" PartList.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/PartList.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/PartList.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/mime/multipart/PartList.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"partlist"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist"}},[t._v("#")]),t._v(" PartList")]),t._v(" "),r("p",[t._v("Structure that holds Multipart parts in the "),r("code",[t._v("std::list")]),t._v(".")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PartList")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-partlist"}},[t._v("PartList")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Constructor. ")]),r("li",[t._v("Constructor. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-createsharedwithrandomboundary"}},[t._v("createSharedWithRandomBoundary")])]),t._v(" "),r("td",[t._v("Create Multipart object with random boundary. "),r("br")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-readnextpart"}},[t._v("readNextPart")])]),t._v(" "),r("td",[t._v("Read part-by-part from Multipart.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-writenextpart"}},[t._v("writeNextPart")])]),t._v(" "),r("td",[t._v("Write part-by-part to Multipart.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-getnamedpart"}},[t._v("getNamedPart")])]),t._v(" "),r("td",[t._v("Get part by name "),r("br")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("const std::list>&")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-getallparts"}},[t._v("getAllParts")])]),t._v(" "),r("td",[t._v("Get list of all parts.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("v_int64")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#partlist-count"}},[t._v("count")])]),t._v(" "),r("td",[t._v("Get parts count.")])])])]),t._v(" "),r("h3",{attrs:{id:"partlist-partlist"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-partlist"}},[t._v("#")]),t._v(" PartList::PartList")]),t._v(" "),r("ol",[r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" boundary - multipart boundary value. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("PartList")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" boundary"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(' requestHeaders - request headers. Headers must contain "Content-Type" header. ')])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("PartList")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" requestHeaders"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"partlist-createsharedwithrandomboundary"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-createsharedwithrandomboundary"}},[t._v("#")]),t._v(" PartList::createSharedWithRandomBoundary")]),t._v(" "),r("p",[t._v("Create Multipart object with random boundary. "),r("br"),t._v(" It will generate random vector of size "),r("code",[t._v("boundarySize")]),t._v(" in bytes encoded in base64. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" boundarySize - size of the random vecrot in bytes. ")]),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to Multipart. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PartList"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createSharedWithRandomBoundary")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 boundarySize "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"partlist-readnextpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-readnextpart"}},[t._v("#")]),t._v(" PartList::readNextPart")]),t._v(" "),r("p",[t._v("Read part-by-part from Multipart. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("readNextPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"partlist-writenextpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-writenextpart"}},[t._v("#")]),t._v(" PartList::writeNextPart")]),t._v(" "),r("p",[t._v("Write part-by-part to Multipart. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" part ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeNextPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"partlist-getnamedpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-getnamedpart"}},[t._v("#")]),t._v(" PartList::getNamedPart")]),t._v(" "),r("p",[t._v("Get part by name "),r("br"),t._v(" Applicable to named parts only. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" name - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Part/#part"}},[t._v("oatpp::web::mime::multipart::Part")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"partlist-getallparts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-getallparts"}},[t._v("#")]),t._v(" PartList::getAllParts")]),t._v(" "),r("p",[t._v("Get list of all parts. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::list")]),t._v(" of "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Part/#part"}},[t._v("oatpp::web::mime::multipart::Part")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAllParts")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"partlist-count"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partlist-count"}},[t._v("#")]),t._v(" PartList::count")]),t._v(" "),r("p",[t._v("Get parts count. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - parts count. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("v_int64 "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("count")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/24.d4736476.js b/docs/.vuepress/dist/assets/js/24.d4736476.js deleted file mode 100644 index 90a25328d..000000000 --- a/docs/.vuepress/dist/assets/js/24.d4736476.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{396:function(a,t,s){"use strict";s.r(t);var e=s(42),l=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"callbacks-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-hpp"}},[a._v("#")]),a._v(" Callbacks.hpp"),s("seo")],1),a._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/Callbacks.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),s("OutboundLink")],1),s("br"),a._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/Callbacks.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),s("OutboundLink")],1)]),a._v(" "),s("p",[s("code",[a._v("API: latest")]),s("br"),a._v(" "),s("code",[a._v("module: oatpp-libressl")]),s("br"),a._v(" "),s("code",[a._v('#include "oatpp-libressl/Callbacks.hpp"')])]),a._v(" "),s("h2",{attrs:{id:"callbacks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#callbacks"}},[a._v("#")]),a._v(" Callbacks")]),a._v(" "),s("p",[a._v("Collection of default-implemented callbacks for libressl")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" libressl "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Callbacks")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Return Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("void")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#callbacks-setdefaultcallbacks"}},[a._v("setDefaultCallbacks")])]),a._v(" "),s("td",[a._v("Set default callbacks for libressl")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("void")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#callbacks-lockingcallback"}},[a._v("lockingCallback")])]),a._v(" "),s("td",[a._v("Oatpp-default implementation of lockingCallback passed to CRYPTO_set_locking_callback().")])])])]),a._v(" "),s("h3",{attrs:{id:"callbacks-setdefaultcallbacks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-setdefaultcallbacks"}},[a._v("#")]),a._v(" Callbacks::setDefaultCallbacks")]),a._v(" "),s("p",[a._v("Set default callbacks for libressl")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("setDefaultCallbacks")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),s("h3",{attrs:{id:"callbacks-lockingcallback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-lockingcallback"}},[a._v("#")]),a._v(" Callbacks::lockingCallback")]),a._v(" "),s("p",[a._v("Oatpp-default implementation of lockingCallback passed to CRYPTO_set_locking_callback(). must be set in case libressl is used in multithreaded environment. Locking is done using "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/concurrency/SpinLock/#spinlock"}},[a._v("oatpp::concurrency::SpinLock")]),a._v(". "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" mode ")]),s("li",[s("strong",[a._v("@param")]),a._v(" n - index of the lock. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" file - file where lock is set. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" line - line where lock is set. ")])])],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("static")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("lockingCallback")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("int")]),a._v(" mode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("int")]),a._v(" n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("int")]),a._v(" line"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/240.bff91134.js b/docs/.vuepress/dist/assets/js/240.bff91134.js deleted file mode 100644 index 09e780268..000000000 --- a/docs/.vuepress/dist/assets/js/240.bff91134.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[240],{612:function(a,t,r){"use strict";r.r(t);var e=r(42),s=Object(e.a)({},(function(){var a=this,t=a.$createElement,r=a._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[r("h1",{attrs:{id:"partreader-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreader-hpp"}},[a._v("#")]),a._v(" PartReader.hpp"),r("seo")],1),a._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/PartReader.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),r("OutboundLink")],1),r("br"),a._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/PartReader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),r("OutboundLink")],1)]),a._v(" "),r("p",[r("code",[a._v("API: latest")]),r("br"),a._v(" "),r("code",[a._v("module: oatpp")]),r("br"),a._v(" "),r("code",[a._v('#include "oatpp/web/mime/multipart/PartReader.hpp"')])]),a._v(" "),r("h2",{attrs:{id:"partreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreader"}},[a._v("#")]),a._v(" PartReader")]),a._v(" "),r("p",[a._v("Abstract read handler of multipart parts.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("PartReader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreader-~partreader"}},[a._v("~PartReader")])]),a._v(" "),r("td",[a._v("Default virtual destructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreader-onnewpart"}},[a._v("onNewPart")])]),a._v(" "),r("td",[a._v("Called when new part headers are parsed and part object is created.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreader-onpartdata"}},[a._v("onPartData")])]),a._v(" "),r("td",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"partreader-partreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreader-partreader"}},[a._v("#")]),a._v(" PartReader::~PartReader")]),a._v(" "),r("p",[a._v("Default virtual destructor.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("PartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),r("h3",{attrs:{id:"partreader-onnewpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreader-onnewpart"}},[a._v("#")]),a._v(" PartReader::onNewPart")]),a._v(" "),r("p",[a._v("Called when new part headers are parsed and part object is created. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onNewPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h3",{attrs:{id:"partreader-onpartdata"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreader-onpartdata"}},[a._v("#")]),a._v(" PartReader::onPartData")]),a._v(" "),r("p",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br"),a._v(" When all data is read, called again with "),r("code",[a._v("data == nullptr size == 0")]),a._v(" to indicate end of the part. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@param")]),a._v(" data - pointer to buffer containing chunk data. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" size - size of the buffer. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartData")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("v_io_size size"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h2",{attrs:{id:"asyncpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartreader"}},[a._v("#")]),a._v(" AsyncPartReader")]),a._v(" "),r("p",[a._v("Abstract Async read handler of multipart parts.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AsyncPartReader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncpartreader-~asyncpartreader"}},[a._v("~AsyncPartReader")])]),a._v(" "),r("td",[a._v("Default virtual destructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("async::CoroutineStarter")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncpartreader-onnewpartasync"}},[a._v("onNewPartAsync")])]),a._v(" "),r("td",[a._v("Called when new part headers are parsed and part object is created.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("async::CoroutineStarter")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncpartreader-onpartdataasync"}},[a._v("onPartDataAsync")])]),a._v(" "),r("td",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"asyncpartreader-asyncpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartreader-asyncpartreader"}},[a._v("#")]),a._v(" AsyncPartReader::~AsyncPartReader")]),a._v(" "),r("p",[a._v("Default virtual destructor.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("AsyncPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),r("h3",{attrs:{id:"asyncpartreader-onnewpartasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartreader-onnewpartasync"}},[a._v("#")]),a._v(" AsyncPartReader::onNewPartAsync")]),a._v(" "),r("p",[a._v("Called when new part headers are parsed and part object is created. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@return")]),a._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[a._v("oatpp::async::CoroutineStarter")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" async"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onNewPartAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h3",{attrs:{id:"asyncpartreader-onpartdataasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartreader-onpartdataasync"}},[a._v("#")]),a._v(" AsyncPartReader::onPartDataAsync")]),a._v(" "),r("p",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br"),a._v(" When all data is read, called again with "),r("code",[a._v("data == nullptr size == 0")]),a._v(" to indicate end of the part. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@param")]),a._v(" data - pointer to buffer containing chunk data. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" size - size of the buffer. ")]),r("li",[r("strong",[a._v("@return")]),a._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[a._v("oatpp::async::CoroutineStarter")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" async"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartDataAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("v_io_size size"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h2",{attrs:{id:"partreaderresourceprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreaderresourceprovider"}},[a._v("#")]),a._v(" PartReaderResourceProvider")]),a._v(" "),r("p",[a._v("Resource provider for "),r("code",[a._v("StreamPartReader")]),a._v(".")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("PartReaderResourceProvider")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreaderresourceprovider-~partreaderresourceprovider"}},[a._v("~PartReaderResourceProvider")])]),a._v(" "),r("td",[a._v("Default virtual destructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("std::shared_ptr")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreaderresourceprovider-getresource"}},[a._v("getResource")])]),a._v(" "),r("td",[a._v("Get data resource to write (save) part data in.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("async::CoroutineStarter")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partreaderresourceprovider-getresourceasync"}},[a._v("getResourceAsync")])]),a._v(" "),r("td",[a._v("Get data resource to write (save) part data in.")])])])]),a._v(" "),r("h3",{attrs:{id:"partreaderresourceprovider-partreaderresourceprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreaderresourceprovider-partreaderresourceprovider"}},[a._v("#")]),a._v(" PartReaderResourceProvider::~PartReaderResourceProvider")]),a._v(" "),r("p",[a._v("Default virtual destructor.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("PartReaderResourceProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),r("h3",{attrs:{id:"partreaderresourceprovider-getresource"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreaderresourceprovider-getresource"}},[a._v("#")]),a._v(" PartReaderResourceProvider::getResource")]),a._v(" "),r("p",[a._v("Get data resource to write (save) part data in. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@return")])])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("resource"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Resource"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("getResource")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h3",{attrs:{id:"partreaderresourceprovider-getresourceasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreaderresourceprovider-getresourceasync"}},[a._v("#")]),a._v(" PartReaderResourceProvider::getResourceAsync")]),a._v(" "),r("p",[a._v("Get data resource to write (save) part data in. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@param")]),a._v(" resource - put here pointer to obtained resource. ")]),r("li",[r("strong",[a._v("@return")])])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" async"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("getResourceAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("resource"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Resource"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" resource"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),r("h2",{attrs:{id:"streampartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streampartreader"}},[a._v("#")]),a._v(" StreamPartReader")]),a._v(" "),r("p",[a._v("Part reader used in order to stream part data.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("StreamPartReader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" PartReader "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#streampartreader-streampartreader"}},[a._v("StreamPartReader")])]),a._v(" "),r("td",[a._v("Constructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#streampartreader-onnewpart"}},[a._v("onNewPart")])]),a._v(" "),r("td",[a._v("Called when new part headers are parsed and part object is created.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#streampartreader-onpartdata"}},[a._v("onPartData")])]),a._v(" "),r("td",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"streampartreader-streampartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streampartreader-streampartreader"}},[a._v("#")]),a._v(" StreamPartReader::StreamPartReader")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" resourceProvider ")]),r("li",[r("strong",[a._v("@param")]),a._v(" maxDataSize - use "),r("code",[a._v("-1")]),a._v(" for no limit. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("StreamPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("PartReaderResourceProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" resourceProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_io_size maxDataSize "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"streampartreader-onnewpart"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streampartreader-onnewpart"}},[a._v("#")]),a._v(" StreamPartReader::onNewPart")]),a._v(" "),r("p",[a._v("Called when new part headers are parsed and part object is created. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onNewPart")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" override\n")])])]),r("h3",{attrs:{id:"streampartreader-onpartdata"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streampartreader-onpartdata"}},[a._v("#")]),a._v(" StreamPartReader::onPartData")]),a._v(" "),r("p",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br"),a._v(" When all data is read, called again with "),r("code",[a._v("data == nullptr size == 0")]),a._v(" to indicate end of the part. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@param")]),a._v(" data - pointer to buffer containing chunk data. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" size - size of the buffer. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartData")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("v_io_size size"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" override\n")])])]),r("h2",{attrs:{id:"asyncstreampartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncstreampartreader"}},[a._v("#")]),a._v(" AsyncStreamPartReader")]),a._v(" "),r("p",[a._v("Async part reader used in order to stream part data in Asynchronous manner.")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AsyncStreamPartReader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" AsyncPartReader "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-5"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncstreampartreader-asyncstreampartreader"}},[a._v("AsyncStreamPartReader")])]),a._v(" "),r("td",[a._v("Constructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("async::CoroutineStarter")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncstreampartreader-onnewpartasync"}},[a._v("onNewPartAsync")])]),a._v(" "),r("td",[a._v("Called when new part headers are parsed and part object is created.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("async::CoroutineStarter")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncstreampartreader-onpartdataasync"}},[a._v("onPartDataAsync")])]),a._v(" "),r("td",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"asyncstreampartreader-asyncstreampartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncstreampartreader-asyncstreampartreader"}},[a._v("#")]),a._v(" AsyncStreamPartReader::AsyncStreamPartReader")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" resourceProvider ")]),r("li",[r("strong",[a._v("@param")]),a._v(" maxDataSize - use "),r("code",[a._v("-1")]),a._v(" for no limit. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("AsyncStreamPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("PartReaderResourceProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" resourceProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_io_size maxDataSize "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),r("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"asyncstreampartreader-onnewpartasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncstreampartreader-onnewpartasync"}},[a._v("#")]),a._v(" AsyncStreamPartReader::onNewPartAsync")]),a._v(" "),r("p",[a._v("Called when new part headers are parsed and part object is created. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@return")]),a._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[a._v("oatpp::async::CoroutineStarter")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onNewPartAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" override\n")])])]),r("h3",{attrs:{id:"asyncstreampartreader-onpartdataasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncstreampartreader-onpartdataasync"}},[a._v("#")]),a._v(" AsyncStreamPartReader::onPartDataAsync")]),a._v(" "),r("p",[a._v("Called on each new chunk of data is parsed for the multipart-part. "),r("br"),a._v(" When all data is read, called again with "),r("code",[a._v("data == nullptr size == 0")]),a._v(" to indicate end of the part. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" part ")]),r("li",[r("strong",[a._v("@param")]),a._v(" data - pointer to buffer containing chunk data. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" size - size of the buffer. ")]),r("li",[r("strong",[a._v("@return")]),a._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[a._v("oatpp::async::CoroutineStarter")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[a._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartDataAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Part"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" part"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("v_io_size size"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" override\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/241.e3c07be4.js b/docs/.vuepress/dist/assets/js/241.e3c07be4.js deleted file mode 100644 index 7eeadaeb3..000000000 --- a/docs/.vuepress/dist/assets/js/241.e3c07be4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[241],{613:function(a,t,r){"use strict";r.r(t);var e=r(42),s=Object(e.a)({},(function(){var a=this,t=a.$createElement,r=a._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[r("h1",{attrs:{id:"reader-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reader-hpp"}},[a._v("#")]),a._v(" Reader.hpp"),r("seo")],1),a._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/Reader.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),r("OutboundLink")],1),r("br"),a._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/Reader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),r("OutboundLink")],1)]),a._v(" "),r("p",[r("code",[a._v("API: latest")]),r("br"),a._v(" "),r("code",[a._v("module: oatpp")]),r("br"),a._v(" "),r("code",[a._v('#include "oatpp/web/mime/multipart/Reader.hpp"')])]),a._v(" "),r("h2",{attrs:{id:"partreadersmap"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partreadersmap"}},[a._v("#")]),a._v(" PartReadersMap")]),a._v(" "),r("p",[r("strong",[a._v("Namespace:")]),a._v(" "),r("code",[a._v("oatpp::web::mime::multipart")])]),a._v(" "),r("p",[a._v("Map of part readers. "),r("code",[a._v(" --\x3e ")]),a._v(".")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("unordered_map"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("PartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">>")]),a._v(" PartReadersMap\n")])])]),r("h2",{attrs:{id:"partsparser"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partsparser"}},[a._v("#")]),a._v(" PartsParser")]),a._v(" "),r("p",[a._v("In memory multipart parser. "),r("br"),a._v(" Extends - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/StatefulParser/#statefulparser-listener"}},[a._v("oatpp::web::mime::multipart::StatefulParser::Listener")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("PartsParser")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" StatefulParser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Listener "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#partsparser-partsparser"}},[a._v("PartsParser")])]),a._v(" "),r("td",[a._v("Constructor.")])])])]),a._v(" "),r("h3",{attrs:{id:"partsparser-partsparser"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#partsparser-partsparser"}},[a._v("#")]),a._v(" PartsParser::PartsParser")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" multipart - pointer to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Multipart/#multipart"}},[a._v("oatpp::web::mime::multipart::Multipart")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("PartsParser")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Multipart"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" multipart"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h2",{attrs:{id:"asyncpartreadersmap"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartreadersmap"}},[a._v("#")]),a._v(" AsyncPartReadersMap")]),a._v(" "),r("p",[r("strong",[a._v("Namespace:")]),a._v(" "),r("code",[a._v("oatpp::web::mime::multipart")])]),a._v(" "),r("p",[a._v("Map of async part readers. "),r("code",[a._v(" --\x3e ")]),a._v(".")]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("unordered_map"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("AsyncPartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">>")]),a._v(" AsyncPartReadersMap\n")])])]),r("h2",{attrs:{id:"asyncpartsparser"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartsparser"}},[a._v("#")]),a._v(" AsyncPartsParser")]),a._v(" "),r("p",[a._v("Async In memory multipart parser. "),r("br"),a._v(" Extends - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/StatefulParser/#statefulparser-asynclistener"}},[a._v("oatpp::web::mime::multipart::StatefulParser::AsyncListener")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AsyncPartsParser")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" StatefulParser"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("AsyncListener "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncpartsparser-asyncpartsparser"}},[a._v("AsyncPartsParser")])]),a._v(" "),r("td",[a._v("Constructor.")])])])]),a._v(" "),r("h3",{attrs:{id:"asyncpartsparser-asyncpartsparser"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncpartsparser-asyncpartsparser"}},[a._v("#")]),a._v(" AsyncPartsParser::AsyncPartsParser")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" multipart - pointer to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/Multipart/#multipart"}},[a._v("oatpp::web::mime::multipart::Multipart")]),a._v(". ")],1)])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("AsyncPartsParser")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Multipart"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" multipart"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h2",{attrs:{id:"reader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reader"}},[a._v("#")]),a._v(" Reader")]),a._v(" "),r("p",[a._v("In memory Multipart reader. Extends - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[a._v("oatpp::data::stream::WriteCallback")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Reader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("WriteCallback "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-3"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#reader-reader"}},[a._v("Reader")])]),a._v(" "),r("td",[a._v("Constructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#reader-setpartreader"}},[a._v("setPartReader")])]),a._v(" "),r("td",[a._v("Set named part reader. "),r("br")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#reader-setdefaultpartreader"}},[a._v("setDefaultPartReader")])]),a._v(" "),r("td",[a._v("Set default reader for parts. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"reader-reader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reader-reader"}},[a._v("#")]),a._v(" Reader::Reader")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" multipart - Multipart object to save read data to. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("Reader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Multipart"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" multipart"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"reader-setpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reader-setpartreader"}},[a._v("#")]),a._v(" Reader::setPartReader")]),a._v(" "),r("p",[a._v("Set named part reader. "),r("br"),a._v(" Part with the "),r("code",[a._v("name == partName")]),a._v(" will be read using the specified "),r("code",[a._v("reader")]),a._v(". "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" partName - name of the part to read. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" reader - reader to read part with. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("setPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" partName"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("PartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" reader"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"reader-setdefaultpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reader-setdefaultpartreader"}},[a._v("#")]),a._v(" Reader::setDefaultPartReader")]),a._v(" "),r("p",[a._v("Set default reader for parts. "),r("br"),a._v(" "),r("code",[a._v("setPartReader")]),a._v(" has precedence. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" reader ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("setDefaultPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("PartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" reader"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h2",{attrs:{id:"asyncreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncreader"}},[a._v("#")]),a._v(" AsyncReader")]),a._v(" "),r("p",[a._v("In memory Multipart reader. Extends - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[a._v("oatpp::data::stream::WriteCallback")]),a._v(".")],1),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AsyncReader")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("public")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("WriteCallback "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),r("h3",{attrs:{id:"methods-4"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),r("table",[r("thead",[r("tr",[r("th",[a._v("Return Type")]),a._v(" "),r("th",[a._v("Name")]),a._v(" "),r("th",[a._v("Summary")])])]),a._v(" "),r("tbody",[r("tr",[r("td",[r("code",[a._v("[none]")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncreader-asyncreader"}},[a._v("AsyncReader")])]),a._v(" "),r("td",[a._v("Constructor.")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncreader-setpartreader"}},[a._v("setPartReader")])]),a._v(" "),r("td",[a._v("Set named part reader. "),r("br")])]),a._v(" "),r("tr",[r("td",[r("code",[a._v("void")])]),a._v(" "),r("td",[r("a",{attrs:{href:"#asyncreader-setdefaultpartreader"}},[a._v("setDefaultPartReader")])]),a._v(" "),r("td",[a._v("Set default reader for parts. "),r("br")])])])]),a._v(" "),r("h3",{attrs:{id:"asyncreader-asyncreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncreader-asyncreader"}},[a._v("#")]),a._v(" AsyncReader::AsyncReader")]),a._v(" "),r("p",[a._v("Constructor. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" multipart - Multipart object to save read data to. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[a._v("AsyncReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Multipart"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" multipart"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"asyncreader-setpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncreader-setpartreader"}},[a._v("#")]),a._v(" AsyncReader::setPartReader")]),a._v(" "),r("p",[a._v("Set named part reader. "),r("br"),a._v(" Part with the "),r("code",[a._v("name == partName")]),a._v(" will be read using the specified "),r("code",[a._v("reader")]),a._v(". "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" partName - name of the part to read. ")]),r("li",[r("strong",[a._v("@param")]),a._v(" reader - reader to read part with. ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("setPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" partName"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("AsyncPartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" reader"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),r("h3",{attrs:{id:"asyncreader-setdefaultpartreader"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asyncreader-setdefaultpartreader"}},[a._v("#")]),a._v(" AsyncReader::setDefaultPartReader")]),a._v(" "),r("p",[a._v("Set default reader for parts. "),r("br"),a._v(" "),r("code",[a._v("setPartReader")]),a._v(" has precedence. "),r("ul",[r("li",[r("strong",[a._v("@param")]),a._v(" reader ")])])]),a._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[a._v("setDefaultPartReader")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("AsyncPartReader"),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" reader"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/242.3e954990.js b/docs/.vuepress/dist/assets/js/242.3e954990.js deleted file mode 100644 index b0822d51d..000000000 --- a/docs/.vuepress/dist/assets/js/242.3e954990.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[242],{614:function(a,t,s){"use strict";s.r(t);var e=s(42),r=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"statefulparser-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-hpp"}},[a._v("#")]),a._v(" StatefulParser.hpp"),s("seo")],1),a._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/StatefulParser.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),s("OutboundLink")],1),s("br"),a._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/StatefulParser.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),s("OutboundLink")],1)]),a._v(" "),s("p",[s("code",[a._v("API: latest")]),s("br"),a._v(" "),s("code",[a._v("module: oatpp")]),s("br"),a._v(" "),s("code",[a._v('#include "oatpp/web/mime/multipart/StatefulParser.hpp"')])]),a._v(" "),s("h2",{attrs:{id:"statefulparser"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser"}},[a._v("#")]),a._v(" StatefulParser")]),a._v(" "),s("p",[a._v("Stateful parser of multipart-data stream. Parser designed to work with stream-like data in order to store minimum data in the memory.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("StatefulParser")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[a._v("#")]),a._v(" Typedefs")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("oatpp::data::share::LazyStringMultimap")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-headers"}},[a._v("Headers")])]),a._v(" "),s("td",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1)])])]),a._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Return Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("[none]")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-statefulparser"}},[a._v("StatefulParser")])]),a._v(" "),s("td",[a._v("Constructor.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("void")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-parsenext"}},[a._v("parseNext")])]),a._v(" "),s("td",[a._v("Parse next chunk of bytes.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("bool")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-finished"}},[a._v("finished")])]),a._v(" "),s("td",[a._v("Check if parser done parsing data.")])])])]),a._v(" "),s("h3",{attrs:{id:"statefulparser-headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-headers"}},[a._v("#")]),a._v(" StatefulParser::Headers")]),a._v(" "),s("p",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("LazyStringMultimap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" Headers\n")])])]),s("h3",{attrs:{id:"statefulparser-statefulparser"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-statefulparser"}},[a._v("#")]),a._v(" StatefulParser::StatefulParser")]),a._v(" "),s("p",[a._v("Constructor. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" boundary - value of multipart boundary. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" listener - "),s("a",{attrs:{href:"#statefulparser-listener"}},[a._v("StatefulParser::Listener")]),a._v(". ")]),s("li",[s("strong",[a._v("@param")]),a._v(" asyncListener - "),s("a",{attrs:{href:"#statefulparser-asynclistener"}},[a._v("StatefulParser::AsyncListener")]),a._v(". ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[a._v("StatefulParser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" boundary"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("Listener"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" listener"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("AsyncListener"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" asyncListener"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-parsenext"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-parsenext"}},[a._v("#")]),a._v(" StatefulParser::parseNext")]),a._v(" "),s("p",[a._v("Parse next chunk of bytes. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" inlineData - inline data. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" action - Async Action in case Async Listener was provided in constructor. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("parseNext")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("buffer"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("InlineWriteData"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" inlineData"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Action"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" action"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-finished"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-finished"}},[a._v("#")]),a._v(" StatefulParser::finished")]),a._v(" "),s("p",[a._v("Check if parser done parsing data. "),s("ul",[s("li",[s("strong",[a._v("@return")]),a._v(" - "),s("code",[a._v("true")]),a._v(" or "),s("code",[a._v("false")]),a._v(". ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("bool")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("finished")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),s("h2",{attrs:{id:"statefulparser-listener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-listener"}},[a._v("#")]),a._v(" StatefulParser::Listener")]),a._v(" "),s("p",[a._v("Listener for parsed items.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("StatefulParser")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Listener")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"typedefs-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs-2"}},[a._v("#")]),a._v(" Typedefs")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("oatpp::data::share::LazyStringMultimap")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-listener-headers"}},[a._v("Headers")])]),a._v(" "),s("td",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1)])])]),a._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Return Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("[none]")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-listener-~listener"}},[a._v("~Listener")])]),a._v(" "),s("td",[a._v("Default virtual Destructor.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("void")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-listener-onpartheaders"}},[a._v("onPartHeaders")])]),a._v(" "),s("td",[a._v("Called on new part found in the stream.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("void")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-listener-onpartdata"}},[a._v("onPartData")])]),a._v(" "),s("td",[a._v("Called on each new chunk of bytes parsed from the part body.")])])])]),a._v(" "),s("h3",{attrs:{id:"statefulparser-listener-headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-listener-headers"}},[a._v("#")]),a._v(" StatefulParser::Listener::Headers")]),a._v(" "),s("p",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("LazyStringMultimap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" Headers\n")])])]),s("h3",{attrs:{id:"statefulparser-listener-listener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-listener-listener"}},[a._v("#")]),a._v(" StatefulParser::Listener::~Listener")]),a._v(" "),s("p",[a._v("Default virtual Destructor.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("Listener")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-listener-onpartheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-listener-onpartheaders"}},[a._v("#")]),a._v(" StatefulParser::Listener::onPartHeaders")]),a._v(" "),s("p",[a._v("Called on new part found in the stream. Always called before "),s("code",[a._v("onPartData")]),a._v(" events. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" partHeaders - complete set of part headers. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" partHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-listener-onpartdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-listener-onpartdata"}},[a._v("#")]),a._v(" StatefulParser::Listener::onPartData")]),a._v(" "),s("p",[a._v("Called on each new chunk of bytes parsed from the part body. When all data of message is read, readMessage is called again with size == 0 to indicate end of the part. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" data - pointer to data. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" size - size of the data in bytes. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("void")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),s("h2",{attrs:{id:"statefulparser-asynclistener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-asynclistener"}},[a._v("#")]),a._v(" StatefulParser::AsyncListener")]),a._v(" "),s("p",[a._v("Async Listener for parsed items.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mime "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" multipart "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("StatefulParser")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("AsyncListener")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"typedefs-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs-3"}},[a._v("#")]),a._v(" Typedefs")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("oatpp::data::share::LazyStringMultimap")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-asynclistener-headers"}},[a._v("Headers")])]),a._v(" "),s("td",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1)])])]),a._v(" "),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[a._v("#")]),a._v(" Methods")]),a._v(" "),s("table",[s("thead",[s("tr",[s("th",[a._v("Return Type")]),a._v(" "),s("th",[a._v("Name")]),a._v(" "),s("th",[a._v("Summary")])])]),a._v(" "),s("tbody",[s("tr",[s("td",[s("code",[a._v("[none]")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-asynclistener-~asynclistener"}},[a._v("~AsyncListener")])]),a._v(" "),s("td",[a._v("Default virtual Destructor.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("async::CoroutineStarter")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-asynclistener-onpartheadersasync"}},[a._v("onPartHeadersAsync")])]),a._v(" "),s("td",[a._v("Called on new part found in the stream.")])]),a._v(" "),s("tr",[s("td",[s("code",[a._v("async::CoroutineStarter")])]),a._v(" "),s("td",[s("a",{attrs:{href:"#statefulparser-asynclistener-onpartdataasync"}},[a._v("onPartDataAsync")])]),a._v(" "),s("td",[a._v("Called on each new chunk of bytes parsed from the part body.")])])])]),a._v(" "),s("h3",{attrs:{id:"statefulparser-asynclistener-headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-asynclistener-headers"}},[a._v("#")]),a._v(" StatefulParser::AsyncListener::Headers")]),a._v(" "),s("p",[a._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmap"}},[a._v("oatpp::data::share::LazyStringMap")]),a._v(".")],1),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("LazyStringMultimap"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" Headers\n")])])]),s("h3",{attrs:{id:"statefulparser-asynclistener-asynclistener"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-asynclistener-asynclistener"}},[a._v("#")]),a._v(" StatefulParser::AsyncListener::~AsyncListener")]),a._v(" "),s("p",[a._v("Default virtual Destructor.")]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("AsyncListener")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("default")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-asynclistener-onpartheadersasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-asynclistener-onpartheadersasync"}},[a._v("#")]),a._v(" StatefulParser::AsyncListener::onPartHeadersAsync")]),a._v(" "),s("p",[a._v("Called on new part found in the stream. Always called before "),s("code",[a._v("onPartData")]),a._v(" events. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" partHeaders - complete set of part headers. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartHeadersAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&")]),a._v(" partHeaders"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])]),s("h3",{attrs:{id:"statefulparser-asynclistener-onpartdataasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#statefulparser-asynclistener-onpartdataasync"}},[a._v("#")]),a._v(" StatefulParser::AsyncListener::onPartDataAsync")]),a._v(" "),s("p",[a._v("Called on each new chunk of bytes parsed from the part body. When all data of message is read, readMessage is called again with size == 0 to indicate end of the part. "),s("ul",[s("li",[s("strong",[a._v("@param")]),a._v(" data - pointer to data. ")]),s("li",[s("strong",[a._v("@param")]),a._v(" size - size of the data in bytes. ")])])]),a._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("virtual")]),a._v(" async"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[a._v("onPartDataAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("const")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" v_buff_size size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/243.a3eb8daa.js b/docs/.vuepress/dist/assets/js/243.a3eb8daa.js deleted file mode 100644 index 97d5fe2c6..000000000 --- a/docs/.vuepress/dist/assets/js/243.a3eb8daa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[243],{615:function(t,r,e){"use strict";e.r(r);var a=e(42),s=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"temporaryfileprovider-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#temporaryfileprovider-hpp"}},[t._v("#")]),t._v(" TemporaryFileProvider.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/mime/multipart/TemporaryFileProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/mime/multipart/TemporaryFileProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/mime/multipart/TemporaryFileProvider.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"createtemporaryfilepartreader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#createtemporaryfilepartreader"}},[t._v("#")]),t._v(" createTemporaryFilePartReader")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" "),e("code",[t._v("oatpp::web::mime::multipart")])]),t._v(" "),e("p",[t._v("Create part reader to a temporary file. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tmpDirectory - directory for temporary files. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" randomWordSizeBytes - number of random bytes to generate file name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" maxDataSize - max size of the received data. put "),e("code",[t._v("-1")]),t._v(" for no-limit. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartReader/#partreader"}},[t._v("oatpp::web::mime::multipart::PartReader")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PartReader"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createTemporaryFilePartReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tmpDirectory"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 randomWordSizeBytes "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_io_size maxDataSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"createasynctemporaryfilepartreader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#createasynctemporaryfilepartreader"}},[t._v("#")]),t._v(" createAsyncTemporaryFilePartReader")]),t._v(" "),e("p",[e("strong",[t._v("Namespace:")]),t._v(" "),e("code",[t._v("oatpp::web::mime::multipart")])]),t._v(" "),e("p",[t._v("Create async part reader to a temporary file. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tmpDirectory - directory for temporary files. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" randomWordSizeBytes - number of random bytes to generate file name. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" maxDataSize - max size of the received data. put "),e("code",[t._v("-1")]),t._v(" for no-limit. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/mime/multipart/PartReader/#asyncpartreader"}},[t._v("oatpp::web::mime::multipart::AsyncPartReader")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncPartReader"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncTemporaryFilePartReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tmpDirectory"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 randomWordSizeBytes "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_io_size maxDataSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/244.b0e077b9.js b/docs/.vuepress/dist/assets/js/244.b0e077b9.js deleted file mode 100644 index 6e89412e5..000000000 --- a/docs/.vuepress/dist/assets/js/244.b0e077b9.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[244],{616:function(t,r,a){"use strict";a.r(r);var s=a(42),o=Object(s.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"communicationerror-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationerror-hpp"}},[t._v("#")]),t._v(" CommunicationError.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/CommunicationError.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/CommunicationError.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/protocol/CommunicationError.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"communicationerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationerror"}},[t._v("#")]),t._v(" CommunicationError")]),t._v(" "),a("p",[t._v("Communication Error")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CommunicationError")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("runtime_error "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#communicationerror-communicationerror"}},[t._v("CommunicationError")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#communicationerror-getiostatus"}},[t._v("getIOStatus")])]),t._v(" "),a("td",[t._v("Get I/O error. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#communicationerror-getmessage"}},[t._v("getMessage")])]),t._v(" "),a("td",[t._v("Get error message.")])])])]),t._v(" "),a("h3",{attrs:{id:"communicationerror-communicationerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationerror-communicationerror"}},[t._v("#")]),t._v(" CommunicationError::CommunicationError")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" ioStatus - I/O error. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - error message. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CommunicationError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size ioStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"communicationerror-getiostatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationerror-getiostatus"}},[t._v("#")]),t._v(" CommunicationError::getIOStatus")]),t._v(" "),a("p",[t._v("Get I/O error. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIOStatus")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"communicationerror-getmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationerror-getmessage"}},[t._v("#")]),t._v(" CommunicationError::getMessage")]),t._v(" "),a("p",[t._v("Get error message. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - error message. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"protocolerrorinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerrorinfo"}},[t._v("#")]),t._v(" ProtocolErrorInfo")]),t._v(" "),a("p",[t._v("Protocol Error Info.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Status")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProtocolErrorInfo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerrorinfo-iostatus"}},[t._v("ioStatus")])]),t._v(" "),a("td",[t._v("Get I/O level error.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Status")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerrorinfo-status"}},[t._v("status")])]),t._v(" "),a("td",[t._v("Configurable arbitrary data type.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerrorinfo-protocolerrorinfo"}},[t._v("ProtocolErrorInfo")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Default Constructor. ")]),a("li",[t._v("Constructor. ")])])])])])]),t._v(" "),a("h3",{attrs:{id:"protocolerrorinfo-iostatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerrorinfo-iostatus"}},[t._v("#")]),t._v(" ProtocolErrorInfo::ioStatus")]),t._v(" "),a("p",[t._v("Get I/O level error.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size ioStatus\n")])])]),a("h3",{attrs:{id:"protocolerrorinfo-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerrorinfo-status"}},[t._v("#")]),t._v(" ProtocolErrorInfo::status")]),t._v(" "),a("p",[t._v("Configurable arbitrary data type.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Status status\n")])])]),a("h3",{attrs:{id:"protocolerrorinfo-protocolerrorinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerrorinfo-protocolerrorinfo"}},[t._v("#")]),t._v(" ProtocolErrorInfo::ProtocolErrorInfo")]),t._v(" "),a("ol",[a("li",[t._v("Default Constructor."),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ProtocolErrorInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ioStatus")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" pIOStatus - I/O level error. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" pStatus - configurable arbitrary data type. ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ProtocolErrorInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size pIOStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ioStatus")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pIOStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("status")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"protocolerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerror"}},[t._v("#")]),t._v(" ProtocolError")]),t._v(" "),a("p",[t._v("Protocol Error template. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" Status - arbitrary data type. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Status")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProtocolError")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" CommunicationError "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("ProtocolErrorInfo")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerror-info"}},[t._v("Info")])]),t._v(" "),a("td",[t._v("Cenvenience typedef for ProtocolErrorInfo")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerror-protocolerror"}},[t._v("ProtocolError")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Info")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#protocolerror-getinfo"}},[t._v("getInfo")])]),t._v(" "),a("td",[t._v("Get error info.")])])])]),t._v(" "),a("h3",{attrs:{id:"protocolerror-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerror-info"}},[t._v("#")]),t._v(" ProtocolError::Info")]),t._v(" "),a("p",[t._v("Cenvenience typedef for ProtocolErrorInfo")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" ProtocolErrorInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Info\n")])])]),a("h3",{attrs:{id:"protocolerror-protocolerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerror-protocolerror"}},[t._v("#")]),t._v(" ProtocolError::ProtocolError")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" info - "),a("a",{attrs:{href:"#protocolerror-info"}},[t._v("ProtocolError::Info")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" message - error message. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ProtocolError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CommunicationError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ioStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_info")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"protocolerror-getinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#protocolerror-getinfo"}},[t._v("#")]),t._v(" ProtocolError::getInfo")]),t._v(" "),a("p",[t._v("Get error info. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - error info. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Info "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"asyncprotocolerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncprotocolerror"}},[t._v("#")]),t._v(" AsyncProtocolError")]),t._v(" "),a("p",[t._v("Protocol Error template. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" Status - arbitrary data type. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Status")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncProtocolError")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncIOError "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs-2"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("ProtocolErrorInfo")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncprotocolerror-info"}},[t._v("Info")])]),t._v(" "),a("td",[t._v("Cenvenience typedef for ProtocolErrorInfo")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncprotocolerror-asyncprotocolerror"}},[t._v("AsyncProtocolError")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncprotocolerror-getmessage"}},[t._v("getMessage")])]),t._v(" "),a("td",[t._v("Error message.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Info")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#asyncprotocolerror-getinfo"}},[t._v("getInfo")])]),t._v(" "),a("td",[t._v("Get error info.")])])])]),t._v(" "),a("h3",{attrs:{id:"asyncprotocolerror-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncprotocolerror-info"}},[t._v("#")]),t._v(" AsyncProtocolError::Info")]),t._v(" "),a("p",[t._v("Cenvenience typedef for ProtocolErrorInfo")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" ProtocolErrorInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Info\n")])])]),a("h3",{attrs:{id:"asyncprotocolerror-asyncprotocolerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncprotocolerror-asyncprotocolerror"}},[t._v("#")]),t._v(" AsyncProtocolError::AsyncProtocolError")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" info - "),a("a",{attrs:{href:"#protocolerror-info"}},[t._v("ProtocolError::Info")]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" message - error message. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncProtocolError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncIOError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AsyncProtocolError"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ioStatus"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_info")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("info"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_message")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncprotocolerror-getmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncprotocolerror-getmessage"}},[t._v("#")]),t._v(" AsyncProtocolError::getMessage")]),t._v(" "),a("p",[t._v("Error message. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - error message. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"asyncprotocolerror-getinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncprotocolerror-getinfo"}},[t._v("#")]),t._v(" AsyncProtocolError::getInfo")]),t._v(" "),a("p",[t._v("Get error info. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - error info. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Info "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/245.da01df92.js b/docs/.vuepress/dist/assets/js/245.da01df92.js deleted file mode 100644 index 7a50a0cf4..000000000 --- a/docs/.vuepress/dist/assets/js/245.da01df92.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[245],{617:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"http-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-hpp"}},[t._v("#")]),t._v(" Http.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/Http.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/Http.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/protocol/http/Http.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headers"}},[t._v("#")]),t._v(" Headers")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::web::protocol::http")])]),t._v(" "),s("p",[t._v("Typedef for headers map. Headers map key is case-insensitive. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[t._v("oatpp::data::share::LazyStringMultimap")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMultimap"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Headers\n")])])]),s("h2",{attrs:{id:"queryparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queryparams"}},[t._v("#")]),t._v(" QueryParams")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::web::protocol::http")])]),t._v(" "),s("p",[t._v("Typedef for query parameters map. For more info see "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/LazyStringMap/#lazystringmultimap"}},[t._v("oatpp::data::share::LazyStringMultimap")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("LazyStringMultimap"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" QueryParams\n")])])]),s("h2",{attrs:{id:"status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[t._v("#")]),t._v(" Status")]),t._v(" "),s("p",[t._v("Http status.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Status")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-100"}},[t._v("CODE_100")])]),t._v(" "),s("td",[t._v("Continue.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-101"}},[t._v("CODE_101")])]),t._v(" "),s("td",[t._v("Switching Protocols.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-102"}},[t._v("CODE_102")])]),t._v(" "),s("td",[t._v("Processing.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-200"}},[t._v("CODE_200")])]),t._v(" "),s("td",[t._v("OK.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-201"}},[t._v("CODE_201")])]),t._v(" "),s("td",[t._v("Created.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-202"}},[t._v("CODE_202")])]),t._v(" "),s("td",[t._v("Accepted.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-203"}},[t._v("CODE_203")])]),t._v(" "),s("td",[t._v("Non-Authoritative Information.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-204"}},[t._v("CODE_204")])]),t._v(" "),s("td",[t._v("No Content.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-205"}},[t._v("CODE_205")])]),t._v(" "),s("td",[t._v("Reset Content.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-206"}},[t._v("CODE_206")])]),t._v(" "),s("td",[t._v("Partial Content.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-207"}},[t._v("CODE_207")])]),t._v(" "),s("td",[t._v("Multi-Status.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-226"}},[t._v("CODE_226")])]),t._v(" "),s("td",[t._v("IM Used.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-300"}},[t._v("CODE_300")])]),t._v(" "),s("td",[t._v("Multiple Choices.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-301"}},[t._v("CODE_301")])]),t._v(" "),s("td",[t._v("Moved Permanently.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-302"}},[t._v("CODE_302")])]),t._v(" "),s("td",[t._v("Moved Temporarily.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-303"}},[t._v("CODE_303")])]),t._v(" "),s("td",[t._v("See Other.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-304"}},[t._v("CODE_304")])]),t._v(" "),s("td",[t._v("Not Modified.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-305"}},[t._v("CODE_305")])]),t._v(" "),s("td",[t._v("Use Proxy.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-306"}},[t._v("CODE_306")])]),t._v(" "),s("td",[t._v("Reserved.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-307"}},[t._v("CODE_307")])]),t._v(" "),s("td",[t._v("Temporary Redirect.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-400"}},[t._v("CODE_400")])]),t._v(" "),s("td",[t._v("Bad Request.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-401"}},[t._v("CODE_401")])]),t._v(" "),s("td",[t._v("Unauthorized.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-402"}},[t._v("CODE_402")])]),t._v(" "),s("td",[t._v("Payment Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-403"}},[t._v("CODE_403")])]),t._v(" "),s("td",[t._v("Forbidden.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-404"}},[t._v("CODE_404")])]),t._v(" "),s("td",[t._v("Not Found.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-405"}},[t._v("CODE_405")])]),t._v(" "),s("td",[t._v("Method Not Allowed.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-406"}},[t._v("CODE_406")])]),t._v(" "),s("td",[t._v("Not Acceptable.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-407"}},[t._v("CODE_407")])]),t._v(" "),s("td",[t._v("Proxy Authentication Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-408"}},[t._v("CODE_408")])]),t._v(" "),s("td",[t._v("Request Timeout.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-409"}},[t._v("CODE_409")])]),t._v(" "),s("td",[t._v("Conflict.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-410"}},[t._v("CODE_410")])]),t._v(" "),s("td",[t._v("Gone")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-411"}},[t._v("CODE_411")])]),t._v(" "),s("td",[t._v("Length Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-412"}},[t._v("CODE_412")])]),t._v(" "),s("td",[t._v("Precondition Failed.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-413"}},[t._v("CODE_413")])]),t._v(" "),s("td",[t._v("Request Entity Too Large.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-414"}},[t._v("CODE_414")])]),t._v(" "),s("td",[t._v("Request-URI Too Large.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-415"}},[t._v("CODE_415")])]),t._v(" "),s("td",[t._v("Unsupported Media Type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-416"}},[t._v("CODE_416")])]),t._v(" "),s("td",[t._v("Requested Range Not Satisfiable.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-417"}},[t._v("CODE_417")])]),t._v(" "),s("td",[t._v("Expectation Failed.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-422"}},[t._v("CODE_422")])]),t._v(" "),s("td",[t._v("Unprocessable Entity.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-423"}},[t._v("CODE_423")])]),t._v(" "),s("td",[t._v("Locked.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-424"}},[t._v("CODE_424")])]),t._v(" "),s("td",[t._v("Failed Dependency.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-425"}},[t._v("CODE_425")])]),t._v(" "),s("td",[t._v("Unordered Collection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-426"}},[t._v("CODE_426")])]),t._v(" "),s("td",[t._v("Upgrade Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-428"}},[t._v("CODE_428")])]),t._v(" "),s("td",[t._v("Precondition Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-429"}},[t._v("CODE_429")])]),t._v(" "),s("td",[t._v("Too Many Requests.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-431"}},[t._v("CODE_431")])]),t._v(" "),s("td",[t._v("Request Header Fields Too Large.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-434"}},[t._v("CODE_434")])]),t._v(" "),s("td",[t._v("Requested host unavailable.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-444"}},[t._v("CODE_444")])]),t._v(" "),s("td",[t._v("Close connection withot sending headers.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-449"}},[t._v("CODE_449")])]),t._v(" "),s("td",[t._v("Retry With.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-451"}},[t._v("CODE_451")])]),t._v(" "),s("td",[t._v("Unavailable For Legal Reasons.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-500"}},[t._v("CODE_500")])]),t._v(" "),s("td",[t._v("Internal Server Error.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-501"}},[t._v("CODE_501")])]),t._v(" "),s("td",[t._v("Not Implemented.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-502"}},[t._v("CODE_502")])]),t._v(" "),s("td",[t._v("Bad Gateway.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-503"}},[t._v("CODE_503")])]),t._v(" "),s("td",[t._v("Service Unavailable.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-504"}},[t._v("CODE_504")])]),t._v(" "),s("td",[t._v("Gateway Timeout.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-505"}},[t._v("CODE_505")])]),t._v(" "),s("td",[t._v("HTTP Version Not Supported.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-506"}},[t._v("CODE_506")])]),t._v(" "),s("td",[t._v("Variant Also Negotiates.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-507"}},[t._v("CODE_507")])]),t._v(" "),s("td",[t._v("Insufficient Storage.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-508"}},[t._v("CODE_508")])]),t._v(" "),s("td",[t._v("Loop Detected.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-509"}},[t._v("CODE_509")])]),t._v(" "),s("td",[t._v("Bandwidth Limit Exceeded.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-510"}},[t._v("CODE_510")])]),t._v(" "),s("td",[t._v("Not Extended.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Status")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code-511"}},[t._v("CODE_511")])]),t._v(" "),s("td",[t._v("Network Authentication Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-code"}},[t._v("code")])]),t._v(" "),s("td",[t._v("Status code.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const char*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#status-status"}},[t._v("Status")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"status-code-100"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-100"}},[t._v("#")]),t._v(" Status::CODE_100")]),t._v(" "),s("p",[t._v("Continue.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_100\n")])])]),s("h3",{attrs:{id:"status-code-101"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-101"}},[t._v("#")]),t._v(" Status::CODE_101")]),t._v(" "),s("p",[t._v("Switching Protocols.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_101\n")])])]),s("h3",{attrs:{id:"status-code-102"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-102"}},[t._v("#")]),t._v(" Status::CODE_102")]),t._v(" "),s("p",[t._v("Processing.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_102\n")])])]),s("h3",{attrs:{id:"status-code-200"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-200"}},[t._v("#")]),t._v(" Status::CODE_200")]),t._v(" "),s("p",[t._v("OK.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_200\n")])])]),s("h3",{attrs:{id:"status-code-201"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-201"}},[t._v("#")]),t._v(" Status::CODE_201")]),t._v(" "),s("p",[t._v("Created.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_201\n")])])]),s("h3",{attrs:{id:"status-code-202"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-202"}},[t._v("#")]),t._v(" Status::CODE_202")]),t._v(" "),s("p",[t._v("Accepted.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_202\n")])])]),s("h3",{attrs:{id:"status-code-203"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-203"}},[t._v("#")]),t._v(" Status::CODE_203")]),t._v(" "),s("p",[t._v("Non-Authoritative Information.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_203\n")])])]),s("h3",{attrs:{id:"status-code-204"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-204"}},[t._v("#")]),t._v(" Status::CODE_204")]),t._v(" "),s("p",[t._v("No Content.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_204\n")])])]),s("h3",{attrs:{id:"status-code-205"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-205"}},[t._v("#")]),t._v(" Status::CODE_205")]),t._v(" "),s("p",[t._v("Reset Content.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_205\n")])])]),s("h3",{attrs:{id:"status-code-206"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-206"}},[t._v("#")]),t._v(" Status::CODE_206")]),t._v(" "),s("p",[t._v("Partial Content.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_206\n")])])]),s("h3",{attrs:{id:"status-code-207"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-207"}},[t._v("#")]),t._v(" Status::CODE_207")]),t._v(" "),s("p",[t._v("Multi-Status.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_207\n")])])]),s("h3",{attrs:{id:"status-code-226"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-226"}},[t._v("#")]),t._v(" Status::CODE_226")]),t._v(" "),s("p",[t._v("IM Used.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_226\n")])])]),s("h3",{attrs:{id:"status-code-300"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-300"}},[t._v("#")]),t._v(" Status::CODE_300")]),t._v(" "),s("p",[t._v("Multiple Choices.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_300\n")])])]),s("h3",{attrs:{id:"status-code-301"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-301"}},[t._v("#")]),t._v(" Status::CODE_301")]),t._v(" "),s("p",[t._v("Moved Permanently.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_301\n")])])]),s("h3",{attrs:{id:"status-code-302"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-302"}},[t._v("#")]),t._v(" Status::CODE_302")]),t._v(" "),s("p",[t._v("Moved Temporarily.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_302\n")])])]),s("h3",{attrs:{id:"status-code-303"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-303"}},[t._v("#")]),t._v(" Status::CODE_303")]),t._v(" "),s("p",[t._v("See Other.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_303\n")])])]),s("h3",{attrs:{id:"status-code-304"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-304"}},[t._v("#")]),t._v(" Status::CODE_304")]),t._v(" "),s("p",[t._v("Not Modified.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_304\n")])])]),s("h3",{attrs:{id:"status-code-305"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-305"}},[t._v("#")]),t._v(" Status::CODE_305")]),t._v(" "),s("p",[t._v("Use Proxy.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_305\n")])])]),s("h3",{attrs:{id:"status-code-306"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-306"}},[t._v("#")]),t._v(" Status::CODE_306")]),t._v(" "),s("p",[t._v("Reserved.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_306\n")])])]),s("h3",{attrs:{id:"status-code-307"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-307"}},[t._v("#")]),t._v(" Status::CODE_307")]),t._v(" "),s("p",[t._v("Temporary Redirect.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_307\n")])])]),s("h3",{attrs:{id:"status-code-400"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-400"}},[t._v("#")]),t._v(" Status::CODE_400")]),t._v(" "),s("p",[t._v("Bad Request.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_400\n")])])]),s("h3",{attrs:{id:"status-code-401"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-401"}},[t._v("#")]),t._v(" Status::CODE_401")]),t._v(" "),s("p",[t._v("Unauthorized.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_401\n")])])]),s("h3",{attrs:{id:"status-code-402"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-402"}},[t._v("#")]),t._v(" Status::CODE_402")]),t._v(" "),s("p",[t._v("Payment Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_402\n")])])]),s("h3",{attrs:{id:"status-code-403"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-403"}},[t._v("#")]),t._v(" Status::CODE_403")]),t._v(" "),s("p",[t._v("Forbidden.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_403\n")])])]),s("h3",{attrs:{id:"status-code-404"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-404"}},[t._v("#")]),t._v(" Status::CODE_404")]),t._v(" "),s("p",[t._v("Not Found.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_404\n")])])]),s("h3",{attrs:{id:"status-code-405"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-405"}},[t._v("#")]),t._v(" Status::CODE_405")]),t._v(" "),s("p",[t._v("Method Not Allowed.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_405\n")])])]),s("h3",{attrs:{id:"status-code-406"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-406"}},[t._v("#")]),t._v(" Status::CODE_406")]),t._v(" "),s("p",[t._v("Not Acceptable.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_406\n")])])]),s("h3",{attrs:{id:"status-code-407"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-407"}},[t._v("#")]),t._v(" Status::CODE_407")]),t._v(" "),s("p",[t._v("Proxy Authentication Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_407\n")])])]),s("h3",{attrs:{id:"status-code-408"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-408"}},[t._v("#")]),t._v(" Status::CODE_408")]),t._v(" "),s("p",[t._v("Request Timeout.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_408\n")])])]),s("h3",{attrs:{id:"status-code-409"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-409"}},[t._v("#")]),t._v(" Status::CODE_409")]),t._v(" "),s("p",[t._v("Conflict.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_409\n")])])]),s("h3",{attrs:{id:"status-code-410"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-410"}},[t._v("#")]),t._v(" Status::CODE_410")]),t._v(" "),s("p",[t._v("Gone")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_410\n")])])]),s("h3",{attrs:{id:"status-code-411"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-411"}},[t._v("#")]),t._v(" Status::CODE_411")]),t._v(" "),s("p",[t._v("Length Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_411\n")])])]),s("h3",{attrs:{id:"status-code-412"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-412"}},[t._v("#")]),t._v(" Status::CODE_412")]),t._v(" "),s("p",[t._v("Precondition Failed.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_412\n")])])]),s("h3",{attrs:{id:"status-code-413"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-413"}},[t._v("#")]),t._v(" Status::CODE_413")]),t._v(" "),s("p",[t._v("Request Entity Too Large.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_413\n")])])]),s("h3",{attrs:{id:"status-code-414"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-414"}},[t._v("#")]),t._v(" Status::CODE_414")]),t._v(" "),s("p",[t._v("Request-URI Too Large.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_414\n")])])]),s("h3",{attrs:{id:"status-code-415"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-415"}},[t._v("#")]),t._v(" Status::CODE_415")]),t._v(" "),s("p",[t._v("Unsupported Media Type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_415\n")])])]),s("h3",{attrs:{id:"status-code-416"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-416"}},[t._v("#")]),t._v(" Status::CODE_416")]),t._v(" "),s("p",[t._v("Requested Range Not Satisfiable.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_416\n")])])]),s("h3",{attrs:{id:"status-code-417"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-417"}},[t._v("#")]),t._v(" Status::CODE_417")]),t._v(" "),s("p",[t._v("Expectation Failed.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_417\n")])])]),s("h3",{attrs:{id:"status-code-422"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-422"}},[t._v("#")]),t._v(" Status::CODE_422")]),t._v(" "),s("p",[t._v("Unprocessable Entity.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_422\n")])])]),s("h3",{attrs:{id:"status-code-423"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-423"}},[t._v("#")]),t._v(" Status::CODE_423")]),t._v(" "),s("p",[t._v("Locked.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_423\n")])])]),s("h3",{attrs:{id:"status-code-424"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-424"}},[t._v("#")]),t._v(" Status::CODE_424")]),t._v(" "),s("p",[t._v("Failed Dependency.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_424\n")])])]),s("h3",{attrs:{id:"status-code-425"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-425"}},[t._v("#")]),t._v(" Status::CODE_425")]),t._v(" "),s("p",[t._v("Unordered Collection.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_425\n")])])]),s("h3",{attrs:{id:"status-code-426"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-426"}},[t._v("#")]),t._v(" Status::CODE_426")]),t._v(" "),s("p",[t._v("Upgrade Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_426\n")])])]),s("h3",{attrs:{id:"status-code-428"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-428"}},[t._v("#")]),t._v(" Status::CODE_428")]),t._v(" "),s("p",[t._v("Precondition Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_428\n")])])]),s("h3",{attrs:{id:"status-code-429"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-429"}},[t._v("#")]),t._v(" Status::CODE_429")]),t._v(" "),s("p",[t._v("Too Many Requests.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_429\n")])])]),s("h3",{attrs:{id:"status-code-431"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-431"}},[t._v("#")]),t._v(" Status::CODE_431")]),t._v(" "),s("p",[t._v("Request Header Fields Too Large.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_431\n")])])]),s("h3",{attrs:{id:"status-code-434"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-434"}},[t._v("#")]),t._v(" Status::CODE_434")]),t._v(" "),s("p",[t._v("Requested host unavailable.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_434\n")])])]),s("h3",{attrs:{id:"status-code-444"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-444"}},[t._v("#")]),t._v(" Status::CODE_444")]),t._v(" "),s("p",[t._v("Close connection withot sending headers.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_444\n")])])]),s("h3",{attrs:{id:"status-code-449"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-449"}},[t._v("#")]),t._v(" Status::CODE_449")]),t._v(" "),s("p",[t._v("Retry With.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_449\n")])])]),s("h3",{attrs:{id:"status-code-451"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-451"}},[t._v("#")]),t._v(" Status::CODE_451")]),t._v(" "),s("p",[t._v("Unavailable For Legal Reasons.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_451\n")])])]),s("h3",{attrs:{id:"status-code-500"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-500"}},[t._v("#")]),t._v(" Status::CODE_500")]),t._v(" "),s("p",[t._v("Internal Server Error.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_500\n")])])]),s("h3",{attrs:{id:"status-code-501"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-501"}},[t._v("#")]),t._v(" Status::CODE_501")]),t._v(" "),s("p",[t._v("Not Implemented.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_501\n")])])]),s("h3",{attrs:{id:"status-code-502"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-502"}},[t._v("#")]),t._v(" Status::CODE_502")]),t._v(" "),s("p",[t._v("Bad Gateway.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_502\n")])])]),s("h3",{attrs:{id:"status-code-503"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-503"}},[t._v("#")]),t._v(" Status::CODE_503")]),t._v(" "),s("p",[t._v("Service Unavailable.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_503\n")])])]),s("h3",{attrs:{id:"status-code-504"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-504"}},[t._v("#")]),t._v(" Status::CODE_504")]),t._v(" "),s("p",[t._v("Gateway Timeout.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_504\n")])])]),s("h3",{attrs:{id:"status-code-505"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-505"}},[t._v("#")]),t._v(" Status::CODE_505")]),t._v(" "),s("p",[t._v("HTTP Version Not Supported.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_505\n")])])]),s("h3",{attrs:{id:"status-code-506"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-506"}},[t._v("#")]),t._v(" Status::CODE_506")]),t._v(" "),s("p",[t._v("Variant Also Negotiates.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_506\n")])])]),s("h3",{attrs:{id:"status-code-507"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-507"}},[t._v("#")]),t._v(" Status::CODE_507")]),t._v(" "),s("p",[t._v("Insufficient Storage.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_507\n")])])]),s("h3",{attrs:{id:"status-code-508"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-508"}},[t._v("#")]),t._v(" Status::CODE_508")]),t._v(" "),s("p",[t._v("Loop Detected.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_508\n")])])]),s("h3",{attrs:{id:"status-code-509"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-509"}},[t._v("#")]),t._v(" Status::CODE_509")]),t._v(" "),s("p",[t._v("Bandwidth Limit Exceeded.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_509\n")])])]),s("h3",{attrs:{id:"status-code-510"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-510"}},[t._v("#")]),t._v(" Status::CODE_510")]),t._v(" "),s("p",[t._v("Not Extended.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_510\n")])])]),s("h3",{attrs:{id:"status-code-511"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code-511"}},[t._v("#")]),t._v(" Status::CODE_511")]),t._v(" "),s("p",[t._v("Network Authentication Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status CODE_511\n")])])]),s("h3",{attrs:{id:"status-code"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-code"}},[t._v("#")]),t._v(" Status::code")]),t._v(" "),s("p",[t._v("Status code.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int32 code\n")])])]),s("h3",{attrs:{id:"status-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-description"}},[t._v("#")]),t._v(" Status::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" description\n")])])]),s("h3",{attrs:{id:"status-status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status-status"}},[t._v("#")]),t._v(" Status::Status")]),t._v(" "),s("ol",[s("li",[t._v("Constructor."),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("code")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("description")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" pCode - status code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" pDesc - description. ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 pCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pDesc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("code")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("description")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pDesc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"httperror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httperror"}},[t._v("#")]),t._v(" HttpError")]),t._v(" "),s("p",[t._v("HttpError extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/CommunicationError/#protocolerror"}},[t._v("oatpp::web::protocol::ProtocolError")]),t._v("<"),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(">.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpError")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProtocolError"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httperror-httperror"}},[t._v("HttpError")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const Headers&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#httperror-getheaders"}},[t._v("getHeaders")])]),t._v(" "),s("td",[t._v("Get headers")])])])]),t._v(" "),s("h3",{attrs:{id:"httperror-httperror"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httperror-httperror"}},[t._v("#")]),t._v(" HttpError::HttpError")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" info ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Info"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" info"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProtocolError"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("info"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" status ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProtocolError"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" status ")]),s("li",[s("strong",[t._v("@param")]),t._v(" message ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProtocolError"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_headers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"httperror-getheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#httperror-getheaders"}},[t._v("#")]),t._v(" HttpError::getHeaders")]),t._v(" "),s("p",[t._v("Get headers "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"oatpp-assert-http"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-assert-http"}},[t._v("#")]),t._v(" OATPP_ASSERT_HTTP")]),t._v(" "),s("p",[t._v("Throw "),s("a",{attrs:{href:"#httperror"}},[t._v("HttpError")]),t._v(" if assertion failed. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" COND - boolean statement. If evaluates to false - throw error. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" STATUS - "),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" MESSAGE - String message. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" OATPP_ASSERT_HTTP(COND, STATUS, MESSAGE)")]),t._v("\n")])])]),s("h2",{attrs:{id:"header"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#header"}},[t._v("#")]),t._v(" Header")]),t._v(" "),s("p",[t._v("Collection of HTTP Header constants.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Header")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"header-value"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#header-value"}},[t._v("#")]),t._v(" Header::Value")]),t._v(" "),s("p",[t._v("Possible values for headers.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Header")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Value")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"requeststartingline"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requeststartingline"}},[t._v("#")]),t._v(" RequestStartingLine")]),t._v(" "),s("p",[t._v("Struct representing HTTP request starting line. Example request starting line: "),s("code",[t._v("GET /path/to/resource/ HTTP/1.1")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestStartingLine")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requeststartingline-method"}},[t._v("method")])]),t._v(" "),s("td",[t._v("Method as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requeststartingline-path"}},[t._v("path")])]),t._v(" "),s("td",[t._v("Path as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requeststartingline-protocol"}},[t._v("protocol")])]),t._v(" "),s("td",[t._v("Protocol as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"requeststartingline-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requeststartingline-method"}},[t._v("#")]),t._v(" RequestStartingLine::method")]),t._v(" "),s("p",[t._v("Method as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel method\n")])])]),s("h3",{attrs:{id:"requeststartingline-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requeststartingline-path"}},[t._v("#")]),t._v(" RequestStartingLine::path")]),t._v(" "),s("p",[t._v("Path as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel path\n")])])]),s("h3",{attrs:{id:"requeststartingline-protocol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requeststartingline-protocol"}},[t._v("#")]),t._v(" RequestStartingLine::protocol")]),t._v(" "),s("p",[t._v("Protocol as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel protocol\n")])])]),s("h2",{attrs:{id:"responsestartingline"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsestartingline"}},[t._v("#")]),t._v(" ResponseStartingLine")]),t._v(" "),s("p",[t._v("Struct representing HTTP response starting line. Example response starting line: "),s("code",[t._v("HTTP/1.1 200 OK")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResponseStartingLine")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responsestartingline-protocol"}},[t._v("protocol")])]),t._v(" "),s("td",[t._v("Protocol as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responsestartingline-statuscode"}},[t._v("statusCode")])]),t._v(" "),s("td",[t._v("Status code as v_int32.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responsestartingline-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"responsestartingline-protocol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsestartingline-protocol"}},[t._v("#")]),t._v(" ResponseStartingLine::protocol")]),t._v(" "),s("p",[t._v("Protocol as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel protocol\n")])])]),s("h3",{attrs:{id:"responsestartingline-statuscode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsestartingline-statuscode"}},[t._v("#")]),t._v(" ResponseStartingLine::statusCode")]),t._v(" "),s("p",[t._v("Status code as v_int32.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int32 statusCode\n")])])]),s("h3",{attrs:{id:"responsestartingline-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsestartingline-description"}},[t._v("#")]),t._v(" ResponseStartingLine::description")]),t._v(" "),s("p",[t._v("Description as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel description\n")])])]),s("h2",{attrs:{id:"headervaluedata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headervaluedata"}},[t._v("#")]),t._v(" HeaderValueData")]),t._v(" "),s("p",[t._v("Data contained in the value of one header.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HeaderValueData")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-4"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("std::unordered_set")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#headervaluedata-tokens"}},[t._v("tokens")])]),t._v(" "),s("td",[t._v("value tokens.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unordered_map")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#headervaluedata-titleparams"}},[t._v("titleParams")])]),t._v(" "),s("td",[t._v("Title params.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#headervaluedata-gettitleparamvalue"}},[t._v("getTitleParamValue")])]),t._v(" "),s("td",[t._v("Get title parm value by key.")])])])]),t._v(" "),s("h3",{attrs:{id:"headervaluedata-tokens"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headervaluedata-tokens"}},[t._v("#")]),t._v(" HeaderValueData::tokens")]),t._v(" "),s("p",[t._v("value tokens.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_set"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" tokens\n")])])]),s("h3",{attrs:{id:"headervaluedata-titleparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headervaluedata-titleparams"}},[t._v("#")]),t._v(" HeaderValueData::titleParams")]),t._v(" "),s("p",[t._v("Title params.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" titleParams\n")])])]),s("h3",{attrs:{id:"headervaluedata-gettitleparamvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headervaluedata-gettitleparamvalue"}},[t._v("#")]),t._v(" HeaderValueData::getTitleParamValue")]),t._v(" "),s("p",[t._v("Get title parm value by key. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTitleParamValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h2",{attrs:{id:"parser"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser"}},[t._v("#")]),t._v(" Parser")]),t._v(" "),s("p",[t._v("Oatpp Http parser.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#parser-parserequeststartingline"}},[t._v("parseRequestStartingLine")])]),t._v(" "),s("td",[t._v("Parse "),s("a",{attrs:{href:"#requeststartingline"}},[t._v("RequestStartingLine")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#parser-parseresponsestartingline"}},[t._v("parseResponseStartingLine")])]),t._v(" "),s("td",[t._v("Parse "),s("a",{attrs:{href:"#responsestartingline"}},[t._v("ResponseStartingLine")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#parser-parseoneheader"}},[t._v("parseOneHeader")])]),t._v(" "),s("td",[t._v("Parse one header line. Example of the header line:")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#parser-parseheaders"}},[t._v("parseHeaders")])]),t._v(" "),s("td",[t._v("Parse HTTP headers to "),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" map.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#parser-parseheadervaluedata"}},[t._v("parseHeaderValueData")])]),t._v(" "),s("td",[t._v("Parse data that is contained in a one header.")])])])]),t._v(" "),s("h3",{attrs:{id:"parser-parserequeststartingline"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser-parserequeststartingline"}},[t._v("#")]),t._v(" Parser::parseRequestStartingLine")]),t._v(" "),s("p",[t._v("Parse "),s("a",{attrs:{href:"#requeststartingline"}},[t._v("RequestStartingLine")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" line - "),s("a",{attrs:{href:"#requeststartingline"}},[t._v("RequestStartingLine")]),t._v(". Values will be set to line's fields. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headersText - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("std::string")]),t._v(' needed as a "memory handle" for '),s("a",{attrs:{href:"#requeststartingline"}},[t._v("RequestStartingLine")]),t._v(" fields. See "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" caret - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" error - out parameter "),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseRequestStartingLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RequestStartingLine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" line"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headersText"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"parser-parseresponsestartingline"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser-parseresponsestartingline"}},[t._v("#")]),t._v(" Parser::parseResponseStartingLine")]),t._v(" "),s("p",[t._v("Parse "),s("a",{attrs:{href:"#responsestartingline"}},[t._v("ResponseStartingLine")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" line - "),s("a",{attrs:{href:"#responsestartingline"}},[t._v("ResponseStartingLine")]),t._v(". Values will be set to line's fields. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headersText - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("std::string")]),t._v(' needed as a "memory handle" for '),s("a",{attrs:{href:"#responsestartingline"}},[t._v("ResponseStartingLine")]),t._v(" fields. See "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" caret - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" error - out parameter "),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseResponseStartingLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ResponseStartingLine"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" line"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headersText"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"parser-parseoneheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser-parseoneheader"}},[t._v("#")]),t._v(" Parser::parseOneHeader")]),t._v(" "),s("p",[t._v("Parse one header line. Example of the header line: "),s("code",[t._v('"Content-Type: application/json\\r\\n"')]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" headers - "),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" map to put parsed header to. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headersText - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("std::string")]),t._v(' needed as a "memory handle" for '),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" values. See "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" caret - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" error - out parameter "),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseOneHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headersText"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"parser-parseheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser-parseheaders"}},[t._v("#")]),t._v(" Parser::parseHeaders")]),t._v(" "),s("p",[t._v("Parse HTTP headers to "),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" map. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" headers - "),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" map to put parsed headers to. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headersText - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("code",[t._v("std::string")]),t._v(' needed as a "memory handle" for '),s("a",{attrs:{href:"#headers"}},[t._v("Headers")]),t._v(" values. See "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[t._v("oatpp::data::share::MemoryLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" caret - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" error - out parameter "),s("a",{attrs:{href:"#status"}},[t._v("Status")]),t._v(". ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headersText"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"parser-parseheadervaluedata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parser-parseheadervaluedata"}},[t._v("#")]),t._v(" Parser::parseHeaderValueData")]),t._v(" "),s("p",[t._v("Parse data that is contained in a one header. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" data - out. parsed data. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headerValue - header value string. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" separator - subvalues separator. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseHeaderValueData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("HeaderValueData"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" separator"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"utils"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[t._v("#")]),t._v(" Utils")]),t._v(" "),s("p",[t._v("Http utils.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Utils")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#utils-writeheaders"}},[t._v("writeHeaders")])]),t._v(" "),s("td",[t._v("Write headers map to stream.")])])])]),t._v(" "),s("h3",{attrs:{id:"utils-writeheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#utils-writeheaders"}},[t._v("#")]),t._v(" Utils::writeHeaders")]),t._v(" "),s("p",[t._v("Write headers map to stream. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" headers ")]),s("li",[s("strong",[t._v("@param")]),t._v(" stream ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/246.2507e9ae.js b/docs/.vuepress/dist/assets/js/246.2507e9ae.js deleted file mode 100644 index d04e6e22e..000000000 --- a/docs/.vuepress/dist/assets/js/246.2507e9ae.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[246],{618:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"chunked-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunked-hpp"}},[t._v("#")]),t._v(" Chunked.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/encoding/Chunked.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/encoding/Chunked.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/protocol/http/encoding/Chunked.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"encoderchunked"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encoderchunked"}},[t._v("#")]),t._v(" EncoderChunked")]),t._v(" "),a("p",[t._v("Chunked-encoding buffer processor. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EncoderChunked")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#encoderchunked-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),a("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#encoderchunked-iterate"}},[t._v("iterate")])]),t._v(" "),a("td",[t._v("Process data.")])])])]),t._v(" "),a("h3",{attrs:{id:"encoderchunked-suggestinputstreamreadsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encoderchunked-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" EncoderChunked::suggestInputStreamReadSize")]),t._v(" "),a("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"encoderchunked-iterate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encoderchunked-iterate"}},[t._v("#")]),t._v(" EncoderChunked::iterate")]),t._v(" "),a("p",[t._v("Process data. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),a("code",[t._v("dataIn")]),t._v(" buffer pointer to "),a("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"decoderchunked"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decoderchunked"}},[t._v("#")]),t._v(" DecoderChunked")]),t._v(" "),a("p",[t._v("Chunked-decoding buffer processor. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DecoderChunked")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#decoderchunked-decoderchunked"}},[t._v("DecoderChunked")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#decoderchunked-suggestinputstreamreadsize"}},[t._v("suggestInputStreamReadSize")])]),t._v(" "),a("td",[t._v("If the client is using the input stream to read data and push it to the processor,")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_int32")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#decoderchunked-iterate"}},[t._v("iterate")])]),t._v(" "),a("td",[t._v("Process data.")])])])]),t._v(" "),a("h3",{attrs:{id:"decoderchunked-decoderchunked"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decoderchunked-decoderchunked"}},[t._v("#")]),t._v(" DecoderChunked::DecoderChunked")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DecoderChunked")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"decoderchunked-suggestinputstreamreadsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decoderchunked-suggestinputstreamreadsize"}},[t._v("#")]),t._v(" DecoderChunked::suggestInputStreamReadSize")]),t._v(" "),a("p",[t._v("If the client is using the input stream to read data and push it to the processor, the client MAY ask the processor for a suggested read size. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - suggested read size. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("suggestInputStreamReadSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"decoderchunked-iterate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decoderchunked-iterate"}},[t._v("#")]),t._v(" DecoderChunked::iterate")]),t._v(" "),a("p",[t._v("Process data. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" dataIn - data provided by client to processor. Input data. data::buffer::InlineReadData. Set "),a("code",[t._v("dataIn")]),t._v(" buffer pointer to "),a("code",[t._v("nullptr")]),t._v(" to designate the end of input. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" dataOut - data provided to client by processor. Output data. data::buffer::InlineReadData. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#processor-error"}},[t._v("Processor::Error")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_int32 "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("iterate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataIn"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InlineReadData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dataOut"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"chunkedencoderprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkedencoderprovider"}},[t._v("#")]),t._v(" ChunkedEncoderProvider")]),t._v(" "),a("p",[t._v('EncoderProvider for "chunked" encoding.')]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ChunkedEncoderProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" EncoderProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#chunkedencoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),a("td",[t._v("Get encoding name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#chunkedencoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),a("td",[t._v("Get "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding.")],1)])])]),t._v(" "),a("h3",{attrs:{id:"chunkedencoderprovider-getencodingname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkedencoderprovider-getencodingname"}},[t._v("#")]),t._v(" ChunkedEncoderProvider::getEncodingName")]),t._v(" "),a("p",[t._v("Get encoding name. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"chunkedencoderprovider-getprocessor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkedencoderprovider-getprocessor"}},[t._v("#")]),t._v(" ChunkedEncoderProvider::getProcessor")]),t._v(" "),a("p",[t._v("Get "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked encoding. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h2",{attrs:{id:"chunkeddecoderprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkeddecoderprovider"}},[t._v("#")]),t._v(" ChunkedDecoderProvider")]),t._v(" "),a("p",[t._v('EncoderProvider for "chunked" decoding.')]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ChunkedDecoderProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" EncoderProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#chunkeddecoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),a("td",[t._v("Get encoding name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#chunkeddecoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),a("td",[t._v("Get "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding.")],1)])])]),t._v(" "),a("h3",{attrs:{id:"chunkeddecoderprovider-getencodingname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkeddecoderprovider-getencodingname"}},[t._v("#")]),t._v(" ChunkedDecoderProvider::getEncodingName")]),t._v(" "),a("p",[t._v("Get encoding name. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"chunkeddecoderprovider-getprocessor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkeddecoderprovider-getprocessor"}},[t._v("#")]),t._v(" ChunkedDecoderProvider::getProcessor")]),t._v(" "),a("p",[t._v("Get "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for chunked decoding. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/247.a2463965.js b/docs/.vuepress/dist/assets/js/247.a2463965.js deleted file mode 100644 index 1c48ac921..000000000 --- a/docs/.vuepress/dist/assets/js/247.a2463965.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[247],{619:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"encoderprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider-hpp"}},[t._v("#")]),t._v(" EncoderProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/encoding/EncoderProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/encoding/EncoderProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/protocol/http/encoding/EncoderProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"encoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider"}},[t._v("#")]),t._v(" EncoderProvider")]),t._v(" "),r("p",[t._v("Provider of encoding or decoding "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EncoderProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#encoderprovider-~encoderprovider"}},[t._v("~EncoderProvider")])]),t._v(" "),r("td",[t._v("Default virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::String")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#encoderprovider-getencodingname"}},[t._v("getEncodingName")])]),t._v(" "),r("td",[t._v("Get name of the encoding. This name is used in HTTP headers.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#encoderprovider-getprocessor"}},[t._v("getProcessor")])]),t._v(" "),r("td",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for decoding/encoding.")],1)])])]),t._v(" "),r("h3",{attrs:{id:"encoderprovider-encoderprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider-encoderprovider"}},[t._v("#")]),t._v(" EncoderProvider::~EncoderProvider")]),t._v(" "),r("p",[t._v("Default virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("EncoderProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),r("h3",{attrs:{id:"encoderprovider-getencodingname"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider-getencodingname"}},[t._v("#")]),t._v(" EncoderProvider::getEncodingName")]),t._v(" "),r("p",[t._v("Get name of the encoding. This name is used in HTTP headers. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(' - name of the encoding. Ex.: "gzip" or "deflate" or "chunked". ')])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEncodingName")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),r("h3",{attrs:{id:"encoderprovider-getprocessor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#encoderprovider-getprocessor"}},[t._v("#")]),t._v(" EncoderProvider::getProcessor")]),t._v(" "),r("p",[t._v("Get "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")]),t._v(" for decoding/encoding. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/buffer/Processor/#processor"}},[t._v("oatpp::data::buffer::Processor")])],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("buffer"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Processor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProcessor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/248.7c85387b.js b/docs/.vuepress/dist/assets/js/248.7c85387b.js deleted file mode 100644 index ce3cf1fde..000000000 --- a/docs/.vuepress/dist/assets/js/248.7c85387b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[248],{620:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"providercollection-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#providercollection-hpp"}},[t._v("#")]),t._v(" ProviderCollection.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/encoding/ProviderCollection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/encoding/ProviderCollection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/protocol/http/encoding/ProviderCollection.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"providercollection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#providercollection"}},[t._v("#")]),t._v(" ProviderCollection")]),t._v(" "),a("p",[t._v("Collection of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/#encoderprovider"}},[t._v("oatpp::web::protocol::http::encoding::EncoderProvider")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" encoding "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProviderCollection")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#providercollection-add"}},[t._v("add")])]),t._v(" "),a("td",[t._v("Add encoder to collection.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#providercollection-get"}},[t._v("get")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Get encoder by encoding name. ")]),a("li",[t._v("Select available provider for set of encodings. ")])])])])])]),t._v(" "),a("h3",{attrs:{id:"providercollection-add"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#providercollection-add"}},[t._v("#")]),t._v(" ProviderCollection::add")]),t._v(" "),a("p",[t._v("Add encoder to collection. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" provider ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("EncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"providercollection-get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#providercollection-get"}},[t._v("#")]),t._v(" ProviderCollection::get")]),t._v(" "),a("ol",[a("li",[t._v("Get encoder by encoding name. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" encoding - encoding name. ")]),a("li",[a("strong",[t._v("@return")])])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("EncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" encoding"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Select available provider for set of encodings. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" encodings - set of desired encodings ")]),a("li",[a("strong",[t._v("@return")])])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("EncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_set"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" encodings"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/249.e8d5d2c5.js b/docs/.vuepress/dist/assets/js/249.e8d5d2c5.js deleted file mode 100644 index 2f357fec8..000000000 --- a/docs/.vuepress/dist/assets/js/249.e8d5d2c5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[249],{621:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bodydecoder-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-hpp"}},[t._v("#")]),t._v(" BodyDecoder.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/BodyDecoder.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/BodyDecoder.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/incoming/BodyDecoder.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder"}},[t._v("#")]),t._v(" BodyDecoder")]),t._v(" "),e("p",[t._v('Abstract BodyDecoder. Body Decoder is responsible to decode body of incoming request. For example if you receive chunked-encoded body, you have to decode it in order to get "plain" body. You may extend this class in order to customize body-decoding process.')]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" incoming "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BodyDecoder")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-~bodydecoder"}},[t._v("~BodyDecoder")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decode"}},[t._v("decode")])]),t._v(" "),e("td",[t._v("Implement this method! Decode bodyStream and write decoded data to toStream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodeasync"}},[t._v("decodeAsync")])]),t._v(" "),e("td",[t._v("Implement this method! Same as "),e("a",{attrs:{href:"#bodydecoder-decode"}},[t._v("BodyDecoder::decode()")]),t._v(" but Async.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodetostring"}},[t._v("decodeToString")])]),t._v(" "),e("td",[t._v("Read body stream and decode it to string.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Wrapper")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodetodto"}},[t._v("decodeToDto")])]),t._v(" "),e("td",[t._v("Read body stream, decode, and deserialize it as DTO Object (see "),e("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),e("OutboundLink")],1),t._v(").")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarterForResult")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodetostringasync"}},[t._v("decodeToStringAsync")])]),t._v(" "),e("td",[t._v("Same as "),e("a",{attrs:{href:"#bodydecoder-decodetostring"}},[t._v("BodyDecoder::decodeToString()")]),t._v(" but Async.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarterForResult")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bodydecoder-decodetodtoasync"}},[t._v("decodeToDtoAsync")])]),t._v(" "),e("td",[t._v("Same as "),e("a",{attrs:{href:"#bodydecoder-decodetodto"}},[t._v("BodyDecoder::decodeToDto()")]),t._v(" but Async.")])])])]),t._v(" "),e("h3",{attrs:{id:"bodydecoder-bodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-bodydecoder"}},[t._v("#")]),t._v(" BodyDecoder::~BodyDecoder")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BodyDecoder")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decode"}},[t._v("#")]),t._v(" BodyDecoder::decode")]),t._v(" "),e("p",[t._v("Implement this method! Decode bodyStream and write decoded data to toStream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodeasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodeasync"}},[t._v("#")]),t._v(" BodyDecoder::decodeAsync")]),t._v(" "),e("p",[t._v("Implement this method! Same as "),e("a",{attrs:{href:"#bodydecoder-decode"}},[t._v("BodyDecoder::decode()")]),t._v(" but Async. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodetostring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodetostring"}},[t._v("#")]),t._v(" BodyDecoder::decodeToString")]),t._v(" "),e("p",[t._v("Read body stream and decode it to string. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::String;. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeToString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodetodto"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodetodto"}},[t._v("#")]),t._v(" BodyDecoder::decodeToDto")]),t._v(" "),e("p",[t._v("Read body stream, decode, and deserialize it as DTO Object (see "),e("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),e("OutboundLink")],1),t._v("). "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@param")]),t._v(" objectMapper - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - deserialized DTO object. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeToDto")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" objectMapper"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodetostringasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodetostringasync"}},[t._v("#")]),t._v(" BodyDecoder::decodeToStringAsync")]),t._v(" "),e("p",[t._v("Same as "),e("a",{attrs:{href:"#bodydecoder-decodetostring"}},[t._v("BodyDecoder::decodeToString()")]),t._v(" but Async. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeToStringAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"bodydecoder-decodetodtoasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bodydecoder-decodetodtoasync"}},[t._v("#")]),t._v(" BodyDecoder::decodeToDtoAsync")]),t._v(" "),e("p",[t._v("Same as "),e("a",{attrs:{href:"#bodydecoder-decodetodto"}},[t._v("BodyDecoder::decodeToDto()")]),t._v(" but Async. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@param")]),t._v(" objectMapper - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\noatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Wrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeToDtoAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/25.981d08ff.js b/docs/.vuepress/dist/assets/js/25.981d08ff.js deleted file mode 100644 index 8dc2305bc..000000000 --- a/docs/.vuepress/dist/assets/js/25.981d08ff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{397:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"config-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-hpp"}},[t._v("#")]),t._v(" Config.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/Config.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/Config.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-libressl")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-libressl/Config.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config"}},[t._v("#")]),t._v(" Config")]),t._v(" "),a("p",[t._v("Wrapper over "),a("code",[t._v("tls_config")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-config"}},[t._v("Config")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("createDefaultServerConfigShared")])]),t._v(" "),a("td",[t._v("Create default config for server with enabled TLS.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("createDefaultClientConfigShared")])]),t._v(" "),a("td",[t._v("Create default client config. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-~config"}},[t._v("~Config")])]),t._v(" "),a("td",[t._v("Virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("TLSConfig")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-gettlsconfig"}},[t._v("getTLSConfig")])]),t._v(" "),a("td",[t._v("Get underlying tls_config.")])])])]),t._v(" "),a("h3",{attrs:{id:"config-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-config"}},[t._v("#")]),t._v(" Config::Config")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createshared"}},[t._v("#")]),t._v(" Config::createShared")]),t._v(" "),a("p",[t._v("Create shared Config. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createdefaultserverconfigshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultServerConfigShared")]),t._v(" "),a("p",[t._v("Create default config for server with enabled TLS. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" serverCertFile - server certificate. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" privateKeyFile - private key. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverCertFile"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" privateKeyFile"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createdefaultclientconfigshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultClientConfigShared")]),t._v(" "),a("p",[t._v("Create default client config. "),a("br"),t._v(" Please note - this method automatically sets: "),a("br"),t._v(" "),a("ul",[a("li",[a("code",[t._v("tls_config_insecure_noverifycert")])]),t._v(" "),a("li",[a("code",[t._v("tls_config_insecure_noverifyname")])])]),t._v(" "),a("br"),t._v(" Create with "),a("a",{attrs:{href:"#config-createshared"}},[t._v("Config::createShared")]),t._v(" instead in order to override this behavior. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultClientConfigShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-config-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-config-2"}},[t._v("#")]),t._v(" Config::~Config")]),t._v(" "),a("p",[t._v("Virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-gettlsconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-gettlsconfig"}},[t._v("#")]),t._v(" Config::getTLSConfig")]),t._v(" "),a("p",[t._v("Get underlying tls_config. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("tls_config*")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("TLSConfig "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTLSConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/250.ab412a63.js b/docs/.vuepress/dist/assets/js/250.ab412a63.js deleted file mode 100644 index eecb61121..000000000 --- a/docs/.vuepress/dist/assets/js/250.ab412a63.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[250],{622:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"request-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-hpp"}},[t._v("#")]),t._v(" Request.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/Request.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/Request.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/incoming/Request.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"request"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),e("p",[t._v("Class http::incoming::Request AKA IncomingRequest represents client's incoming request.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" incoming "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Request")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getconnection"}},[t._v("getConnection")])]),t._v(" "),e("td",[t._v("Get raw connection stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const http::QueryParams&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getqueryparameters"}},[t._v("getQueryParameters")])]),t._v(" "),e("td",[t._v("Get map of url query parameters.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getqueryparameter"}},[t._v("getQueryParameter")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Get query parameter value by name ")]),e("li",[t._v("Get query parameter value by name with defaultValue ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const http::RequestStartingLine&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getstartingline"}},[t._v("getStartingLine")])]),t._v(" "),e("td",[t._v("Get request starting line. (method, path, protocol)")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-setpathvariables"}},[t._v("setPathVariables")])]),t._v(" "),e("td",[t._v("Set request path variables.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const url::mapping::Pattern::MatchMap&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getpathvariables"}},[t._v("getPathVariables")])]),t._v(" "),e("td",[t._v("Get path variables according to path-pattern. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const http::Headers&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getheaders"}},[t._v("getHeaders")])]),t._v(" "),e("td",[t._v("Get request's headers map")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbodystream"}},[t._v("getBodyStream")])]),t._v(" "),e("td",[t._v("Get request's body stream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbodydecoder"}},[t._v("getBodyDecoder")])]),t._v(" "),e("td",[t._v("Get body decoder.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheader"}},[t._v("putHeader")])]),t._v(" "),e("td",[t._v("Add http header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheaderifnotexists"}},[t._v("putHeaderIfNotExists")])]),t._v(" "),e("td",[t._v("Add http header if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putorreplaceheader"}},[t._v("putOrReplaceHeader")])]),t._v(" "),e("td",[t._v("Replaces or adds header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putorreplaceheader-unsafe"}},[t._v("putOrReplaceHeader_Unsafe")])]),t._v(" "),e("td",[t._v("Replaces or adds header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheader-unsafe"}},[t._v("putHeader_Unsafe")])]),t._v(" "),e("td",[t._v("Add http header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheaderifnotexists-unsafe"}},[t._v("putHeaderIfNotExists_Unsafe")])]),t._v(" "),e("td",[t._v("Add http header if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getheader"}},[t._v("getHeader")])]),t._v(" "),e("td",[t._v("Get header value")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getpathvariable"}},[t._v("getPathVariable")])]),t._v(" "),e("td",[t._v("Get path variable according to path-pattern")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getpathtail"}},[t._v("getPathTail")])]),t._v(" "),e("td",[t._v("Get path tail according to path-pattern")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putbundledata"}},[t._v("putBundleData")])]),t._v(" "),e("td",[t._v("Put data to bundle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("WrapperType")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbundledata"}},[t._v("getBundleData")])]),t._v(" "),e("td",[t._v("Get data from bundle by key.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const data::Bundle&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbundle"}},[t._v("getBundle")])]),t._v(" "),e("td",[t._v("Get bundle object.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-transferbody"}},[t._v("transferBody")])]),t._v(" "),e("td",[t._v("Transfer body. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-transferbodytostream"}},[t._v("transferBodyToStream")])]),t._v(" "),e("td",[t._v("Stream content of the body-stream to toStream")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-readbodytostring"}},[t._v("readBodyToString")])]),t._v(" "),e("td",[t._v("Transfer body stream to string")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Wrapper")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-readbodytodto"}},[t._v("readBodyToDto")])]),t._v(" "),e("td",[t._v("Transfer body to String and parse it as DTO")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-transferbodyasync"}},[t._v("transferBodyAsync")])]),t._v(" "),e("td",[t._v("Transfer body in Asynchronous manner. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-transferbodytostreamasync"}},[t._v("transferBodyToStreamAsync")])]),t._v(" "),e("td",[t._v("Transfer body stream to toStream Async")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("async::CoroutineStarterForResult")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-readbodytostringasync"}},[t._v("readBodyToStringAsync")])]),t._v(" "),e("td",[t._v("Transfer body stream to string Async.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarterForResult")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-readbodytodtoasync"}},[t._v("readBodyToDtoAsync")])]),t._v(" "),e("td",[t._v("Transfer body to String and parse it as DTO")])])])]),t._v(" "),e("h3",{attrs:{id:"request-getconnection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getconnection"}},[t._v("#")]),t._v(" Request::getConnection")]),t._v(" "),e("p",[t._v("Get raw connection stream. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - std::shared_ptr"),e("a",{attrs:{href:"oatpp::data::stream::IOStream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(" m_connection. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getqueryparameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getqueryparameters"}},[t._v("#")]),t._v(" Request::getQueryParameters")]),t._v(" "),e("p",[t._v('Get map of url query parameters. Query parameters will be lazy parsed from url "tail" Please note: lazy parsing of query parameters is not thread-safe! '),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(' map for "key=value" ')])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("QueryParams"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getQueryParameters")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getqueryparameter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getqueryparameter"}},[t._v("#")]),t._v(" Request::getQueryParameter")]),t._v(" "),e("ol",[e("li",[t._v("Get query parameter value by name "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name ")]),e("li",[e("strong",[t._v("@return")]),t._v(" query parameter value ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getQueryParameter")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Get query parameter value by name with defaultValue "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name ")]),e("li",[e("strong",[t._v("@param")]),t._v(" defaultValue ")]),e("li",[e("strong",[t._v("@return")]),t._v(" query parameter value or defaultValue if no such parameter found ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getQueryParameter")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" defaultValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"request-getstartingline"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getstartingline"}},[t._v("#")]),t._v(" Request::getStartingLine")]),t._v(" "),e("p",[t._v("Get request starting line. (method, path, protocol) "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" starting line structure ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestStartingLine"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStartingLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-setpathvariables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-setpathvariables"}},[t._v("#")]),t._v(" Request::setPathVariables")]),t._v(" "),e("p",[t._v("Set request path variables. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pathVariables - oatpp::web::url::mapping::Pattern::MatchMap. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPathVariables")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" url"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Pattern"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MatchMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pathVariables"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getpathvariables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getpathvariables"}},[t._v("#")]),t._v(" Request::getPathVariables")]),t._v(" "),e("p",[t._v("Get path variables according to path-pattern. "),e("br"),t._v(' Ex. given request path="/sum/19/1" for path-pattern="/sum/{a}/{b}" '),e("br"),t._v(' getPathVariables().getVariable("a") == 19, getPathVariables().getVariable("b") == 1. '),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" url MatchMap ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" url"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Pattern"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MatchMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPathVariables")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getheaders"}},[t._v("#")]),t._v(" Request::getHeaders")]),t._v(" "),e("p",[t._v("Get request's headers map "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" Headers map ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbodystream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbodystream"}},[t._v("#")]),t._v(" Request::getBodyStream")]),t._v(" "),e("p",[t._v("Get request's body stream "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" body stream ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBodyStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbodydecoder"}},[t._v("#")]),t._v(" Request::getBodyDecoder")]),t._v(" "),e("p",[t._v("Get body decoder. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" Body decoder ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBodyDecoder")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheader"}},[t._v("#")]),t._v(" Request::putHeader")]),t._v(" "),e("p",[t._v("Add http header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheaderifnotexists"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheaderifnotexists"}},[t._v("#")]),t._v(" Request::putHeaderIfNotExists")]),t._v(" "),e("p",[t._v("Add http header if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putorreplaceheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putorreplaceheader"}},[t._v("#")]),t._v(" Request::putOrReplaceHeader")]),t._v(" "),e("p",[t._v("Replaces or adds header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was replaces, "),e("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putorreplaceheader-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putorreplaceheader-unsafe"}},[t._v("#")]),t._v(" Request::putOrReplaceHeader_Unsafe")]),t._v(" "),e("p",[t._v("Replaces or adds header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was replaces, "),e("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheader-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheader-unsafe"}},[t._v("#")]),t._v(" Request::putHeader_Unsafe")]),t._v(" "),e("p",[t._v("Add http header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheaderifnotexists-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheaderifnotexists-unsafe"}},[t._v("#")]),t._v(" Request::putHeaderIfNotExists_Unsafe")]),t._v(" "),e("p",[t._v("Add http header if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getheader"}},[t._v("#")]),t._v(" Request::getHeader")]),t._v(" "),e("p",[t._v("Get header value "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headerName - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getpathvariable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getpathvariable"}},[t._v("#")]),t._v(" Request::getPathVariable")]),t._v(" "),e("p",[t._v("Get path variable according to path-pattern "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" name ")]),e("li",[e("strong",[t._v("@return")]),t._v(" matched value for path-pattern ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPathVariable")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getpathtail"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getpathtail"}},[t._v("#")]),t._v(" Request::getPathTail")]),t._v(" "),e("p",[t._v('Get path tail according to path-pattern Ex. given request path="/hello/path/tail" for path-pattern="/hello/*" tail == "path/tail" note \'/\' symbol is required before \'*\' '),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" matched tail-value for path-pattern ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPathTail")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putbundledata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putbundledata"}},[t._v("#")]),t._v(" Request::putBundleData")]),t._v(" "),e("p",[t._v("Put data to bundle. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" polymorph ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putBundleData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbundledata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbundledata"}},[t._v("#")]),t._v(" Request::getBundleData")]),t._v(" "),e("p",[t._v("Get data from bundle by key. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" WrapperType ")]),e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" WrapperType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundleData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbundle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbundle"}},[t._v("#")]),t._v(" Request::getBundle")]),t._v(" "),e("p",[t._v("Get bundle object. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Bundle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-transferbody"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-transferbody"}},[t._v("#")]),t._v(" Request::transferBody")]),t._v(" "),e("p",[t._v("Transfer body. "),e("br"),t._v(" Read body chunk by chunk and pass chunks to the "),e("code",[t._v("writeCallback")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBody")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-transferbodytostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-transferbodytostream"}},[t._v("#")]),t._v(" Request::transferBodyToStream")]),t._v(" "),e("p",[t._v("Stream content of the body-stream to toStream "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" toStream ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" toStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-readbodytostring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-readbodytostring"}},[t._v("#")]),t._v(" Request::readBodyToString")]),t._v(" "),e("p",[t._v("Transfer body stream to string "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" body as string ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-readbodytodto"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-readbodytodto"}},[t._v("#")]),t._v(" Request::readBodyToDto")]),t._v(" "),e("p",[t._v("Transfer body to String and parse it as DTO "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" objectMapper ")]),e("li",[e("strong",[t._v("@return")]),t._v(" DTO ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToDto")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-transferbodyasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-transferbodyasync"}},[t._v("#")]),t._v(" Request::transferBodyAsync")]),t._v(" "),e("p",[t._v("Transfer body in Asynchronous manner. "),e("br"),t._v(" Read body chunk by chunk and pass chunks to the "),e("code",[t._v("writeCallback")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-transferbodytostreamasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-transferbodytostreamasync"}},[t._v("#")]),t._v(" Request::transferBodyToStreamAsync")]),t._v(" "),e("p",[t._v("Transfer body stream to toStream Async "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" toStream ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyToStreamAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" toStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-readbodytostringasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-readbodytostringasync"}},[t._v("#")]),t._v(" Request::readBodyToStringAsync")]),t._v(" "),e("p",[t._v("Transfer body stream to string Async. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToStringAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-readbodytodtoasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-readbodytodtoasync"}},[t._v("#")]),t._v(" Request::readBodyToDtoAsync")]),t._v(" "),e("p",[t._v("Transfer body to String and parse it as DTO "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Wrapper - DTO "),e("code",[t._v("ObjectWrapper")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" objectMapper ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\noatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Wrapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToDtoAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/251.813aeadf.js b/docs/.vuepress/dist/assets/js/251.813aeadf.js deleted file mode 100644 index 5b82c6fa4..000000000 --- a/docs/.vuepress/dist/assets/js/251.813aeadf.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[251],{623:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"requestheadersreader-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-hpp"}},[e._v("#")]),e._v(" RequestHeadersReader.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/web/protocol/http/incoming/RequestHeadersReader.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"requestheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader"}},[e._v("#")]),e._v(" RequestHeadersReader")]),e._v(" "),a("p",[e._v("Helper class to read http headers of incoming request from stream.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" incoming "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("RequestHeadersReader")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[e._v("#")]),e._v(" Typedefs")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("oatpp::async::Action")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-action"}},[e._v("Action")])]),e._v(" "),a("td",[e._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[e._v("oatpp::async::Action")]),e._v(".")],1)])])]),e._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-requestheadersreader"}},[e._v("RequestHeadersReader")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("Result")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-readheaders"}},[e._v("readHeaders")])]),e._v(" "),a("td",[e._v("Read and parse http headers from stream.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("oatpp::async::CoroutineStarterForResult")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-readheadersasync"}},[e._v("readHeadersAsync")])]),e._v(" "),a("td",[e._v("Read and parse http headers from stream in asynchronous manner.")])])])]),e._v(" "),a("h3",{attrs:{id:"requestheadersreader-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-action"}},[e._v("#")]),e._v(" RequestHeadersReader::Action")]),e._v(" "),a("p",[e._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[e._v("oatpp::async::Action")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("typedef")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Action Action\n")])])]),a("h3",{attrs:{id:"requestheadersreader-requestheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-requestheadersreader"}},[e._v("#")]),e._v(" RequestHeadersReader::RequestHeadersReader")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" readChunkSize ")]),a("li",[a("strong",[e._v("@param")]),e._v(" maxHeadersSize ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("RequestHeadersReader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("BufferOutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" bufferStream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n v_buff_size readChunkSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("2048")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n v_buff_size maxHeadersSize "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("4096")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("m_bufferStream")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("bufferStream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("m_readChunkSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("readChunkSize"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("m_maxHeadersSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("maxHeadersSize"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"requestheadersreader-readheaders"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-readheaders"}},[e._v("#")]),e._v(" RequestHeadersReader::readHeaders")]),e._v(" "),a("p",[e._v("Read and parse http headers from stream. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" stream - oatpp::data::stream::InputStreamBufferedProxy. ")]),a("li",[a("strong",[e._v("@param")]),e._v(" error - out parameter "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/CommunicationError/#protocolerror-info"}},[e._v("oatpp::web::protocol::ProtocolError::Info")]),e._v(". ")],1),a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("a",{attrs:{href:"#requestheadersreader-result"}},[e._v("RequestHeadersReader::Result")]),e._v(". ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("Result "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("readHeaders")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("InputStreamBufferedProxy"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" stream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("HttpError"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Info"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"requestheadersreader-readheadersasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-readheadersasync"}},[e._v("#")]),e._v(" RequestHeadersReader::readHeadersAsync")]),e._v(" "),a("p",[e._v("Read and parse http headers from stream in asynchronous manner. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" stream - "),a("code",[e._v("std::shared_ptr")]),e._v(" to oatpp::data::stream::InputStreamBufferedProxy. ")]),a("li",[a("strong",[e._v("@return")]),e._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" RequestHeadersReader"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Result"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("readHeadersAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("InputStreamBufferedProxy"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" stream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"requestheadersreader-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-result"}},[e._v("#")]),e._v(" RequestHeadersReader::Result")]),e._v(" "),a("p",[e._v("Result of headers reading and parsing.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" incoming "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("RequestHeadersReader")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("struct")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Result")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("http::RequestStartingLine")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-result-startingline"}},[e._v("startingLine")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#requeststartingline"}},[e._v("oatpp::web::protocol::http::RequestStartingLine")]),e._v(".")],1)]),e._v(" "),a("tr",[a("td",[a("code",[e._v("http::Headers")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#requestheadersreader-result-headers"}},[e._v("headers")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(".")],1)])])]),e._v(" "),a("h3",{attrs:{id:"requestheadersreader-result-startingline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-result-startingline"}},[e._v("#")]),e._v(" RequestHeadersReader::Result::startingLine")]),e._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#requeststartingline"}},[e._v("oatpp::web::protocol::http::RequestStartingLine")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("RequestStartingLine startingLine\n")])])]),a("h3",{attrs:{id:"requestheadersreader-result-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requestheadersreader-result-headers"}},[e._v("#")]),e._v(" RequestHeadersReader::Result::headers")]),e._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Headers headers\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/252.ed5e1fa1.js b/docs/.vuepress/dist/assets/js/252.ed5e1fa1.js deleted file mode 100644 index 9263df6df..000000000 --- a/docs/.vuepress/dist/assets/js/252.ed5e1fa1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[252],{624:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"response-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-hpp"}},[t._v("#")]),t._v(" Response.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/Response.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/Response.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/protocol/http/incoming/Response.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"response"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[t._v("#")]),t._v(" Response")]),t._v(" "),s("p",[t._v("Class http::incoming::Response AKA IncomingResponse represents server's incoming response")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" incoming "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Response")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-response"}},[t._v("Response")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared Response.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getstatuscode"}},[t._v("getStatusCode")])]),t._v(" "),s("td",[t._v("Get http status code.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getstatusdescription"}},[t._v("getStatusDescription")])]),t._v(" "),s("td",[t._v("Get http status description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const http::Headers&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getheaders"}},[t._v("getHeaders")])]),t._v(" "),s("td",[t._v("Get response http headers as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putheader"}},[t._v("putHeader")])]),t._v(" "),s("td",[t._v("Add http header.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putheaderifnotexists"}},[t._v("putHeaderIfNotExists")])]),t._v(" "),s("td",[t._v("Add http header if not already exists.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putorreplaceheader"}},[t._v("putOrReplaceHeader")])]),t._v(" "),s("td",[t._v("Replaces or adds header.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putorreplaceheader-unsafe"}},[t._v("putOrReplaceHeader_Unsafe")])]),t._v(" "),s("td",[t._v("Replaces or adds header.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putheader-unsafe"}},[t._v("putHeader_Unsafe")])]),t._v(" "),s("td",[t._v("Add http header.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putheaderifnotexists-unsafe"}},[t._v("putHeaderIfNotExists_Unsafe")])]),t._v(" "),s("td",[t._v("Add http header if not already exists.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getheader"}},[t._v("getHeader")])]),t._v(" "),s("td",[t._v("Get header value")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-putbundledata"}},[t._v("putBundleData")])]),t._v(" "),s("td",[t._v("Put data to bundle.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("WrapperType")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getbundledata"}},[t._v("getBundleData")])]),t._v(" "),s("td",[t._v("Get data from bundle by key.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const data::Bundle&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getbundle"}},[t._v("getBundle")])]),t._v(" "),s("td",[t._v("Get bundle object.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getbodystream"}},[t._v("getBodyStream")])]),t._v(" "),s("td",[t._v("Get raw body stream.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-getbodydecoder"}},[t._v("getBodyDecoder")])]),t._v(" "),s("td",[t._v("Get body decoder configured for this response.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-transferbody"}},[t._v("transferBody")])]),t._v(" "),s("td",[t._v("Transfer body. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-transferbodytostream"}},[t._v("transferBodyToStream")])]),t._v(" "),s("td",[t._v("Decode and transfer body to toStream.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-readbodytostring"}},[t._v("readBodyToString")])]),t._v(" "),s("td",[t._v("Decode and read body to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-readbodytodto"}},[t._v("readBodyToDto")])]),t._v(" "),s("td",[t._v("Read body stream, decode, and deserialize it as DTO Object (see "),s("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),s("OutboundLink")],1),t._v(").")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-transferbodyasync"}},[t._v("transferBodyAsync")])]),t._v(" "),s("td",[t._v("Transfer body in Asynchronous manner. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-transferbodytostreamasync"}},[t._v("transferBodyToStreamAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytodto"}},[t._v("Response::readBodyToDto()")]),t._v(" but Async.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-readbodytostringasync"}},[t._v("readBodyToStringAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytostring"}},[t._v("Response::readBodyToString()")]),t._v(" but Async.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::async::CoroutineStarterForResult")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#response-readbodytodtoasync"}},[t._v("readBodyToDtoAsync")])]),t._v(" "),s("td",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytodto"}},[t._v("Response::readBodyToDto()")]),t._v(" but Async.")])])])]),t._v(" "),s("h3",{attrs:{id:"response-response"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-response"}},[t._v("#")]),t._v(" Response::Response")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" statusCode - http status code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" statusDescription - http status description. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyStream - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyDecoder - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Response")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 statusCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" statusDescription"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyDecoder"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-createshared"}},[t._v("#")]),t._v(" Response::createShared")]),t._v(" "),s("p",[t._v("Create shared Response. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" statusCode - http status code. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" statusDescription - http status description. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" headers - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyStream - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" bodyDecoder - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to Response. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_int32 statusCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" statusDescription"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyDecoder"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getstatuscode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getstatuscode"}},[t._v("#")]),t._v(" Response::getStatusCode")]),t._v(" "),s("p",[t._v("Get http status code. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - http status code. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int32 "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStatusCode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getstatusdescription"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getstatusdescription"}},[t._v("#")]),t._v(" Response::getStatusDescription")]),t._v(" "),s("p",[t._v("Get http status description. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - http status description. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStatusDescription")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getheaders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getheaders"}},[t._v("#")]),t._v(" Response::getHeaders")]),t._v(" "),s("p",[t._v("Get response http headers as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - response http headers as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1)])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putheader"}},[t._v("#")]),t._v(" Response::putHeader")]),t._v(" "),s("p",[t._v("Add http header. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putheaderifnotexists"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putheaderifnotexists"}},[t._v("#")]),t._v(" Response::putHeaderIfNotExists")]),t._v(" "),s("p",[t._v("Add http header if not already exists. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putorreplaceheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putorreplaceheader"}},[t._v("#")]),t._v(" Response::putOrReplaceHeader")]),t._v(" "),s("p",[t._v("Replaces or adds header. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if header was replaces, "),s("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putorreplaceheader-unsafe"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putorreplaceheader-unsafe"}},[t._v("#")]),t._v(" Response::putOrReplaceHeader_Unsafe")]),t._v(" "),s("p",[t._v("Replaces or adds header. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if header was replaces, "),s("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader_Unsafe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putheader-unsafe"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putheader-unsafe"}},[t._v("#")]),t._v(" Response::putHeader_Unsafe")]),t._v(" "),s("p",[t._v("Add http header. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader_Unsafe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putheaderifnotexists-unsafe"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putheaderifnotexists-unsafe"}},[t._v("#")]),t._v(" Response::putHeaderIfNotExists_Unsafe")]),t._v(" "),s("p",[t._v("Add http header if not already exists. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" value - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists_Unsafe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getheader"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getheader"}},[t._v("#")]),t._v(" Response::getHeader")]),t._v(" "),s("p",[t._v("Get header value "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" headerName - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-putbundledata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-putbundledata"}},[t._v("#")]),t._v(" Response::putBundleData")]),t._v(" "),s("p",[t._v("Put data to bundle. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" key ")]),s("li",[s("strong",[t._v("@param")]),t._v(" polymorph ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("putBundleData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getbundledata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getbundledata"}},[t._v("#")]),t._v(" Response::getBundleData")]),t._v(" "),s("p",[t._v("Get data from bundle by key. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" WrapperType ")]),s("li",[s("strong",[t._v("@param")]),t._v(" key ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" WrapperType"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundleData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getbundle"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getbundle"}},[t._v("#")]),t._v(" Response::getBundle")]),t._v(" "),s("p",[t._v("Get bundle object. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Bundle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundle")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getbodystream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getbodystream"}},[t._v("#")]),t._v(" Response::getBodyStream")]),t._v(" "),s("p",[t._v("Get raw body stream. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - raw body stream as "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBodyStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-getbodydecoder"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-getbodydecoder"}},[t._v("#")]),t._v(" Response::getBodyDecoder")]),t._v(" "),s("p",[t._v("Get body decoder configured for this response. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBodyDecoder")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-transferbody"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-transferbody"}},[t._v("#")]),t._v(" Response::transferBody")]),t._v(" "),s("p",[t._v("Transfer body. "),s("br"),t._v(" Read body chunk by chunk and pass chunks to the "),s("code",[t._v("writeCallback")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" writeCallback - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBody")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-transferbodytostream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-transferbodytostream"}},[t._v("#")]),t._v(" Response::transferBodyToStream")]),t._v(" "),s("p",[t._v("Decode and transfer body to toStream. Use case example - stream huge body directly to file using relatively small buffer. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" toStream - pointer to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyToStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" toStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-readbodytostring"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-readbodytostring"}},[t._v("#")]),t._v(" Response::readBodyToString")]),t._v(" "),s("p",[t._v("Decode and read body to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-readbodytodto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-readbodytodto"}},[t._v("#")]),t._v(" Response::readBodyToDto")]),t._v(" "),s("p",[t._v("Read body stream, decode, and deserialize it as DTO Object (see "),s("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),s("OutboundLink")],1),t._v("). "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" objectMapper - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - deserialized DTO object. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToDto")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-transferbodyasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-transferbodyasync"}},[t._v("#")]),t._v(" Response::transferBodyAsync")]),t._v(" "),s("p",[t._v("Transfer body in Asynchronous manner. "),s("br"),t._v(" Read body chunk by chunk and pass chunks to the "),s("code",[t._v("writeCallback")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" writeCallback - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-transferbodytostreamasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-transferbodytostreamasync"}},[t._v("#")]),t._v(" Response::transferBodyToStreamAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytodto"}},[t._v("Response::readBodyToDto()")]),t._v(" but Async. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" toStream - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyToStreamAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" toStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-readbodytostringasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-readbodytostringasync"}},[t._v("#")]),t._v(" Response::readBodyToStringAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytostring"}},[t._v("Response::readBodyToString()")]),t._v(" but Async. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToStringAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"response-readbodytodtoasync"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-readbodytodtoasync"}},[t._v("#")]),t._v(" Response::readBodyToDtoAsync")]),t._v(" "),s("p",[t._v("Same as "),s("a",{attrs:{href:"#response-readbodytodto"}},[t._v("Response::readBodyToDto()")]),t._v(" but Async. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" Wrapper - ObjectWrapper type. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" objectMapper - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\noatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Wrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToDtoAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/253.deb0ab07.js b/docs/.vuepress/dist/assets/js/253.deb0ab07.js deleted file mode 100644 index 906b549b5..000000000 --- a/docs/.vuepress/dist/assets/js/253.deb0ab07.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[253],{625:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"responseheadersreader-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-hpp"}},[e._v("#")]),e._v(" ResponseHeadersReader.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/ResponseHeadersReader.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/ResponseHeadersReader.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp/web/protocol/http/incoming/ResponseHeadersReader.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"responseheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader"}},[e._v("#")]),e._v(" ResponseHeadersReader")]),e._v(" "),a("p",[e._v("Helper class to read http headers of incoming response from stream.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" incoming "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("ResponseHeadersReader")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[e._v("#")]),e._v(" Typedefs")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("oatpp::async::Action")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-action"}},[e._v("Action")])]),e._v(" "),a("td",[e._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[e._v("oatpp::async::Action")]),e._v(".")],1)])])]),e._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-responseheadersreader"}},[e._v("ResponseHeadersReader")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("Result")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-readheaders"}},[e._v("readHeaders")])]),e._v(" "),a("td",[e._v("Read and parse http headers from stream.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("oatpp::async::CoroutineStarterForResult")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-readheadersasync"}},[e._v("readHeadersAsync")])]),e._v(" "),a("td",[e._v("Read and parse http headers from stream in asynchronous manner.")])])])]),e._v(" "),a("h3",{attrs:{id:"responseheadersreader-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-action"}},[e._v("#")]),e._v(" ResponseHeadersReader::Action")]),e._v(" "),a("p",[e._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[e._v("oatpp::async::Action")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("typedef")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Action Action\n")])])]),a("h3",{attrs:{id:"responseheadersreader-responseheadersreader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-responseheadersreader"}},[e._v("#")]),e._v(" ResponseHeadersReader::ResponseHeadersReader")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" buffer - buffer to use to read data from stream. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#memorylabel"}},[e._v("oatpp::data::share::MemoryLabel")]),e._v(". ")],1),a("li",[a("strong",[e._v("@param")]),e._v(" maxHeadersSize ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("ResponseHeadersReader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("MemoryLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" buffer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" v_buff_size maxHeadersSize"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("m_buffer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("buffer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("m_maxHeadersSize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("maxHeadersSize"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"responseheadersreader-readheaders"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-readheaders"}},[e._v("#")]),e._v(" ResponseHeadersReader::readHeaders")]),e._v(" "),a("p",[e._v("Read and parse http headers from stream. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" connection - "),a("code",[e._v("std::shared_ptr")]),e._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[e._v("oatpp::data::stream::IOStream")]),e._v(". ")],1),a("li",[a("strong",[e._v("@param")]),e._v(" error - out parameter "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/CommunicationError/#protocolerror-info"}},[e._v("oatpp::web::protocol::ProtocolError::Info")]),e._v(". ")],1),a("li",[a("strong",[e._v("@return")]),e._v(" - "),a("a",{attrs:{href:"#responseheadersreader-result"}},[e._v("ResponseHeadersReader::Result")]),e._v(". ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("Result "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("readHeaders")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("HttpError"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Info"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"responseheadersreader-readheadersasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-readheadersasync"}},[e._v("#")]),e._v(" ResponseHeadersReader::readHeadersAsync")]),e._v(" "),a("p",[e._v("Read and parse http headers from stream in asynchronous manner. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" connection - "),a("code",[e._v("std::shared_ptr")]),e._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[e._v("oatpp::data::stream::IOStream")]),e._v(". ")],1),a("li",[a("strong",[e._v("@return")]),e._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" Result"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("readHeadersAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v(" connection"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"responseheadersreader-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-result"}},[e._v("#")]),e._v(" ResponseHeadersReader::Result")]),e._v(" "),a("p",[e._v("Result of headers reading and parsing.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" incoming "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("ResponseHeadersReader")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("struct")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Result")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[e._v("#")]),e._v(" Fields")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("http::ResponseStartingLine")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-result-startingline"}},[e._v("startingLine")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#responsestartingline"}},[e._v("oatpp::web::protocol::http::ResponseStartingLine")]),e._v(".")],1)]),e._v(" "),a("tr",[a("td",[a("code",[e._v("http::Headers")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-result-headers"}},[e._v("headers")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(".")],1)]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_buff_size")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-result-bufferposstart"}},[e._v("bufferPosStart")])]),e._v(" "),a("td",[e._v("This value represents starting position in buffer used to read data from stream for the last read operation.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_buff_size")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#responseheadersreader-result-bufferposend"}},[e._v("bufferPosEnd")])]),e._v(" "),a("td",[e._v("This value represents end position in buffer used to read data from stream for the last read operation.")])])])]),e._v(" "),a("h3",{attrs:{id:"responseheadersreader-result-startingline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-result-startingline"}},[e._v("#")]),e._v(" ResponseHeadersReader::Result::startingLine")]),e._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#responsestartingline"}},[e._v("oatpp::web::protocol::http::ResponseStartingLine")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("ResponseStartingLine startingLine\n")])])]),a("h3",{attrs:{id:"responseheadersreader-result-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-result-headers"}},[e._v("#")]),e._v(" ResponseHeadersReader::Result::headers")]),e._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[e._v("oatpp::web::protocol::http::Headers")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("Headers headers\n")])])]),a("h3",{attrs:{id:"responseheadersreader-result-bufferposstart"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-result-bufferposstart"}},[e._v("#")]),e._v(" ResponseHeadersReader::Result::bufferPosStart")]),e._v(" "),a("p",[e._v("This value represents starting position in buffer used to read data from stream for the last read operation.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("v_buff_size bufferPosStart\n")])])]),a("h3",{attrs:{id:"responseheadersreader-result-bufferposend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#responseheadersreader-result-bufferposend"}},[e._v("#")]),e._v(" ResponseHeadersReader::Result::bufferPosEnd")]),e._v(" "),a("p",[e._v("This value represents end position in buffer used to read data from stream for the last read operation.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("v_buff_size bufferPosEnd\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/254.ec7e88ef.js b/docs/.vuepress/dist/assets/js/254.ec7e88ef.js deleted file mode 100644 index 98a870c63..000000000 --- a/docs/.vuepress/dist/assets/js/254.ec7e88ef.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[254],{626:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"simplebodydecoder-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplebodydecoder-hpp"}},[t._v("#")]),t._v(" SimpleBodyDecoder.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"simplebodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplebodydecoder"}},[t._v("#")]),t._v(" SimpleBodyDecoder")]),t._v(" "),e("p",[t._v("Default implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" incoming "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SimpleBodyDecoder")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" BodyDecoder "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#simplebodydecoder-simplebodydecoder"}},[t._v("SimpleBodyDecoder")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#simplebodydecoder-decode"}},[t._v("decode")])]),t._v(" "),e("td",[t._v("Decode bodyStream and write decoded data to toStream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#simplebodydecoder-decodeasync"}},[t._v("decodeAsync")])]),t._v(" "),e("td",[t._v("Same as "),e("a",{attrs:{href:"#simplebodydecoder-decode"}},[t._v("SimpleBodyDecoder::decode()")]),t._v(" but Async.")])])])]),t._v(" "),e("h3",{attrs:{id:"simplebodydecoder-simplebodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplebodydecoder-simplebodydecoder"}},[t._v("#")]),t._v(" SimpleBodyDecoder::SimpleBodyDecoder")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" decoders - collection content decoders. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SimpleBodyDecoder")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("encoding"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProviderCollection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contentDecoders "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"simplebodydecoder-decode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplebodydecoder-decode"}},[t._v("#")]),t._v(" SimpleBodyDecoder::decode")]),t._v(" "),e("p",[t._v("Decode bodyStream and write decoded data to toStream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - pointer to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"simplebodydecoder-decodeasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplebodydecoder-decodeasync"}},[t._v("#")]),t._v(" SimpleBodyDecoder::decodeAsync")]),t._v(" "),e("p",[t._v("Same as "),e("a",{attrs:{href:"#simplebodydecoder-decode"}},[t._v("SimpleBodyDecoder::decode()")]),t._v(" but Async. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - Headers map. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" bodyStream - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#inputstream"}},[t._v("oatpp::data::stream::InputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" writeCallback - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#writecallback"}},[t._v("oatpp::data::stream::WriteCallback")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" connection ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("decodeAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("InputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bodyStream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("WriteCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" writeCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/255.1d4d43ae.js b/docs/.vuepress/dist/assets/js/255.1d4d43ae.js deleted file mode 100644 index 293690c63..000000000 --- a/docs/.vuepress/dist/assets/js/255.1d4d43ae.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[255],{627:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"body-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body-hpp"}},[t._v("#")]),t._v(" Body.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/Body.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/Body.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/outgoing/Body.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"body"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body"}},[t._v("#")]),t._v(" Body")]),t._v(" "),e("p",[t._v("Abstract http outgoing body. You may extend this class in order to implement custom body transferring functionality.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Body")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ReadCallback "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#body-~body"}},[t._v("~Body")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#body-declareheaders"}},[t._v("declareHeaders")])]),t._v(" "),e("td",[t._v("Declare headers describing body.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#body-getknowndata"}},[t._v("getKnownData")])]),t._v(" "),e("td",[t._v("Pointer to the body known data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#body-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),e("td",[t._v("Should return the known size of the body (if known).")])])])]),t._v(" "),e("h3",{attrs:{id:"body-body"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body-body"}},[t._v("#")]),t._v(" Body::~Body")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Body")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"body-declareheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body-declareheaders"}},[t._v("#")]),t._v(" Body::declareHeaders")]),t._v(" "),e("p",[t._v("Declare headers describing body. "),e("strong",[t._v("Note:")]),t._v(" Do NOT declare the "),e("code",[t._v("Content-Length")]),t._v(" header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("declareHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"body-getknowndata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body-getknowndata"}},[t._v("#")]),t._v(" Body::getKnownData")]),t._v(" "),e("p",[t._v("Pointer to the body known data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("p_char8")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"body-getknownsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#body-getknownsize"}},[t._v("#")]),t._v(" Body::getKnownSize")]),t._v(" "),e("p",[t._v("Should return the known size of the body (if known). If body size is unknown then should return -1. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/256.81cf2eab.js b/docs/.vuepress/dist/assets/js/256.81cf2eab.js deleted file mode 100644 index 4f15f9d2d..000000000 --- a/docs/.vuepress/dist/assets/js/256.81cf2eab.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[256],{628:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"bufferbody-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-hpp"}},[t._v("#")]),t._v(" BufferBody.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/BufferBody.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/BufferBody.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/outgoing/BufferBody.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"bufferbody"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody"}},[t._v("#")]),t._v(" BufferBody")]),t._v(" "),e("p",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(" class. Implements functionality to use :oatpp::String as data source for http body.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BufferBody")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Body "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferbody-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared BufferBody.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferbody-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferbody-declareheaders"}},[t._v("declareHeaders")])]),t._v(" "),e("td",[t._v("Declare "),e("code",[t._v("Content-Length")]),t._v(" header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferbody-getknowndata"}},[t._v("getKnownData")])]),t._v(" "),e("td",[t._v("Pointer to the body known data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bufferbody-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),e("td",[t._v("Return known size of the body.")])])])]),t._v(" "),e("h3",{attrs:{id:"bufferbody-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-createshared"}},[t._v("#")]),t._v(" BufferBody::createShared")]),t._v(" "),e("p",[t._v("Create shared BufferBody. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" contentType - type of the content. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to BufferBody. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BufferBody"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contentType "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("StringKeyLabel")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bufferbody-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-read"}},[t._v("#")]),t._v(" BufferBody::read")]),t._v(" "),e("p",[t._v("Read operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferbody-declareheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-declareheaders"}},[t._v("#")]),t._v(" BufferBody::declareHeaders")]),t._v(" "),e("p",[t._v("Declare "),e("code",[t._v("Content-Length")]),t._v(" header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("declareHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferbody-getknowndata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-getknowndata"}},[t._v("#")]),t._v(" BufferBody::getKnownData")]),t._v(" "),e("p",[t._v("Pointer to the body known data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("p_char8")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bufferbody-getknownsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bufferbody-getknownsize"}},[t._v("#")]),t._v(" BufferBody::getKnownSize")]),t._v(" "),e("p",[t._v("Return known size of the body. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("v_buff_size")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/257.3f82a676.js b/docs/.vuepress/dist/assets/js/257.3f82a676.js deleted file mode 100644 index f5160b69b..000000000 --- a/docs/.vuepress/dist/assets/js/257.3f82a676.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[257],{629:function(t,o,e){"use strict";e.r(o);var p=e(42),r=Object(p.a)({},(function(){var t=this,o=t.$createElement,e=t._self._c||o;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"multipartbody-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#multipartbody-hpp"}},[t._v("#")]),t._v(" MultipartBody.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/MultipartBody.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/MultipartBody.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/outgoing/MultipartBody.hpp"')])])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/258.0702cbbc.js b/docs/.vuepress/dist/assets/js/258.0702cbbc.js deleted file mode 100644 index 33f191a59..000000000 --- a/docs/.vuepress/dist/assets/js/258.0702cbbc.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[258],{630:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"request-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-hpp"}},[t._v("#")]),t._v(" Request.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/Request.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/Request.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/outgoing/Request.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"request"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),e("p",[t._v("Class http::outgoing::Request AKA OutgoingRequest represents client's outgoing request to server.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Request")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("protocol::http::Headers")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-headers"}},[t._v("Headers")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-request"}},[t._v("Request")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared Request.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const oatpp::data::share::StringKeyLabel&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getmethod"}},[t._v("getMethod")])]),t._v(" "),e("td",[t._v("Get http method.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const oatpp::data::share::StringKeyLabel&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getpath"}},[t._v("getPath")])]),t._v(" "),e("td",[t._v("Get path to resource.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Headers&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getheaders"}},[t._v("getHeaders")])]),t._v(" "),e("td",[t._v("Get headers map.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheader"}},[t._v("putHeader")])]),t._v(" "),e("td",[t._v("Add http header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheaderifnotexists"}},[t._v("putHeaderIfNotExists")])]),t._v(" "),e("td",[t._v("Add http header if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putorreplaceheader"}},[t._v("putOrReplaceHeader")])]),t._v(" "),e("td",[t._v("Replaces or adds header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putorreplaceheader-unsafe"}},[t._v("putOrReplaceHeader_Unsafe")])]),t._v(" "),e("td",[t._v("Replaces or adds header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheader-unsafe"}},[t._v("putHeader_Unsafe")])]),t._v(" "),e("td",[t._v("Add http header.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putheaderifnotexists-unsafe"}},[t._v("putHeaderIfNotExists_Unsafe")])]),t._v(" "),e("td",[t._v("Add http header if not already exists.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getheader"}},[t._v("getHeader")])]),t._v(" "),e("td",[t._v("Get header value")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-putbundledata"}},[t._v("putBundleData")])]),t._v(" "),e("td",[t._v("Put data to bundle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("WrapperType")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbundledata"}},[t._v("getBundleData")])]),t._v(" "),e("td",[t._v("Get data from bundle by key.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const data::Bundle&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbundle"}},[t._v("getBundle")])]),t._v(" "),e("td",[t._v("Get bundle object.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-getbody"}},[t._v("getBody")])]),t._v(" "),e("td",[t._v("Get http body.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-send"}},[t._v("send")])]),t._v(" "),e("td",[t._v("Write request to stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#request-sendasync"}},[t._v("sendAsync")])]),t._v(" "),e("td",[t._v("Write request to stream in asynchronous manner.")])])])]),t._v(" "),e("h3",{attrs:{id:"request-headers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-headers"}},[t._v("#")]),t._v(" Request::Headers")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),e("h3",{attrs:{id:"request-request"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-request"}},[t._v("#")]),t._v(" Request::Request")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" method - http method. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" path - path to resource. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("a",{attrs:{href:"#request-headers"}},[t._v("Request::Headers")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" body - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Request")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-createshared"}},[t._v("#")]),t._v(" Request::createShared")]),t._v(" "),e("p",[t._v("Create shared Request. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" method - http method. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" path - path to resource. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("a",{attrs:{href:"#request-headers"}},[t._v("Request::Headers")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" body - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to Request. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Request"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getmethod"}},[t._v("#")]),t._v(" Request::getMethod")]),t._v(" "),e("p",[t._v("Get http method. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - http method. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMethod")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getpath"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getpath"}},[t._v("#")]),t._v(" Request::getPath")]),t._v(" "),e("p",[t._v("Get path to resource. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - path to resource. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPath")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getheaders"}},[t._v("#")]),t._v(" Request::getHeaders")]),t._v(" "),e("p",[t._v("Get headers map. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#request-headers"}},[t._v("Request::Headers")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheader"}},[t._v("#")]),t._v(" Request::putHeader")]),t._v(" "),e("p",[t._v("Add http header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheaderifnotexists"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheaderifnotexists"}},[t._v("#")]),t._v(" Request::putHeaderIfNotExists")]),t._v(" "),e("p",[t._v("Add http header if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putorreplaceheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putorreplaceheader"}},[t._v("#")]),t._v(" Request::putOrReplaceHeader")]),t._v(" "),e("p",[t._v("Replaces or adds header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was replaces, "),e("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putorreplaceheader-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putorreplaceheader-unsafe"}},[t._v("#")]),t._v(" Request::putOrReplaceHeader_Unsafe")]),t._v(" "),e("p",[t._v("Replaces or adds header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was replaces, "),e("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheader-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheader-unsafe"}},[t._v("#")]),t._v(" Request::putHeader_Unsafe")]),t._v(" "),e("p",[t._v("Add http header. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putheaderifnotexists-unsafe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putheaderifnotexists-unsafe"}},[t._v("#")]),t._v(" Request::putHeaderIfNotExists_Unsafe")]),t._v(" "),e("p",[t._v("Add http header if not already exists. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" value - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists_Unsafe")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getheader"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getheader"}},[t._v("#")]),t._v(" Request::getHeader")]),t._v(" "),e("p",[t._v("Get header value "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headerName - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-putbundledata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-putbundledata"}},[t._v("#")]),t._v(" Request::putBundleData")]),t._v(" "),e("p",[t._v("Put data to bundle. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@param")]),t._v(" polymorph ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("putBundleData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbundledata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbundledata"}},[t._v("#")]),t._v(" Request::getBundleData")]),t._v(" "),e("p",[t._v("Get data from bundle by key. "),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" WrapperType ")]),e("li",[e("strong",[t._v("@param")]),t._v(" key ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" WrapperType"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundleData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbundle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbundle"}},[t._v("#")]),t._v(" Request::getBundle")]),t._v(" "),e("p",[t._v("Get bundle object. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Bundle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-getbody"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-getbody"}},[t._v("#")]),t._v(" Request::getBody")]),t._v(" "),e("p",[t._v("Get http body. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBody")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-send"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-send"}},[t._v("#")]),t._v(" Request::send")]),t._v(" "),e("p",[t._v("Write request to stream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("send")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"request-sendasync"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request-sendasync"}},[t._v("#")]),t._v(" Request::sendAsync")]),t._v(" "),e("p",[t._v("Write request to stream in asynchronous manner. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" _this ")]),e("li",[e("strong",[t._v("@param")]),t._v(" stream - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendAsync")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Request"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" _this"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/259.9f2a596c.js b/docs/.vuepress/dist/assets/js/259.9f2a596c.js deleted file mode 100644 index 5bb68c348..000000000 --- a/docs/.vuepress/dist/assets/js/259.9f2a596c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[259],{634:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"response-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-hpp"}},[t._v("#")]),t._v(" Response.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/Response.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/Response.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/protocol/http/outgoing/Response.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[t._v("#")]),t._v(" Response")]),t._v(" "),a("p",[t._v("Class which stores information of outgoing http Response.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Response")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("http::Headers")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-headers"}},[t._v("Headers")])]),t._v(" "),a("td",[t._v("Convenience typedef for Headers. "),a("br"),t._v(" See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::network::ConnectionHandler")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-connectionhandler"}},[t._v("ConnectionHandler")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-response"}},[t._v("Response")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared outgoing response with status and body.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const Status&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getstatus"}},[t._v("getStatus")])]),t._v(" "),a("td",[t._v("Get status.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Headers&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getheaders"}},[t._v("getHeaders")])]),t._v(" "),a("td",[t._v("Get headers.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getbody"}},[t._v("getBody")])]),t._v(" "),a("td",[t._v("Get body")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putheader"}},[t._v("putHeader")])]),t._v(" "),a("td",[t._v("Add http header.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putheaderifnotexists"}},[t._v("putHeaderIfNotExists")])]),t._v(" "),a("td",[t._v("Add http header if not already exists.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putorreplaceheader"}},[t._v("putOrReplaceHeader")])]),t._v(" "),a("td",[t._v("Replaces or adds header.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putorreplaceheader-unsafe"}},[t._v("putOrReplaceHeader_Unsafe")])]),t._v(" "),a("td",[t._v("Replaces or adds header.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putheader-unsafe"}},[t._v("putHeader_Unsafe")])]),t._v(" "),a("td",[t._v("Add http header.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putheaderifnotexists-unsafe"}},[t._v("putHeaderIfNotExists_Unsafe")])]),t._v(" "),a("td",[t._v("Add http header if not already exists.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getheader"}},[t._v("getHeader")])]),t._v(" "),a("td",[t._v("Get header value")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-putbundledata"}},[t._v("putBundleData")])]),t._v(" "),a("td",[t._v("Put data to bundle.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("WrapperType")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getbundledata"}},[t._v("getBundleData")])]),t._v(" "),a("td",[t._v("Get data from bundle by key.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const data::Bundle&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getbundle"}},[t._v("getBundle")])]),t._v(" "),a("td",[t._v("Get bundle object.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-setconnectionupgradehandler"}},[t._v("setConnectionUpgradeHandler")])]),t._v(" "),a("td",[t._v("Set connection upgreade header. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getconnectionupgradehandler"}},[t._v("getConnectionUpgradeHandler")])]),t._v(" "),a("td",[t._v("Get currently set connection upgrade handler.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-setconnectionupgradeparameters"}},[t._v("setConnectionUpgradeParameters")])]),t._v(" "),a("td",[t._v("Set connection upgrade parameters. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-getconnectionupgradeparameters"}},[t._v("getConnectionUpgradeParameters")])]),t._v(" "),a("td",[t._v("Get connection upgrade parameters.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-send"}},[t._v("send")])]),t._v(" "),a("td",[t._v("Write this Response to stream.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarter")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#response-sendasync"}},[t._v("sendAsync")])]),t._v(" "),a("td",[t._v("Same as "),a("a",{attrs:{href:"#response-send"}},[t._v("Response::send()")]),t._v(" but async.")])])])]),t._v(" "),a("h3",{attrs:{id:"response-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-headers"}},[t._v("#")]),t._v(" Response::Headers")]),t._v(" "),a("p",[t._v("Convenience typedef for Headers. "),a("br"),t._v(" See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),a("h3",{attrs:{id:"response-connectionhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-connectionhandler"}},[t._v("#")]),t._v(" Response::ConnectionHandler")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler ConnectionHandler\n")])])]),a("h3",{attrs:{id:"response-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-response"}},[t._v("#")]),t._v(" Response::Response")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" status - http status. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" body - response body. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Response")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-createshared"}},[t._v("#")]),t._v(" Response::createShared")]),t._v(" "),a("p",[t._v("Create shared outgoing response with status and body. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" status - http status. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" body - response body. ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getstatus"}},[t._v("#")]),t._v(" Response::getStatus")]),t._v(" "),a("p",[t._v("Get status. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - http status. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStatus")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getheaders"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getheaders"}},[t._v("#")]),t._v(" Response::getHeaders")]),t._v(" "),a("p",[t._v("Get headers. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getbody"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getbody"}},[t._v("#")]),t._v(" Response::getBody")]),t._v(" "),a("p",[t._v("Get body "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Body/#body"}},[t._v("oatpp::web::protocol::http::outgoing::Body")])],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Body"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBody")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putheader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putheader"}},[t._v("#")]),t._v(" Response::putHeader")]),t._v(" "),a("p",[t._v("Add http header. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putheaderifnotexists"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putheaderifnotexists"}},[t._v("#")]),t._v(" Response::putHeaderIfNotExists")]),t._v(" "),a("p",[t._v("Add http header if not already exists. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putorreplaceheader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putorreplaceheader"}},[t._v("#")]),t._v(" Response::putOrReplaceHeader")]),t._v(" "),a("p",[t._v("Replaces or adds header. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" if header was replaces, "),a("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putorreplaceheader-unsafe"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putorreplaceheader-unsafe"}},[t._v("#")]),t._v(" Response::putOrReplaceHeader_Unsafe")]),t._v(" "),a("p",[t._v("Replaces or adds header. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" if header was replaces, "),a("code",[t._v("false")]),t._v(" if header was added. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putOrReplaceHeader_Unsafe")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putheader-unsafe"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putheader-unsafe"}},[t._v("#")]),t._v(" Response::putHeader_Unsafe")]),t._v(" "),a("p",[t._v("Add http header. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeader_Unsafe")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putheaderifnotexists-unsafe"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putheaderifnotexists-unsafe"}},[t._v("#")]),t._v(" Response::putHeaderIfNotExists_Unsafe")]),t._v(" "),a("p",[t._v("Add http header if not already exists. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" value - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("true")]),t._v(" if header was added. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putHeaderIfNotExists_Unsafe")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getheader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getheader"}},[t._v("#")]),t._v(" Response::getHeader")]),t._v(" "),a("p",[t._v("Get header value "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" headerName - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabelci"}},[t._v("oatpp::data::share::StringKeyLabelCI")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabelCI"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headerName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-putbundledata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-putbundledata"}},[t._v("#")]),t._v(" Response::putBundleData")]),t._v(" "),a("p",[t._v("Put data to bundle. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" key ")]),a("li",[a("strong",[t._v("@param")]),t._v(" polymorph ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("putBundleData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getbundledata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getbundledata"}},[t._v("#")]),t._v(" Response::getBundleData")]),t._v(" "),a("p",[t._v("Get data from bundle by key. "),a("ul",[a("li",[a("strong",[t._v("@tparam")]),t._v(" WrapperType ")]),a("li",[a("strong",[t._v("@param")]),t._v(" key ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" WrapperType"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nWrapperType "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundleData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getbundle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getbundle"}},[t._v("#")]),t._v(" Response::getBundle")]),t._v(" "),a("p",[t._v("Get bundle object. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Bundle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBundle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-setconnectionupgradehandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-setconnectionupgradehandler"}},[t._v("#")]),t._v(" Response::setConnectionUpgradeHandler")]),t._v(" "),a("p",[t._v("Set connection upgreade header. "),a("br"),t._v(" Use it together with corresponding headers being set when Response is created as: "),a("br"),t._v(" Response("),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status-code-101"}},[t._v("oatpp::web::protocol::http::Status::CODE_101")]),t._v(", nullptr);"),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" handler - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". ")],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConnectionUpgradeHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" handler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getconnectionupgradehandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getconnectionupgradehandler"}},[t._v("#")]),t._v(" Response::getConnectionUpgradeHandler")]),t._v(" "),a("p",[t._v("Get currently set connection upgrade handler. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionUpgradeHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-setconnectionupgradeparameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-setconnectionupgradeparameters"}},[t._v("#")]),t._v(" Response::setConnectionUpgradeParameters")]),t._v(" "),a("p",[t._v("Set connection upgrade parameters. "),a("br"),t._v(" Use it to set additional parameters for upgraded connection handling. See "),a("a",{attrs:{href:"#response-setconnectionupgradehandler"}},[t._v("Response::setConnectionUpgradeHandler()")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" parameters - "),a("code",[t._v("std::shared_ptr")]),t._v(" to const "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-parametermap"}},[t._v("oatpp::network::ConnectionHandler::ParameterMap")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConnectionUpgradeParameters")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" parameters"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-getconnectionupgradeparameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-getconnectionupgradeparameters"}},[t._v("#")]),t._v(" Response::getConnectionUpgradeParameters")]),t._v(" "),a("p",[t._v("Get connection upgrade parameters. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to const oatpp::network::ConnectionHandler::ParametersMap. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParameterMap"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionUpgradeParameters")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-send"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-send"}},[t._v("#")]),t._v(" Response::send")]),t._v(" "),a("p",[t._v("Write this Response to stream. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" stream - pointer to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" headersWriteBuffer - pointer to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" contentEncoder - pointer to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/#encoderprovider"}},[t._v("oatpp::web::protocol::http::encoding::EncoderProvider")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("send")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" headersWriteBuffer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" contentEncoderProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-sendasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-sendasync"}},[t._v("#")]),t._v(" Response::sendAsync")]),t._v(" "),a("p",[t._v("Same as "),a("a",{attrs:{href:"#response-send"}},[t._v("Response::send()")]),t._v(" but async. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" _this - "),a("code",[t._v("this")]),t._v(" response. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" stream - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#outputstream"}},[t._v("oatpp::data::stream::OutputStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" headersWriteBuffer - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" contentEncoderProvider - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/encoding/EncoderProvider/#encoderprovider"}},[t._v("oatpp::web::protocol::http::encoding::EncoderProvider")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinestarter"}},[t._v("oatpp::async::CoroutineStarter")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarter "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sendAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" _this"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("OutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headersWriteBuffer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("EncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contentEncoderProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/26.8e8a82d0.js b/docs/.vuepress/dist/assets/js/26.8e8a82d0.js deleted file mode 100644 index da597b599..000000000 --- a/docs/.vuepress/dist/assets/js/26.8e8a82d0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{398:function(t,a,e){"use strict";e.r(a);var s=e(42),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connection-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-libressl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-libressl/Connection.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),e("p",[t._v("TLS Connection implementation. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(" and "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-connection"}},[t._v("Connection")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-~connection"}},[t._v("~Connection")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get output stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get input stream context. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-closetls"}},[t._v("closeTLS")])]),t._v(" "),e("td",[t._v("Close TLS handles.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("provider::ResourceHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gettransportstream"}},[t._v("getTransportStream")])]),t._v(" "),e("td",[t._v("Get the underlying transport stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("TLSHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gettlshandle"}},[t._v("getTlsHandle")])]),t._v(" "),e("td",[t._v("Get TLS handle.")])])])]),t._v(" "),e("h3",{attrs:{id:"connection-connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection"}},[t._v("#")]),t._v(" Connection::Connection")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tlsObject - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/TLSObject/#tlsobject"}},[t._v("oatpp::libressl::TLSObject")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" stream - underlying transport stream. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("TLSObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tlsObject"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-connection-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection-2"}},[t._v("#")]),t._v(" Connection::~Connection")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-write"}},[t._v("#")]),t._v(" Connection::write")]),t._v(" "),e("p",[t._v("Write operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the data in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-read"}},[t._v("#")]),t._v(" Connection::read")]),t._v(" "),e("p",[t._v("Read operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("#")]),t._v(" Connection::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setinputstreamiomode"}},[t._v("#")]),t._v(" Connection::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamiomode"}},[t._v("#")]),t._v(" Connection::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamcontext"}},[t._v("#")]),t._v(" Connection::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-closetls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-closetls"}},[t._v("#")]),t._v(" Connection::closeTLS")]),t._v(" "),e("p",[t._v("Close TLS handles.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("closeTLS")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-gettransportstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gettransportstream"}},[t._v("#")]),t._v(" Connection::getTransportStream")]),t._v(" "),e("p",[t._v("Get the underlying transport stream. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTransportStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-gettlshandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gettlshandle"}},[t._v("#")]),t._v(" Connection::getTlsHandle")]),t._v(" "),e("p",[t._v("Get TLS handle. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("tls*")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("TLSHandle "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTlsHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/260.4169ed63.js b/docs/.vuepress/dist/assets/js/260.4169ed63.js deleted file mode 100644 index 2de633e43..000000000 --- a/docs/.vuepress/dist/assets/js/260.4169ed63.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[260],{631:function(t,o,s){"use strict";s.r(o);var e=s(42),a=Object(e.a)({},(function(){var t=this,o=t.$createElement,s=t._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"responsefactory-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsefactory-hpp"}},[t._v("#")]),t._v(" ResponseFactory.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/ResponseFactory.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/protocol/http/outgoing/ResponseFactory.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"responsefactory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsefactory"}},[t._v("#")]),t._v(" ResponseFactory")]),t._v(" "),s("p",[t._v("Helper class to create http outgoing responses (oatpp::web::protocol::http::outgoing::Response).")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResponseFactory")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responsefactory-createresponse"}},[t._v("createResponse")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Create "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(" with "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/#bufferbody"}},[t._v("oatpp::web::protocol::http::outgoing::BufferBody")]),t._v(". ")],1),s("li",[t._v("Create "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(" with oatpp::web::protocol::http::outgoing::DtoBody. ")],1)])])])])]),t._v(" "),s("h3",{attrs:{id:"responsefactory-createresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responsefactory-createresponse"}},[t._v("#")]),t._v(" ResponseFactory::createResponse")]),t._v(" "),s("ol",[s("li",[t._v("Create "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(" with "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/BufferBody/#bufferbody"}},[t._v("oatpp::web::protocol::http::outgoing::BufferBody")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" status - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" text - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1),t._v(" "),s("li",[t._v("Create "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(" with oatpp::web::protocol::http::outgoing::DtoBody. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" status - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(". ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" dto - see "),s("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object (DTO)"),s("OutboundLink")],1),t._v(". ")]),s("li",[s("strong",[t._v("@param")]),t._v(" objectMapper - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])],1)])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/261.da41a171.js b/docs/.vuepress/dist/assets/js/261.da41a171.js deleted file mode 100644 index 7a4f764c7..000000000 --- a/docs/.vuepress/dist/assets/js/261.da41a171.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[261],{632:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"streamingbody-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-hpp"}},[t._v("#")]),t._v(" StreamingBody.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/outgoing/StreamingBody.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/outgoing/StreamingBody.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/protocol/http/outgoing/StreamingBody.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"streamingbody"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody"}},[t._v("#")]),t._v(" StreamingBody")]),t._v(" "),e("p",[t._v("Abstract body for streaming data.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" outgoing "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StreamingBody")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Body "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#streamingbody-streamingbody"}},[t._v("StreamingBody")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#streamingbody-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Proxy method to readCallback::read().")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#streamingbody-declareheaders"}},[t._v("declareHeaders")])]),t._v(" "),e("td",[t._v("Override this method to declare additional headers.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#streamingbody-getknowndata"}},[t._v("getKnownData")])]),t._v(" "),e("td",[t._v("Pointer to the body known data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#streamingbody-getknownsize"}},[t._v("getKnownSize")])]),t._v(" "),e("td",[t._v("Return known size of the body.")])])])]),t._v(" "),e("h3",{attrs:{id:"streamingbody-streamingbody"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-streamingbody"}},[t._v("#")]),t._v(" StreamingBody::StreamingBody")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" readCallback ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("StreamingBody")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ReadCallback"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" readCallback"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"streamingbody-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-read"}},[t._v("#")]),t._v(" StreamingBody::read")]),t._v(" "),e("p",[t._v("Proxy method to readCallback::read(). "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buffer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"streamingbody-declareheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-declareheaders"}},[t._v("#")]),t._v(" StreamingBody::declareHeaders")]),t._v(" "),e("p",[t._v("Override this method to declare additional headers. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("declareHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"streamingbody-getknowndata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-getknowndata"}},[t._v("#")]),t._v(" StreamingBody::getKnownData")]),t._v(" "),e("p",[t._v("Pointer to the body known data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("nullptr")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"streamingbody-getknownsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#streamingbody-getknownsize"}},[t._v("#")]),t._v(" StreamingBody::getKnownSize")]),t._v(" "),e("p",[t._v("Return known size of the body. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("-1")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getKnownSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/262.40b8de08.js b/docs/.vuepress/dist/assets/js/262.40b8de08.js deleted file mode 100644 index 0f1532c11..000000000 --- a/docs/.vuepress/dist/assets/js/262.40b8de08.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[262],{633:function(t,s,a){"use strict";a.r(s);var e=a(42),o=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"communicationutils-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationutils-hpp"}},[t._v("#")]),t._v(" CommunicationUtils.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/protocol/http/utils/CommunicationUtils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/protocol/http/utils/CommunicationUtils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/protocol/http/utils/CommunicationUtils.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"communicationutils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationutils"}},[t._v("#")]),t._v(" CommunicationUtils")]),t._v(" "),a("p",[t._v("Helper class for communication utils.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protocol "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" http "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" utils "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CommunicationUtils")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#communicationutils-considerconnectionstate"}},[t._v("considerConnectionState")])]),t._v(" "),a("td",[t._v("Consider keep connection alive taking into account request headers, response headers and protocol version."),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"communicationutils-considerconnectionstate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communicationutils-considerconnectionstate"}},[t._v("#")]),t._v(" CommunicationUtils::considerConnectionState")]),t._v(" "),a("p",[t._v("Consider keep connection alive taking into account request headers, response headers and protocol version."),a("br"),t._v(" Corresponding header will be set to response if not existed before. "),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" request - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")])],1),a("li",[a("strong",[t._v("@param")]),t._v(" response - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")])],1),a("li",[a("strong",[t._v("@param")]),t._v(" connectionState ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("considerConnectionState")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ConnectionState"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionState"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/263.15c602ab.js b/docs/.vuepress/dist/assets/js/263.15c602ab.js deleted file mode 100644 index 25adb4c18..000000000 --- a/docs/.vuepress/dist/assets/js/263.15c602ab.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[263],{635:function(t,s,e){"use strict";e.r(s);var a=e(42),r=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"asynchttpconnectionhandler-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-hpp"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/AsyncHttpConnectionHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/AsyncHttpConnectionHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/server/AsyncHttpConnectionHandler.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"asynchttpconnectionhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler")]),t._v(" "),e("p",[t._v("Asynchronous "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(" for handling http communication.")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncHttpConnectionHandler")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TaskProcessingListener "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynchttpconnectionhandler-asynchttpconnectionhandler"}},[t._v("AsyncHttpConnectionHandler")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynchttpconnectionhandler-addrequestinterceptor"}},[t._v("addRequestInterceptor")])]),t._v(" "),e("td",[t._v("Add request interceptor. Request interceptors are called before routing happens.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynchttpconnectionhandler-addresponseinterceptor"}},[t._v("addResponseInterceptor")])]),t._v(" "),e("td",[t._v("Add response interceptor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynchttpconnectionhandler-stop"}},[t._v("stop")])]),t._v(" "),e("td",[t._v("Will call m_executor.stop()")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynchttpconnectionhandler-getconnectionscount"}},[t._v("getConnectionsCount")])]),t._v(" "),e("td",[t._v("Get connections count.")])])])]),t._v(" "),e("h3",{attrs:{id:"asynchttpconnectionhandler-asynchttpconnectionhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-asynchttpconnectionhandler"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler::AsyncHttpConnectionHandler")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" components - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-components"}},[t._v("oatpp::web::server::HttpProcessor::Components")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" threadCount - number of threads. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 threadCount "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("VALUE_SUGGESTED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" components - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-components"}},[t._v("oatpp::web::server::HttpProcessor::Components")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" executor - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" router - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" threadCount - number of threads. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32 threadCount "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("VALUE_SUGGESTED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" threadCount"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" router - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" executor - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" executor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" router - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" config - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-config"}},[t._v("oatpp::web::server::HttpProcessor::Config")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" threadCount - number of threads. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n v_int32 threadCount "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("VALUE_SUGGESTED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" threadCount"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" router - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" config - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-config"}},[t._v("oatpp::web::server::HttpProcessor::Config")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" executor - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/#executor"}},[t._v("oatpp::async::Executor")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AsyncHttpConnectionHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" executor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"asynchttpconnectionhandler-addrequestinterceptor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-addrequestinterceptor"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler::addRequestInterceptor")]),t._v(" "),e("p",[t._v("Add request interceptor. Request interceptors are called before routing happens. If multiple interceptors set then the order of interception is the same as the order of calls to "),e("code",[t._v("addRequestInterceptor")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" interceptor - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRequestInterceptor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("interceptor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestInterceptor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interceptor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"asynchttpconnectionhandler-addresponseinterceptor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-addresponseinterceptor"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler::addResponseInterceptor")]),t._v(" "),e("p",[t._v("Add response interceptor. If multiple interceptors set then the order of interception is the same as the order of calls to "),e("code",[t._v("addResponseInterceptor")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" interceptor - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addResponseInterceptor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("interceptor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResponseInterceptor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interceptor"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"asynchttpconnectionhandler-stop"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-stop"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler::stop")]),t._v(" "),e("p",[t._v("Will call m_executor.stop()")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"asynchttpconnectionhandler-getconnectionscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynchttpconnectionhandler-getconnectionscount"}},[t._v("#")]),t._v(" AsyncHttpConnectionHandler::getConnectionsCount")]),t._v(" "),e("p",[t._v("Get connections count. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_uint64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionsCount")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/264.74d2cc93.js b/docs/.vuepress/dist/assets/js/264.74d2cc93.js deleted file mode 100644 index 5f33586cf..000000000 --- a/docs/.vuepress/dist/assets/js/264.74d2cc93.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[264],{636:function(t,e,r){"use strict";r.r(e);var a=r(42),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"httpconnectionhandler-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-hpp"}},[t._v("#")]),t._v(" HttpConnectionHandler.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/HttpConnectionHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/HttpConnectionHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"httpconnectionhandler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler"}},[t._v("#")]),t._v(" HttpConnectionHandler")]),t._v(" "),r("p",[t._v("Simple ConnectionHandler ("),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler"}},[t._v("oatpp::network::ConnectionHandler")]),t._v(") for handling HTTP communication. "),r("br"),t._v(" Will create one thread per each connection to handle communication.")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpConnectionHandler")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" HttpProcessor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TaskProcessingListener "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-httpconnectionhandler"}},[t._v("HttpConnectionHandler")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Constructor. ")]),r("li",[t._v("Constructor. ")]),r("li",[t._v("Constructor. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Create shared HttpConnectionHandler.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-seterrorhandler"}},[t._v("setErrorHandler")])]),t._v(" "),r("td",[t._v("Set root error handler for all requests coming through this Connection Handler.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-addrequestinterceptor"}},[t._v("addRequestInterceptor")])]),t._v(" "),r("td",[t._v("Add request interceptor. Request interceptors are called before routing happens.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-addresponseinterceptor"}},[t._v("addResponseInterceptor")])]),t._v(" "),r("td",[t._v("Add response interceptor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-handleconnection"}},[t._v("handleConnection")])]),t._v(" "),r("td",[t._v("Implementation of "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(".")],1)]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Tell all worker threads to exit when done.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("v_uint64")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#httpconnectionhandler-getconnectionscount"}},[t._v("getConnectionsCount")])]),t._v(" "),r("td",[t._v("Get connections count.")])])])]),t._v(" "),r("h3",{attrs:{id:"httpconnectionhandler-httpconnectionhandler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-httpconnectionhandler"}},[t._v("#")]),t._v(" HttpConnectionHandler::HttpConnectionHandler")]),t._v(" "),r("ol",[r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" components - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-components"}},[t._v("oatpp::web::server::HttpProcessor::Components")]),t._v(". ")],1)]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpConnectionHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" router - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1)]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpConnectionHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpConnectionHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" router - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-config"}},[t._v("oatpp::web::server::HttpProcessor::Config")]),t._v(". ")],1)]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpConnectionHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpConnectionHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"httpconnectionhandler-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-createshared"}},[t._v("#")]),t._v(" HttpConnectionHandler::createShared")]),t._v(" "),r("p",[t._v("Create shared HttpConnectionHandler. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" router - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to HttpConnectionHandler. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpConnectionHandler"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-seterrorhandler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-seterrorhandler"}},[t._v("#")]),t._v(" HttpConnectionHandler::setErrorHandler")]),t._v(" "),r("p",[t._v("Set root error handler for all requests coming through this Connection Handler. All unhandled errors will be handled by this error handler. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" errorHandler - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/ErrorHandler/#errorhandler"}},[t._v("oatpp::web::server::handler::ErrorHandler")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("setErrorHandler")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ErrorHandler"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorHandler"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-addrequestinterceptor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-addrequestinterceptor"}},[t._v("#")]),t._v(" HttpConnectionHandler::addRequestInterceptor")]),t._v(" "),r("p",[t._v("Add request interceptor. Request interceptors are called before routing happens. If multiple interceptors set then the order of interception is the same as the order of calls to "),r("code",[t._v("addRequestInterceptor")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" interceptor - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRequestInterceptor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("interceptor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestInterceptor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interceptor"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-addresponseinterceptor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-addresponseinterceptor"}},[t._v("#")]),t._v(" HttpConnectionHandler::addResponseInterceptor")]),t._v(" "),r("p",[t._v("Add response interceptor. If multiple interceptors set then the order of interception is the same as the order of calls to "),r("code",[t._v("addResponseInterceptor")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" interceptor - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("addResponseInterceptor")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("interceptor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResponseInterceptor"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interceptor"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-handleconnection"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-handleconnection"}},[t._v("#")]),t._v(" HttpConnectionHandler::handleConnection")]),t._v(" "),r("p",[t._v("Implementation of "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionHandler/#connectionhandler-handleconnection"}},[t._v("oatpp::network::ConnectionHandler::handleConnection()")]),t._v(". "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" connection - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(" representing connection. ")],1)])],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleConnection")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-stop"}},[t._v("#")]),t._v(" HttpConnectionHandler::stop")]),t._v(" "),r("p",[t._v("Tell all worker threads to exit when done.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"httpconnectionhandler-getconnectionscount"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#httpconnectionhandler-getconnectionscount"}},[t._v("#")]),t._v(" HttpConnectionHandler::getConnectionsCount")]),t._v(" "),r("p",[t._v("Get connections count. "),r("ul",[r("li",[r("strong",[t._v("@return")])])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("v_uint64 "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnectionsCount")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/265.be4944a4.js b/docs/.vuepress/dist/assets/js/265.be4944a4.js deleted file mode 100644 index 67f9511aa..000000000 --- a/docs/.vuepress/dist/assets/js/265.be4944a4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[265],{637:function(t,s,e){"use strict";e.r(s);var r=e(42),a=Object(r.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"httpprocessor-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-hpp"}},[t._v("#")]),t._v(" HttpProcessor.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/HttpProcessor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/HttpProcessor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/server/HttpProcessor.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"httpprocessor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor"}},[t._v("#")]),t._v(" HttpProcessor")]),t._v(" "),e("p",[t._v("HttpProcessor. Helper class to handle HTTP processing.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"httpprocessor-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-config"}},[t._v("#")]),t._v(" HttpProcessor::Config")]),t._v(" "),e("p",[t._v("Resource config per connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-config-headersinbufferinitial"}},[t._v("headersInBufferInitial")])]),t._v(" "),e("td",[t._v("Buffer used to read headers in request. Initial size of the buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-config-headersoutbufferinitial"}},[t._v("headersOutBufferInitial")])]),t._v(" "),e("td",[t._v("Buffer used to write headers in response. Initial size of the buffer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-config-headersreaderchunksize"}},[t._v("headersReaderChunkSize")])]),t._v(" "),e("td",[t._v("Size of the chunk used for iterative-read of headers.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-config-headersreadermaxsize"}},[t._v("headersReaderMaxSize")])]),t._v(" "),e("td",[t._v("Maximum allowed size of requests headers. The overall size of all headers in the request.")])])])]),t._v(" "),e("h3",{attrs:{id:"httpprocessor-config-headersinbufferinitial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-config-headersinbufferinitial"}},[t._v("#")]),t._v(" HttpProcessor::Config::headersInBufferInitial")]),t._v(" "),e("p",[t._v("Buffer used to read headers in request. Initial size of the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size headersInBufferInitial "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),t._v("\n")])])]),e("h3",{attrs:{id:"httpprocessor-config-headersoutbufferinitial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-config-headersoutbufferinitial"}},[t._v("#")]),t._v(" HttpProcessor::Config::headersOutBufferInitial")]),t._v(" "),e("p",[t._v("Buffer used to write headers in response. Initial size of the buffer.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size headersOutBufferInitial "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),t._v("\n")])])]),e("h3",{attrs:{id:"httpprocessor-config-headersreaderchunksize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-config-headersreaderchunksize"}},[t._v("#")]),t._v(" HttpProcessor::Config::headersReaderChunkSize")]),t._v(" "),e("p",[t._v("Size of the chunk used for iterative-read of headers.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size headersReaderChunkSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),t._v("\n")])])]),e("h3",{attrs:{id:"httpprocessor-config-headersreadermaxsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-config-headersreadermaxsize"}},[t._v("#")]),t._v(" HttpProcessor::Config::headersReaderMaxSize")]),t._v(" "),e("p",[t._v("Maximum allowed size of requests headers. The overall size of all headers in the request.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size headersReaderMaxSize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4096")]),t._v("\n")])])]),e("h2",{attrs:{id:"httpprocessor-components"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components"}},[t._v("#")]),t._v(" HttpProcessor::Components")]),t._v(" "),e("p",[t._v("Collection of components needed to serve http-connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Components")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-router"}},[t._v("router")])]),t._v(" "),e("td",[t._v("Router to route incoming requests. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-contentencodingproviders"}},[t._v("contentEncodingProviders")])]),t._v(" "),e("td",[t._v("Content-encoding providers. oatpp::web::protocol::encoding::ProviderCollection.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-bodydecoder"}},[t._v("bodyDecoder")])]),t._v(" "),e("td",[t._v("Body decoder. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-errorhandler"}},[t._v("errorHandler")])]),t._v(" "),e("td",[t._v("Error handler. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/ErrorHandler/#errorhandler"}},[t._v("oatpp::web::server::handler::ErrorHandler")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("RequestInterceptors")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-requestinterceptors"}},[t._v("requestInterceptors")])]),t._v(" "),e("td",[t._v("Collection of request interceptors. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("ResponseInterceptors")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-responseinterceptors"}},[t._v("responseInterceptors")])]),t._v(" "),e("td",[t._v("Collection of request interceptors. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/#responseinterceptor"}},[t._v("oatpp::web::server::interceptor::ResponseInterceptor")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-config"}},[t._v("config")])]),t._v(" "),e("td",[t._v("Resource allocation config. "),e("a",{attrs:{href:"#httpprocessor-config"}},[t._v("HttpProcessor::Config")]),t._v(".")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-components-components"}},[t._v("Components")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])])])]),t._v(" "),e("h3",{attrs:{id:"httpprocessor-components-router"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-router"}},[t._v("#")]),t._v(" HttpProcessor::Components::router")]),t._v(" "),e("p",[t._v("Router to route incoming requests. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" router\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-contentencodingproviders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-contentencodingproviders"}},[t._v("#")]),t._v(" HttpProcessor::Components::contentEncodingProviders")]),t._v(" "),e("p",[t._v("Content-encoding providers. oatpp::web::protocol::encoding::ProviderCollection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProviderCollection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" contentEncodingProviders\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-bodydecoder"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-bodydecoder"}},[t._v("#")]),t._v(" HttpProcessor::Components::bodyDecoder")]),t._v(" "),e("p",[t._v("Body decoder. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/BodyDecoder/#bodydecoder"}},[t._v("oatpp::web::protocol::http::incoming::BodyDecoder")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" bodyDecoder\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-errorhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-errorhandler"}},[t._v("#")]),t._v(" HttpProcessor::Components::errorHandler")]),t._v(" "),e("p",[t._v("Error handler. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/ErrorHandler/#errorhandler"}},[t._v("oatpp::web::server::handler::ErrorHandler")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ErrorHandler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" errorHandler\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-requestinterceptors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-requestinterceptors"}},[t._v("#")]),t._v(" HttpProcessor::Components::requestInterceptors")]),t._v(" "),e("p",[t._v("Collection of request interceptors. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/RequestInterceptor/#requestinterceptor"}},[t._v("oatpp::web::server::interceptor::RequestInterceptor")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("RequestInterceptors requestInterceptors\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-responseinterceptors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-responseinterceptors"}},[t._v("#")]),t._v(" HttpProcessor::Components::responseInterceptors")]),t._v(" "),e("p",[t._v("Collection of request interceptors. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/interceptor/ResponseInterceptor/#responseinterceptor"}},[t._v("oatpp::web::server::interceptor::ResponseInterceptor")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("ResponseInterceptors responseInterceptors\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-config"}},[t._v("#")]),t._v(" HttpProcessor::Components::config")]),t._v(" "),e("p",[t._v("Resource allocation config. "),e("a",{attrs:{href:"#httpprocessor-config"}},[t._v("HttpProcessor::Config")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" config\n")])])]),e("h3",{attrs:{id:"httpprocessor-components-components"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-components-components"}},[t._v("#")]),t._v(" HttpProcessor::Components::Components")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pRouter ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pContentEncodingProviders ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pBodyDecoder ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pErrorHandler ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pRequestInterceptors ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pConfig ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Components")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pRouter"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProviderCollection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pContentEncodingProviders"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BodyDecoder"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pBodyDecoder"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ErrorHandler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pErrorHandler"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" RequestInterceptors"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pRequestInterceptors"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ResponseInterceptors"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pResponseInterceptors"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pRouter ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Components")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pRouter"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pRouter ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pConfig ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Components")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pRouter"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h2",{attrs:{id:"httpprocessor-taskprocessinglistener"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-taskprocessinglistener"}},[t._v("#")]),t._v(" HttpProcessor::TaskProcessingListener")]),t._v(" "),e("p",[t._v("Listener of the connection processing task.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TaskProcessingListener")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"httpprocessor-task"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-task"}},[t._v("#")]),t._v(" HttpProcessor::Task")]),t._v(" "),e("p",[t._v("Connection serving task. "),e("br"),t._v(" Usege example: "),e("br"),t._v(" "),e("code",[t._v("std::thread thread(HttpProcessor::Task::run, HttpProcessor::Task(components, connection));")])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Task")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("Task&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-task-operator"}},[t._v("operator")])]),t._v(" "),e("td",[t._v("Move-Assignment to correctly count tasks. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" t ")]),e("li",[e("strong",[t._v("@return")])])])])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-task-task"}},[t._v("Task")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Move-Constructor to correclty count tasks; ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-task-~task"}},[t._v("~Task")])]),t._v(" "),e("td",[t._v("Destructor, needed for counting.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-task-run"}},[t._v("run")])]),t._v(" "),e("td",[t._v("Run loop.")])])])]),t._v(" "),e("h3",{attrs:{id:"httpprocessor-task-operator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-task-operator"}},[t._v("#")]),t._v(" HttpProcessor::Task::operator")]),t._v(" "),e("p",[t._v("Move-Assignment to correctly count tasks. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" t ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Task "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("operator")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Task "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"httpprocessor-task-task"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-task-task"}},[t._v("#")]),t._v(" HttpProcessor::Task::Task")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" components - "),e("a",{attrs:{href:"#httpprocessor-components"}},[t._v("HttpProcessor::Components")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Task")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n TaskProcessingListener"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" taskListener"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Move-Constructor to correclty count tasks;"),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Task")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Task "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("other"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"httpprocessor-task-task-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-task-task-2"}},[t._v("#")]),t._v(" HttpProcessor::Task::~Task")]),t._v(" "),e("p",[t._v("Destructor, needed for counting.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Task")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"httpprocessor-task-run"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-task-run"}},[t._v("#")]),t._v(" HttpProcessor::Task::run")]),t._v(" "),e("p",[t._v("Run loop.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"httpprocessor-coroutine"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-coroutine"}},[t._v("#")]),t._v(" HttpProcessor::Coroutine")]),t._v(" "),e("p",[t._v("Connection serving coroutiner - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutine"}},[t._v("oatpp::async::Coroutine")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpProcessor")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Coroutine")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpProcessor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#httpprocessor-coroutine-coroutine"}},[t._v("Coroutine")])]),t._v(" "),e("td",[t._v("Constructor.")])])])]),t._v(" "),e("h3",{attrs:{id:"httpprocessor-coroutine-coroutine"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#httpprocessor-coroutine-coroutine"}},[t._v("#")]),t._v(" HttpProcessor::Coroutine::Coroutine")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" components - "),e("a",{attrs:{href:"#httpprocessor-components"}},[t._v("HttpProcessor::Components")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" connection - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Coroutine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n TaskProcessingListener"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" taskListener"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/266.c7488105.js b/docs/.vuepress/dist/assets/js/266.c7488105.js deleted file mode 100644 index 2693e66c4..000000000 --- a/docs/.vuepress/dist/assets/js/266.c7488105.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[266],{638:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"httprequesthandler-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-hpp"}},[t._v("#")]),t._v(" HttpRequestHandler.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/HttpRequestHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/HttpRequestHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/server/HttpRequestHandler.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"httprequesthandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler"}},[t._v("#")]),t._v(" HttpRequestHandler")]),t._v(" "),a("p",[t._v("HTTP request handler.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpRequestHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::Status")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-status"}},[t._v("Status")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::Header")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-header"}},[t._v("Header")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::Headers")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-headers"}},[t._v("Headers")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::QueryParams")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-queryparams"}},[t._v("QueryParams")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#queryparams"}},[t._v("oatpp::web::protocol::http::QueryParams")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::incoming::Request")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-incomingrequest"}},[t._v("IncomingRequest")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::outgoing::Response")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-outgoingresponse"}},[t._v("OutgoingResponse")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-responsefactory"}},[t._v("ResponseFactory")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/#responsefactory"}},[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::protocol::http::HttpError")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-httperror"}},[t._v("HttpError")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#httperror"}},[t._v("oatpp::web::protocol::http::HttpError")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-handle"}},[t._v("handle")])]),t._v(" "),a("td",[t._v("Handle incoming http request. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-handleasync"}},[t._v("handleAsync")])]),t._v(" "),a("td",[t._v("Handle incoming http request in Asynchronous manner. "),a("br")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprequesthandler-~httprequesthandler"}},[t._v("~HttpRequestHandler")])]),t._v(" "),a("td",[t._v("You have to provide a definition for destructors, otherwise its undefined behaviour.")])])])]),t._v(" "),a("h3",{attrs:{id:"httprequesthandler-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-status"}},[t._v("#")]),t._v(" HttpRequestHandler::Status")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status Status\n")])])]),a("h3",{attrs:{id:"httprequesthandler-header"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-header"}},[t._v("#")]),t._v(" HttpRequestHandler::Header")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header Header\n")])])]),a("h3",{attrs:{id:"httprequesthandler-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-headers"}},[t._v("#")]),t._v(" HttpRequestHandler::Headers")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),a("h3",{attrs:{id:"httprequesthandler-queryparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-queryparams"}},[t._v("#")]),t._v(" HttpRequestHandler::QueryParams")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#queryparams"}},[t._v("oatpp::web::protocol::http::QueryParams")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("QueryParams QueryParams\n")])])]),a("h3",{attrs:{id:"httprequesthandler-incomingrequest"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-incomingrequest"}},[t._v("#")]),t._v(" HttpRequestHandler::IncomingRequest")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request IncomingRequest\n")])])]),a("h3",{attrs:{id:"httprequesthandler-outgoingresponse"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-outgoingresponse"}},[t._v("#")]),t._v(" HttpRequestHandler::OutgoingResponse")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response OutgoingResponse\n")])])]),a("h3",{attrs:{id:"httprequesthandler-responsefactory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-responsefactory"}},[t._v("#")]),t._v(" HttpRequestHandler::ResponseFactory")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/#responsefactory"}},[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResponseFactory ResponseFactory\n")])])]),a("h3",{attrs:{id:"httprequesthandler-httperror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-httperror"}},[t._v("#")]),t._v(" HttpRequestHandler::HttpError")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#httperror"}},[t._v("oatpp::web::protocol::http::HttpError")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpError HttpError\n")])])]),a("h3",{attrs:{id:"httprequesthandler-handle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-handle"}},[t._v("#")]),t._v(" HttpRequestHandler::handle")]),t._v(" "),a("p",[t._v("Handle incoming http request. "),a("br"),t._v(" "),a("em",[t._v("Implement this method.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" request - incoming http request. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - outgoing http response. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httprequesthandler-handleasync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-handleasync"}},[t._v("#")]),t._v(" HttpRequestHandler::handleAsync")]),t._v(" "),a("p",[t._v("Handle incoming http request in Asynchronous manner. "),a("br"),t._v(" "),a("em",[t._v("Implement this method.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" request - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httprequesthandler-httprequesthandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprequesthandler-httprequesthandler"}},[t._v("#")]),t._v(" HttpRequestHandler::~HttpRequestHandler")]),t._v(" "),a("p",[t._v("You have to provide a definition for destructors, otherwise its undefined behaviour.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpRequestHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/267.d8c064fb.js b/docs/.vuepress/dist/assets/js/267.d8c064fb.js deleted file mode 100644 index 8c65cf2a0..000000000 --- a/docs/.vuepress/dist/assets/js/267.d8c064fb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[267],{639:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"httprouter-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprouter-hpp"}},[t._v("#")]),t._v(" HttpRouter.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/HttpRouter.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/HttpRouter.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/server/HttpRouter.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"httproutertemplate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate"}},[t._v("#")]),t._v(" HttpRouterTemplate")]),t._v(" "),a("p",[t._v("HttpRouter is responsible for routing http requests by method and path-pattern.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" RouterEndpoint"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpRouterTemplate")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("data::share::StringKeyLabel")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-stringkeylabel"}},[t._v("StringKeyLabel")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("web::url::mapping::Router")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-branchrouter"}},[t._v("BranchRouter")])]),t._v(" "),a("td",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/#router"}},[t._v("oatpp::web::url::mapping::Router")])],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::unordered_map>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-branchmap"}},[t._v("BranchMap")])]),t._v(" "),a("td",[t._v("Http method to "),a("a",{attrs:{href:"#httprouter-branchrouter"}},[t._v("HttpRouter::BranchRouter")]),t._v(' map. Meaning that for each http method like ["GET", "POST", ...] there is a separate '),a("a",{attrs:{href:"#httprouter-branchrouter"}},[t._v("HttpRouter::BranchRouter")]),t._v(".")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-httproutertemplate"}},[t._v("HttpRouterTemplate")])]),t._v(" "),a("td",[t._v("Default Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared HttpRouter.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-route"}},[t._v("route")])]),t._v(" "),a("td",[t._v("Route URL to Endpoint by method, and pathPattern.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("BranchRouter::Route")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-getroute"}},[t._v("getRoute")])]),t._v(" "),a("td",[t._v("Resolve http method and path to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/#router-route"}},[t._v("oatpp::web::url::mapping::Router::Route")])],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httproutertemplate-logroutermappings"}},[t._v("logRouterMappings")])]),t._v(" "),a("td",[t._v("Print out all router mapping.")])])])]),t._v(" "),a("h3",{attrs:{id:"httproutertemplate-stringkeylabel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-stringkeylabel"}},[t._v("#")]),t._v(" HttpRouterTemplate::StringKeyLabel")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel StringKeyLabel\n")])])]),a("h3",{attrs:{id:"httproutertemplate-branchrouter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-branchrouter"}},[t._v("#")]),t._v(" HttpRouterTemplate::BranchRouter")]),t._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/#router"}},[t._v("oatpp::web::url::mapping::Router")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Router"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RouterEndpoint"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" BranchRouter\n")])])]),a("h3",{attrs:{id:"httproutertemplate-branchmap"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-branchmap"}},[t._v("#")]),t._v(" HttpRouterTemplate::BranchMap")]),t._v(" "),a("p",[t._v("Http method to "),a("a",{attrs:{href:"#httprouter-branchrouter"}},[t._v("HttpRouter::BranchRouter")]),t._v(' map. Meaning that for each http method like ["GET", "POST", ...] there is a separate '),a("a",{attrs:{href:"#httprouter-branchrouter"}},[t._v("HttpRouter::BranchRouter")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BranchRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" BranchMap\n")])])]),a("h3",{attrs:{id:"httproutertemplate-httproutertemplate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-httproutertemplate"}},[t._v("#")]),t._v(" HttpRouterTemplate::HttpRouterTemplate")]),t._v(" "),a("p",[t._v("Default Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("HttpRouterTemplate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"httproutertemplate-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-createshared"}},[t._v("#")]),t._v(" HttpRouterTemplate::createShared")]),t._v(" "),a("p",[t._v("Create shared HttpRouter. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to HttpRouter. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouterTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httproutertemplate-route"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-route"}},[t._v("#")]),t._v(" HttpRouterTemplate::route")]),t._v(" "),a("p",[t._v("Route URL to Endpoint by method, and pathPattern. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' method - http method like ["GET", "POST", etc.]. ')]),a("li",[a("strong",[t._v("@param")]),t._v(" pathPattern - url path pattern. ex.: "),a("code",[t._v('"/path/to/resource/with/{param1}/{param2}"')]),t._v(". ")]),a("li",[a("strong",[t._v("@param")]),t._v(" endpoint - router endpoint. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("route")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pathPattern"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" RouterEndpoint"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpoint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httproutertemplate-getroute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-getroute"}},[t._v("#")]),t._v(" HttpRouterTemplate::getRoute")]),t._v(" "),a("p",[t._v("Resolve http method and path to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/#router-route"}},[t._v("oatpp::web::url::mapping::Router::Route")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(' method - http method like ["GET", "POST", etc.]. ')]),a("li",[a("strong",[t._v("@param")]),t._v(' url - url path. "Path" part of url only. ')]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/url/mapping/Router/#router-route"}},[t._v("oatpp::web::url::mapping::Router::Route")]),t._v(". ")],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" BranchRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Route "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRoute")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" method"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httproutertemplate-logroutermappings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httproutertemplate-logroutermappings"}},[t._v("#")]),t._v(" HttpRouterTemplate::logRouterMappings")]),t._v(" "),a("p",[t._v("Print out all router mapping.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("logRouterMappings")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"httprouter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprouter"}},[t._v("#")]),t._v(" HttpRouter")]),t._v(" "),a("p",[t._v("Default HttpRouter.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpRouter")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" HttpRouterTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRequestHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprouter-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared HttpRouter.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#httprouter-addcontroller"}},[t._v("addController")])]),t._v(" "),a("td",[t._v("Add controller and route its' endpoints.")])])])]),t._v(" "),a("h3",{attrs:{id:"httprouter-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprouter-createshared"}},[t._v("#")]),t._v(" HttpRouter::createShared")]),t._v(" "),a("p",[t._v("Create shared HttpRouter. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"httprouter-addcontroller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#httprouter-addcontroller"}},[t._v("#")]),t._v(" HttpRouter::addController")]),t._v(" "),a("p",[t._v("Add controller and route its' endpoints. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" controller ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to the controller added. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" controller"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/268.98f93047.js b/docs/.vuepress/dist/assets/js/268.98f93047.js deleted file mode 100644 index ecb4cdd26..000000000 --- a/docs/.vuepress/dist/assets/js/268.98f93047.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[268],{641:function(t,a,e){"use strict";e.r(a);var r=e(42),o=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"apicontroller-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-hpp"}},[t._v("#")]),t._v(" ApiController.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/api/ApiController.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/api/ApiController.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/server/api/ApiController.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"apicontroller"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller"}},[t._v("#")]),t._v(" ApiController")]),t._v(" "),e("p",[t._v("Class responsible for implementation and management of endpoints."),e("br"),t._v(" For details see "),e("a",{attrs:{href:"https://oatpp.io/docs/components/api-controller/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ApiController"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ApiController")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-responsefactory"}},[t._v("ResponseFactory")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/#responsefactory"}},[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::incoming::Request")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-incomingrequest"}},[t._v("IncomingRequest")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::outgoing::Request")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-outgoingrequest"}},[t._v("OutgoingRequest")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Request/#request"}},[t._v("oatpp::web::protocol::http::outgoing::Request")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::incoming::Response")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-incomingresponse"}},[t._v("IncomingResponse")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::outgoing::Response")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-outgoingresponse"}},[t._v("OutgoingResponse")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Status")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-status"}},[t._v("Status")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Header")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-header"}},[t._v("Header")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::QueryParams")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-queryparams"}},[t._v("QueryParams")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#queryparams"}},[t._v("oatpp::web::protocol::http::QueryParams")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::server::HttpRequestHandler")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-requesthandler"}},[t._v("RequestHandler")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/#httprequesthandler"}},[t._v("oatpp::web::server::HttpRequestHandler")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::server::handler::AuthorizationHandler")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-authorizationhandler"}},[t._v("AuthorizationHandler")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationhandler"}},[t._v("oatpp::web::server::handler::AuthorizationHandler")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::mapping::ObjectMapper")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-objectmapper"}},[t._v("ObjectMapper")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-string"}},[t._v("String")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#string"}},[t._v("oatpp::data::mapping::type::String")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-int8"}},[t._v("Int8")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int8"}},[t._v("oatpp::data::mapping::type::Int8")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-uint8"}},[t._v("UInt8")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint8"}},[t._v("oatpp::data::mapping::type::UInt8")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int16")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-int16"}},[t._v("Int16")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int16"}},[t._v("oatpp::data::mapping::type::Int16")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt16")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-uint16"}},[t._v("UInt16")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint16"}},[t._v("oatpp::data::mapping::type::UInt16")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-int32"}},[t._v("Int32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int32"}},[t._v("oatpp::data::mapping::type::Int32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-uint32"}},[t._v("UInt32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint32"}},[t._v("oatpp::data::mapping::type::UInt32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-int64"}},[t._v("Int64")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int64"}},[t._v("oatpp::data::mapping::type::Int64")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::UInt64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-uint64"}},[t._v("UInt64")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint64"}},[t._v("oatpp::data::mapping::type::UInt64")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Float32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-float32"}},[t._v("Float32")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float32"}},[t._v("oatpp::data::mapping::type::Float32")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Float64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-float64"}},[t._v("Float64")])]),t._v(" "),e("td",[t._v("Convenience typedef for atpp::data::mapping::type::Float64.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Boolean")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-boolean"}},[t._v("Boolean")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#boolean"}},[t._v("oatpp::data::mapping::type::Boolean")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("const Endpoints&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-getendpoints"}},[t._v("getEndpoints")])]),t._v(" "),e("td",[t._v("Get list of Endpoints created via ENDPOINT macro")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-seterrorhandler"}},[t._v("setErrorHandler")])]),t._v(" "),e("td",[t._v("[under discussion]")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-handleerror"}},[t._v("handleError")])]),t._v(" "),e("td",[t._v("[under discussion]")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-setdefaultauthorizationhandler"}},[t._v("setDefaultAuthorizationHandler")])]),t._v(" "),e("td",[t._v("[under discussion]")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-getdefaultauthorizationhandler"}},[t._v("getDefaultAuthorizationHandler")])]),t._v(" "),e("td",[t._v("Get authorization handler.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#apicontroller-handledefaultauthorization"}},[t._v("handleDefaultAuthorization")])]),t._v(" "),e("td",[t._v("[under discussion]")])])])]),t._v(" "),e("h3",{attrs:{id:"apicontroller-responsefactory"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-responsefactory"}},[t._v("#")]),t._v(" ApiController::ResponseFactory")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/ResponseFactory/#responsefactory"}},[t._v("oatpp::web::protocol::http::outgoing::ResponseFactory")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResponseFactory ResponseFactory\n")])])]),e("h3",{attrs:{id:"apicontroller-incomingrequest"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-incomingrequest"}},[t._v("#")]),t._v(" ApiController::IncomingRequest")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request IncomingRequest\n")])])]),e("h3",{attrs:{id:"apicontroller-outgoingrequest"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-outgoingrequest"}},[t._v("#")]),t._v(" ApiController::OutgoingRequest")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Request/#request"}},[t._v("oatpp::web::protocol::http::outgoing::Request")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request OutgoingRequest\n")])])]),e("h3",{attrs:{id:"apicontroller-incomingresponse"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-incomingresponse"}},[t._v("#")]),t._v(" ApiController::IncomingResponse")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/#response"}},[t._v("oatpp::web::protocol::http::incoming::Response")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response IncomingResponse\n")])])]),e("h3",{attrs:{id:"apicontroller-outgoingresponse"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-outgoingresponse"}},[t._v("#")]),t._v(" ApiController::OutgoingResponse")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response OutgoingResponse\n")])])]),e("h3",{attrs:{id:"apicontroller-status"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-status"}},[t._v("#")]),t._v(" ApiController::Status")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status Status\n")])])]),e("h3",{attrs:{id:"apicontroller-header"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-header"}},[t._v("#")]),t._v(" ApiController::Header")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#header"}},[t._v("oatpp::web::protocol::http::Header")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Header Header\n")])])]),e("h3",{attrs:{id:"apicontroller-queryparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-queryparams"}},[t._v("#")]),t._v(" ApiController::QueryParams")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#queryparams"}},[t._v("oatpp::web::protocol::http::QueryParams")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("QueryParams QueryParams\n")])])]),e("h3",{attrs:{id:"apicontroller-requesthandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-requesthandler"}},[t._v("#")]),t._v(" ApiController::RequestHandler")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/#httprequesthandler"}},[t._v("oatpp::web::server::HttpRequestHandler")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestHandler RequestHandler\n")])])]),e("h3",{attrs:{id:"apicontroller-authorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-authorizationhandler"}},[t._v("#")]),t._v(" ApiController::AuthorizationHandler")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationhandler"}},[t._v("oatpp::web::server::handler::AuthorizationHandler")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationHandler AuthorizationHandler\n")])])]),e("h3",{attrs:{id:"apicontroller-objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-objectmapper"}},[t._v("#")]),t._v(" ApiController::ObjectMapper")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper ObjectMapper\n")])])]),e("h3",{attrs:{id:"apicontroller-string"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-string"}},[t._v("#")]),t._v(" ApiController::String")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#string"}},[t._v("oatpp::data::mapping::type::String")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String String\n")])])]),e("h3",{attrs:{id:"apicontroller-int8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-int8"}},[t._v("#")]),t._v(" ApiController::Int8")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int8"}},[t._v("oatpp::data::mapping::type::Int8")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int8 Int8\n")])])]),e("h3",{attrs:{id:"apicontroller-uint8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-uint8"}},[t._v("#")]),t._v(" ApiController::UInt8")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint8"}},[t._v("oatpp::data::mapping::type::UInt8")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt8 UInt8\n")])])]),e("h3",{attrs:{id:"apicontroller-int16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-int16"}},[t._v("#")]),t._v(" ApiController::Int16")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int16"}},[t._v("oatpp::data::mapping::type::Int16")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int16 Int16\n")])])]),e("h3",{attrs:{id:"apicontroller-uint16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-uint16"}},[t._v("#")]),t._v(" ApiController::UInt16")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint16"}},[t._v("oatpp::data::mapping::type::UInt16")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt16 UInt16\n")])])]),e("h3",{attrs:{id:"apicontroller-int32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-int32"}},[t._v("#")]),t._v(" ApiController::Int32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int32"}},[t._v("oatpp::data::mapping::type::Int32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32 Int32\n")])])]),e("h3",{attrs:{id:"apicontroller-uint32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-uint32"}},[t._v("#")]),t._v(" ApiController::UInt32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint32"}},[t._v("oatpp::data::mapping::type::UInt32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt32 UInt32\n")])])]),e("h3",{attrs:{id:"apicontroller-int64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-int64"}},[t._v("#")]),t._v(" ApiController::Int64")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#int64"}},[t._v("oatpp::data::mapping::type::Int64")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int64 Int64\n")])])]),e("h3",{attrs:{id:"apicontroller-uint64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-uint64"}},[t._v("#")]),t._v(" ApiController::UInt64")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#uint64"}},[t._v("oatpp::data::mapping::type::UInt64")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UInt64 UInt64\n")])])]),e("h3",{attrs:{id:"apicontroller-float32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-float32"}},[t._v("#")]),t._v(" ApiController::Float32")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#float32"}},[t._v("oatpp::data::mapping::type::Float32")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float32 Float32\n")])])]),e("h3",{attrs:{id:"apicontroller-float64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-float64"}},[t._v("#")]),t._v(" ApiController::Float64")]),t._v(" "),e("p",[t._v("Convenience typedef for atpp::data::mapping::type::Float64.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Float64 Float64\n")])])]),e("h3",{attrs:{id:"apicontroller-boolean"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-boolean"}},[t._v("#")]),t._v(" ApiController::Boolean")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Primitive/#boolean"}},[t._v("oatpp::data::mapping::type::Boolean")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Boolean Boolean\n")])])]),e("h3",{attrs:{id:"apicontroller-getendpoints"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-getendpoints"}},[t._v("#")]),t._v(" ApiController::getEndpoints")]),t._v(" "),e("p",[t._v("Get list of Endpoints created via ENDPOINT macro")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Endpoints"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEndpoints")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apicontroller-seterrorhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-seterrorhandler"}},[t._v("#")]),t._v(" ApiController::setErrorHandler")]),t._v(" "),e("p",[t._v("[under discussion] Set error handler to handle calls to handleError")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setErrorHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ErrorHandler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorHandler"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apicontroller-handleerror"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-handleerror"}},[t._v("#")]),t._v(" ApiController::handleError")]),t._v(" "),e("p",[t._v("[under discussion] Do not use it directly. This method is under discussion. Currently returns Response created by registered ErrorHandler or returns Response created by DefaultErrorHandler::handleDefaultError Notice: Does not throw the Error anymore, error-response has to be returned by the caller!")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleError")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Status"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"apicontroller-setdefaultauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-setdefaultauthorizationhandler"}},[t._v("#")]),t._v(" ApiController::setDefaultAuthorizationHandler")]),t._v(" "),e("p",[t._v("[under discussion] Set authorization handler to handle calls to handleAuthorization. Must be called before controller is added to a router or swagger-doc if an endpoint uses the AUTHORIZATION macro")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultAuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationHandler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" authorizationHandler"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apicontroller-getdefaultauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-getdefaultauthorizationhandler"}},[t._v("#")]),t._v(" ApiController::getDefaultAuthorizationHandler")]),t._v(" "),e("p",[t._v("Get authorization handler. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationHandler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDefaultAuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"apicontroller-handledefaultauthorization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apicontroller-handledefaultauthorization"}},[t._v("#")]),t._v(" ApiController::handleDefaultAuthorization")]),t._v(" "),e("p",[t._v("[under discussion] Do not use it directly. This method is under discussion. Currently returns AuthorizationObject created by AuthorizationHandler or return DefaultAuthorizationObject by DefaultAuthorizationHandler if AuthorizationHandler is null")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleDefaultAuthorization")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("authHeader"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/269.e801e5df.js b/docs/.vuepress/dist/assets/js/269.e801e5df.js deleted file mode 100644 index 3815da841..000000000 --- a/docs/.vuepress/dist/assets/js/269.e801e5df.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[269],{640:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"endpoint-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-hpp"}},[t._v("#")]),t._v(" Endpoint.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/api/Endpoint.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/api/Endpoint.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/server/api/Endpoint.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"endpoint"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint"}},[t._v("#")]),t._v(" Endpoint")]),t._v(" "),s("p",[t._v("Endpoint - class which holds information about endpoint. It holds API documentation info, and pointer to RequestHandler")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::web::server::HttpRequestHandler")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-requesthandler"}},[t._v("RequestHandler")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/#httprequesthandler"}},[t._v("oatpp::web::server::HttpRequestHandler")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"endpoint-requesthandler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-requesthandler"}},[t._v("#")]),t._v(" Endpoint::RequestHandler")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/#httprequesthandler"}},[t._v("oatpp::web::server::HttpRequestHandler")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestHandler RequestHandler\n")])])]),s("h2",{attrs:{id:"endpoint-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info"}},[t._v("#")]),t._v(" Endpoint::Info")]),t._v(" "),s("p",[t._v("Info holds API documentation information about endpoint")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Endpoint name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-summary"}},[t._v("summary")])]),t._v(" "),s("td",[t._v("Endpoint summary.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Endpoint description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-path"}},[t._v("path")])]),t._v(" "),s("td",[t._v("Endpoint path.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-method"}},[t._v("method")])]),t._v(" "),s("td",[t._v("HTTP method.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-authorization"}},[t._v("authorization")])]),t._v(" "),s("td",[t._v("Authorization.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::Boolean")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-hide"}},[t._v("hide")])]),t._v(" "),s("td",[t._v("Hide endpoint from the documentation.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::list")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-tags"}},[t._v("tags")])]),t._v(" "),s("td",[t._v("Tags to group endpoints in the documentation.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Param")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-body"}},[t._v("body")])]),t._v(" "),s("td",[t._v("Body info.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-bodycontenttype"}},[t._v("bodyContentType")])]),t._v(" "),s("td",[t._v("Body content type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::list")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-consumes"}},[t._v("consumes")])]),t._v(" "),s("td",[t._v("Consumes.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unordered_map>>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-securityrequirements"}},[t._v("securityRequirements")])]),t._v(" "),s("td",[t._v("Security Requirements")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Params")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-headers"}},[t._v("headers")])]),t._v(" "),s("td",[t._v("Headers.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Params")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-pathparams"}},[t._v("pathParams")])]),t._v(" "),s("td",[t._v("Path variables.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Params")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-queryparams"}},[t._v("queryParams")])]),t._v(" "),s("td",[t._v("Query params.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unordered_map")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-responses"}},[t._v("responses")])]),t._v(" "),s("td",[t._v('ResponseCode to {ContentType, Type} mapping. Example responses[Status::CODE_200] = {"application/json", MyDto::ObjectWrapper::Class::getType()};')])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-info"}},[t._v("Info")])]),t._v(" "),s("td",[t._v("Constructor;")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared Info.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("ContentHints&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-addconsumes"}},[t._v("addConsumes")])]),t._v(" "),s("td",[t._v('Add "consumes" info to endpoint.')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("ContentHints&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-addresponse"}},[t._v("addResponse")])]),t._v(" "),s("td",[t._v("Add response info to endpoint")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-addsecurityrequirement"}},[t._v("addSecurityRequirement")])]),t._v(" "),s("td",[t._v("Add security requirement.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-addtag"}},[t._v("addTag")])]),t._v(" "),s("td",[t._v("Add tag.")])])])]),t._v(" "),s("h3",{attrs:{id:"endpoint-info-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-name"}},[t._v("#")]),t._v(" Endpoint::Info::name")]),t._v(" "),s("p",[t._v("Endpoint name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String name\n")])])]),s("h3",{attrs:{id:"endpoint-info-summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-summary"}},[t._v("#")]),t._v(" Endpoint::Info::summary")]),t._v(" "),s("p",[t._v("Endpoint summary.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String summary\n")])])]),s("h3",{attrs:{id:"endpoint-info-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-description"}},[t._v("#")]),t._v(" Endpoint::Info::description")]),t._v(" "),s("p",[t._v("Endpoint description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String description\n")])])]),s("h3",{attrs:{id:"endpoint-info-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-path"}},[t._v("#")]),t._v(" Endpoint::Info::path")]),t._v(" "),s("p",[t._v("Endpoint path.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String path\n")])])]),s("h3",{attrs:{id:"endpoint-info-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-method"}},[t._v("#")]),t._v(" Endpoint::Info::method")]),t._v(" "),s("p",[t._v("HTTP method.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String method\n")])])]),s("h3",{attrs:{id:"endpoint-info-authorization"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-authorization"}},[t._v("#")]),t._v(" Endpoint::Info::authorization")]),t._v(" "),s("p",[t._v("Authorization.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String authorization\n")])])]),s("h3",{attrs:{id:"endpoint-info-hide"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-hide"}},[t._v("#")]),t._v(" Endpoint::Info::hide")]),t._v(" "),s("p",[t._v("Hide endpoint from the documentation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Boolean hide\n")])])]),s("h3",{attrs:{id:"endpoint-info-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-tags"}},[t._v("#")]),t._v(" Endpoint::Info::tags")]),t._v(" "),s("p",[t._v("Tags to group endpoints in the documentation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" tags\n")])])]),s("h3",{attrs:{id:"endpoint-info-body"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-body"}},[t._v("#")]),t._v(" Endpoint::Info::body")]),t._v(" "),s("p",[t._v("Body info.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Param body\n")])])]),s("h3",{attrs:{id:"endpoint-info-bodycontenttype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-bodycontenttype"}},[t._v("#")]),t._v(" Endpoint::Info::bodyContentType")]),t._v(" "),s("p",[t._v("Body content type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String bodyContentType\n")])])]),s("h3",{attrs:{id:"endpoint-info-consumes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-consumes"}},[t._v("#")]),t._v(" Endpoint::Info::consumes")]),t._v(" "),s("p",[t._v("Consumes.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ContentHints"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" consumes\n")])])]),s("h3",{attrs:{id:"endpoint-info-securityrequirements"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-securityrequirements"}},[t._v("#")]),t._v(" Endpoint::Info::securityRequirements")]),t._v(" "),s("p",[t._v("Security Requirements")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" securityRequirements\n")])])]),s("h3",{attrs:{id:"endpoint-info-headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-headers"}},[t._v("#")]),t._v(" Endpoint::Info::headers")]),t._v(" "),s("p",[t._v("Headers.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Params headers\n")])])]),s("h3",{attrs:{id:"endpoint-info-pathparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-pathparams"}},[t._v("#")]),t._v(" Endpoint::Info::pathParams")]),t._v(" "),s("p",[t._v("Path variables.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Params pathParams\n")])])]),s("h3",{attrs:{id:"endpoint-info-queryparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-queryparams"}},[t._v("#")]),t._v(" Endpoint::Info::queryParams")]),t._v(" "),s("p",[t._v("Query params.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Params queryParams\n")])])]),s("h3",{attrs:{id:"endpoint-info-responses"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-responses"}},[t._v("#")]),t._v(" Endpoint::Info::responses")]),t._v(" "),s("p",[t._v('ResponseCode to {ContentType, Type} mapping. Example responses[Status::CODE_200] = {"application/json", MyDto::ObjectWrapper::Class::getType()};')]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ContentHints"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" responses\n")])])]),s("h3",{attrs:{id:"endpoint-info-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-info"}},[t._v("#")]),t._v(" Endpoint::Info::Info")]),t._v(" "),s("p",[t._v("Constructor;")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-createshared"}},[t._v("#")]),t._v(" Endpoint::Info::createShared")]),t._v(" "),s("p",[t._v("Create shared Info. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Info"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-addconsumes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-addconsumes"}},[t._v("#")]),t._v(" Endpoint::Info::addConsumes")]),t._v(" "),s("p",[t._v('Add "consumes" info to endpoint. '),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")]),s("li",[s("strong",[t._v("@param")]),t._v(" contentType ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nContentHints"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addConsumes")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contentType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-addresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-addresponse"}},[t._v("#")]),t._v(" Endpoint::Info::addResponse")]),t._v(" "),s("p",[t._v("Add response info to endpoint "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" Wrapper ")]),s("li",[s("strong",[t._v("@param")]),t._v(" status ")]),s("li",[s("strong",[t._v("@param")]),t._v(" contentType ")]),s("li",[s("strong",[t._v("@param")]),t._v(" responseDescription ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Wrapper")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nContentHints"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contentType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" responseDescription "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-addsecurityrequirement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-addsecurityrequirement"}},[t._v("#")]),t._v(" Endpoint::Info::addSecurityRequirement")]),t._v(" "),s("p",[t._v("Add security requirement. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" requirement ")]),s("li",[s("strong",[t._v("@param")]),t._v(" scopes ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSecurityRequirement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("requirement"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("scopes "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-addtag"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-addtag"}},[t._v("#")]),t._v(" Endpoint::Info::addTag")]),t._v(" "),s("p",[t._v("Add tag. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" tag ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addTag")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tag"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"endpoint-info-param"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-param"}},[t._v("#")]),t._v(" Endpoint::Info::Param")]),t._v(" "),s("p",[t._v("Param holds info about parameter")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Param")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"endpoint-info-contenthints"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-contenthints"}},[t._v("#")]),t._v(" Endpoint::Info::ContentHints")]),t._v(" "),s("p",[t._v("Hints about the response (content-type, schema, description, ...)")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ContentHints")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"endpoint-info-params"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-params"}},[t._v("#")]),t._v(" Endpoint::Info::Params")]),t._v(" "),s("p",[t._v("Parameters container")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Params")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Param&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-params-operator"}},[t._v("operator")])]),t._v(" "),s("td",[t._v("Get or add param by name "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" name ")]),s("li",[s("strong",[t._v("@return")])])])])])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Param&")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#endpoint-info-params-add"}},[t._v("add")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Add parameter name to list order ")]),s("li",[t._v("Add parameter name to list order ")])])])])])]),t._v(" "),s("h3",{attrs:{id:"endpoint-info-params-operator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-params-operator"}},[t._v("#")]),t._v(" Endpoint::Info::Params::operator")]),t._v(" "),s("p",[t._v("Get or add param by name "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" name ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Param"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("operator")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"endpoint-info-params-add"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-info-params-add"}},[t._v("#")]),t._v(" Endpoint::Info::Params::add")]),t._v(" "),s("ol",[s("li",[t._v("Add parameter name to list order "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" name ")]),s("li",[s("strong",[t._v("@return")]),t._v(" new or existing parameter ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("Param"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Add parameter name to list order "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")]),s("li",[s("strong",[t._v("@param")]),t._v(" name ")]),s("li",[s("strong",[t._v("@return")]),t._v(" new or existing parameter ")])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\nParam"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"endpoints"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoints"}},[t._v("#")]),t._v(" Endpoints")]),t._v(" "),s("p",[t._v("Collection of endpoints.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Endpoints")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/27.bd67960f.js b/docs/.vuepress/dist/assets/js/27.bd67960f.js deleted file mode 100644 index 5e5df2b1b..000000000 --- a/docs/.vuepress/dist/assets/js/27.bd67960f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{399:function(t,s,e){"use strict";e.r(s);var a=e(42),n=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"tlsobject-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-hpp"}},[t._v("#")]),t._v(" TLSObject.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/TLSObject.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/TLSObject.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-libressl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-libressl/TLSObject.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"tlsobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject"}},[t._v("#")]),t._v(" TLSObject")]),t._v(" "),e("p",[t._v("Utility object. Used to manage TLS handle "),e("a",{attrs:{href:"#tlsobject-tlshandle"}},[t._v("TLSObject::TLSHandle")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TLSObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-tlsobject"}},[t._v("TLSObject")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-~tlsobject"}},[t._v("~TLSObject")])]),t._v(" "),e("td",[t._v("Non-virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("TLSHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-gettlshandle"}},[t._v("getTLSHandle")])]),t._v(" "),e("td",[t._v("Get underlying TLS handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Type")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-gettype"}},[t._v("getType")])]),t._v(" "),e("td",[t._v("Get type of "),e("code",[t._v("TLSObject")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-getservername"}},[t._v("getServerName")])]),t._v(" "),e("td",[t._v("Get server name - applicable if "),e("code",[t._v("TLSObject::Type == SERVER")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-annul"}},[t._v("annul")])]),t._v(" "),e("td",[t._v("Forget about TLS handle. TLS handle won't be freed on the destruction of TLS Object.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-close"}},[t._v("close")])]),t._v(" "),e("td",[t._v("Call "),e("code",[t._v("tls_close")]),t._v(" and "),e("code",[t._v("tls_free")]),t._v(" on the underlying TLS handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#tlsobject-isclosed"}},[t._v("isClosed")])]),t._v(" "),e("td",[t._v("Check if TLS object was closed.")])])])]),t._v(" "),e("h3",{attrs:{id:"tlsobject-tlsobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-tlsobject"}},[t._v("#")]),t._v(" TLSObject::TLSObject")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tlsHandle ")]),e("li",[e("strong",[t._v("@param")]),t._v(" type ")]),e("li",[e("strong",[t._v("@param")]),t._v(" serverName ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("TLSObject")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("TLSHandle tlsHandle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Type type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serverName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-tlsobject-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-tlsobject-2"}},[t._v("#")]),t._v(" TLSObject::~TLSObject")]),t._v(" "),e("p",[t._v("Non-virtual destructor. Calls "),e("a",{attrs:{href:"#tlsobject-close"}},[t._v("TLSObject::close()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("TLSObject")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-gettlshandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-gettlshandle"}},[t._v("#")]),t._v(" TLSObject::getTLSHandle")]),t._v(" "),e("p",[t._v("Get underlying TLS handle. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("TLSHandle "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTLSHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-gettype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-gettype"}},[t._v("#")]),t._v(" TLSObject::getType")]),t._v(" "),e("p",[t._v("Get type of "),e("code",[t._v("TLSObject")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Type "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-getservername"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-getservername"}},[t._v("#")]),t._v(" TLSObject::getServerName")]),t._v(" "),e("p",[t._v("Get server name - applicable if "),e("code",[t._v("TLSObject::Type == SERVER")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getServerName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-annul"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-annul"}},[t._v("#")]),t._v(" TLSObject::annul")]),t._v(" "),e("p",[t._v("Forget about TLS handle. TLS handle won't be freed on the destruction of TLS Object.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("annul")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-close"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-close"}},[t._v("#")]),t._v(" TLSObject::close")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("tls_close")]),t._v(" and "),e("code",[t._v("tls_free")]),t._v(" on the underlying TLS handle.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("close")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"tlsobject-isclosed"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-isclosed"}},[t._v("#")]),t._v(" TLSObject::isClosed")]),t._v(" "),e("p",[t._v("Check if TLS object was closed. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isClosed")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"tlsobject-type"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-type"}},[t._v("#")]),t._v(" TLSObject::Type")]),t._v(" "),e("p",[t._v("TLSHandle type.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TLSObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"tlsobject-tls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tlsobject-tls"}},[t._v("#")]),t._v(" TLSObject::tls")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("code",[t._v("struct tls*")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TLSObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("tls")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" TLSHandle "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/270.c386b494.js b/docs/.vuepress/dist/assets/js/270.c386b494.js deleted file mode 100644 index dd368dd3f..000000000 --- a/docs/.vuepress/dist/assets/js/270.c386b494.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[270],{642:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"authorizationhandler-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-hpp"}},[t._v("#")]),t._v(" AuthorizationHandler.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/handler/AuthorizationHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/handler/AuthorizationHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/server/handler/AuthorizationHandler.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"authorizationobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationobject"}},[t._v("#")]),t._v(" AuthorizationObject")]),t._v(" "),e("p",[t._v("The AuthorizationObject superclass, all AuthorizationObjects have to extend this class.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AuthorizationObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h2",{attrs:{id:"authorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler"}},[t._v("#")]),t._v(" AuthorizationHandler")]),t._v(" "),e("p",[t._v("Abstract Authorization Handler.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AuthorizationHandler")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::web::server::handler::AuthorizationObject")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-authorizationobject"}},[t._v("AuthorizationObject")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("a",{attrs:{href:"#authorizationobject"}},[t._v("AuthorizationObject")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::BufferOutputStream")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-bufferoutputstream"}},[t._v("BufferOutputStream")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::web::protocol::http::Headers")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-headers"}},[t._v("Headers")])]),t._v(" "),e("td",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-authorizationhandler"}},[t._v("AuthorizationHandler")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-~authorizationhandler"}},[t._v("~AuthorizationHandler")])]),t._v(" "),e("td",[t._v("Default virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("handleAuthorization")])]),t._v(" "),e("td",[t._v("Implement this method! Return nullptr if authorization should be denied.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-renderauthenticateheadervalue"}},[t._v("renderAuthenticateHeaderValue")])]),t._v(" "),e("td",[t._v("Render WWW-Authenicate header value. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-adderrorresponseheaders"}},[t._v("addErrorResponseHeaders")])]),t._v(" "),e("td",[t._v("Add authorization error headers to the headers map. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-getscheme"}},[t._v("getScheme")])]),t._v(" "),e("td",[t._v("Get authorization scheme.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#authorizationhandler-getrealm"}},[t._v("getRealm")])]),t._v(" "),e("td",[t._v("Get authorization realm.")])])])]),t._v(" "),e("h3",{attrs:{id:"authorizationhandler-authorizationobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-authorizationobject"}},[t._v("#")]),t._v(" AuthorizationHandler::AuthorizationObject")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("a",{attrs:{href:"#authorizationobject"}},[t._v("AuthorizationObject")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationObject AuthorizationObject\n")])])]),e("h3",{attrs:{id:"authorizationhandler-bufferoutputstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-bufferoutputstream"}},[t._v("#")]),t._v(" AuthorizationHandler::BufferOutputStream")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream BufferOutputStream\n")])])]),e("h3",{attrs:{id:"authorizationhandler-headers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-headers"}},[t._v("#")]),t._v(" AuthorizationHandler::Headers")]),t._v(" "),e("p",[t._v("Convenience typedef for "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),e("h3",{attrs:{id:"authorizationhandler-authorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-authorizationhandler"}},[t._v("#")]),t._v(" AuthorizationHandler::AuthorizationHandler")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" scheme - authorization type scheme. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" realm - realm. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" scheme"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" realm"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-authorizationhandler-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-authorizationhandler-2"}},[t._v("#")]),t._v(" AuthorizationHandler::~AuthorizationHandler")]),t._v(" "),e("p",[t._v("Default virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("AuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-handleauthorization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("#")]),t._v(" AuthorizationHandler::handleAuthorization")]),t._v(" "),e("p",[t._v("Implement this method! Return nullptr if authorization should be denied. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" header - "),e("code",[t._v("Authorization")]),t._v(" header. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationobject"}},[t._v("oatpp::web::server::handler::AuthorizationObject")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleAuthorization")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" authorizationHeader"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-renderauthenticateheadervalue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-renderauthenticateheadervalue"}},[t._v("#")]),t._v(" AuthorizationHandler::renderAuthenticateHeaderValue")]),t._v(" "),e("p",[t._v("Render WWW-Authenicate header value. "),e("br"),t._v(" Custom Authorization handlers may override this method in order to provide additional information. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("renderAuthenticateHeaderValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("BufferOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-adderrorresponseheaders"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-adderrorresponseheaders"}},[t._v("#")]),t._v(" AuthorizationHandler::addErrorResponseHeaders")]),t._v(" "),e("p",[t._v("Add authorization error headers to the headers map. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" headers - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addErrorResponseHeaders")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Headers"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-getscheme"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-getscheme"}},[t._v("#")]),t._v(" AuthorizationHandler::getScheme")]),t._v(" "),e("p",[t._v("Get authorization scheme. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getScheme")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"authorizationhandler-getrealm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorizationhandler-getrealm"}},[t._v("#")]),t._v(" AuthorizationHandler::getRealm")]),t._v(" "),e("p",[t._v("Get authorization realm. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRealm")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"defaultbasicauthorizationobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultbasicauthorizationobject"}},[t._v("#")]),t._v(" DefaultBasicAuthorizationObject")]),t._v(" "),e("p",[t._v("Default Basic AuthorizationObject - Convenience object to enable Basic-Authorization without the need to implement anything.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultBasicAuthorizationObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AuthorizationObject "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultbasicauthorizationobject-userid"}},[t._v("userId")])]),t._v(" "),e("td",[t._v("User-Id. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultbasicauthorizationobject-password"}},[t._v("password")])]),t._v(" "),e("td",[t._v("Password. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"defaultbasicauthorizationobject-userid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultbasicauthorizationobject-userid"}},[t._v("#")]),t._v(" DefaultBasicAuthorizationObject::userId")]),t._v(" "),e("p",[t._v("User-Id. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String userId\n")])])]),e("h3",{attrs:{id:"defaultbasicauthorizationobject-password"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultbasicauthorizationobject-password"}},[t._v("#")]),t._v(" DefaultBasicAuthorizationObject::password")]),t._v(" "),e("p",[t._v("Password. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String password\n")])])]),e("h2",{attrs:{id:"basicauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basicauthorizationhandler"}},[t._v("#")]),t._v(" BasicAuthorizationHandler")]),t._v(" "),e("p",[t._v("AuthorizationHandler for Authorization Type "),e("code",[t._v("Basic")]),t._v(". "),e("br"),t._v(" See "),e("a",{attrs:{href:"https://tools.ietf.org/html/rfc7617",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 7617"),e("OutboundLink")],1),t._v(". "),e("br"),t._v(" Extend this class to implement Custom Basic Authorization.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BasicAuthorizationHandler")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AuthorizationHandler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#basicauthorizationhandler-basicauthorizationhandler"}},[t._v("BasicAuthorizationHandler")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#basicauthorizationhandler-handleauthorization"}},[t._v("handleAuthorization")])]),t._v(" "),e("td",[t._v("Implementation of "),e("a",{attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("AuthorizationHandler::handleAuthorization()")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#basicauthorizationhandler-authorize"}},[t._v("authorize")])]),t._v(" "),e("td",[t._v("Implement this method! Do the actual authorization here. When not implemented returns "),e("a",{attrs:{href:"#defaultbasicauthorizationobject"}},[t._v("DefaultBasicAuthorizationObject")]),t._v(".")])])])]),t._v(" "),e("h3",{attrs:{id:"basicauthorizationhandler-basicauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basicauthorizationhandler-basicauthorizationhandler"}},[t._v("#")]),t._v(" BasicAuthorizationHandler::BasicAuthorizationHandler")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" realm ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BasicAuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" realm "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"API"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"basicauthorizationhandler-handleauthorization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basicauthorizationhandler-handleauthorization"}},[t._v("#")]),t._v(" BasicAuthorizationHandler::handleAuthorization")]),t._v(" "),e("p",[t._v("Implementation of "),e("a",{attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("AuthorizationHandler::handleAuthorization()")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" header - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationobject"}},[t._v("oatpp::web::server::handler::AuthorizationObject")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleAuthorization")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("header"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"basicauthorizationhandler-authorize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basicauthorizationhandler-authorize"}},[t._v("#")]),t._v(" BasicAuthorizationHandler::authorize")]),t._v(" "),e("p",[t._v("Implement this method! Do the actual authorization here. When not implemented returns "),e("a",{attrs:{href:"#defaultbasicauthorizationobject"}},[t._v("DefaultBasicAuthorizationObject")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" userId - user id. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" password - password. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("a",{attrs:{href:"#authorizationobject"}},[t._v("AuthorizationObject")]),t._v(". "),e("code",[t._v("nullptr")]),t._v(' - for "Unauthorized". ')])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("authorize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" userId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" password"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"defaultbearerauthorizationobject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultbearerauthorizationobject"}},[t._v("#")]),t._v(" DefaultBearerAuthorizationObject")]),t._v(" "),e("p",[t._v("Default Bearer AuthorizationObject - Convenience object to enable Bearer-Authorization without the need to implement anything.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultBearerAuthorizationObject")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AuthorizationObject "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#defaultbearerauthorizationobject-token"}},[t._v("token")])]),t._v(" "),e("td",[t._v("Token. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"defaultbearerauthorizationobject-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#defaultbearerauthorizationobject-token"}},[t._v("#")]),t._v(" DefaultBearerAuthorizationObject::token")]),t._v(" "),e("p",[t._v("Token. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String token\n")])])]),e("h2",{attrs:{id:"bearerauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bearerauthorizationhandler"}},[t._v("#")]),t._v(" BearerAuthorizationHandler")]),t._v(" "),e("p",[t._v("AuthorizationHandler for Authorization Type "),e("code",[t._v("Bearer")]),t._v(". "),e("br"),t._v(" See "),e("a",{attrs:{href:"https://tools.ietf.org/html/rfc6750",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 6750"),e("OutboundLink")],1),t._v(". "),e("br"),t._v(" Extend this class to implement Custom Bearer Authorization.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("BearerAuthorizationHandler")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" AuthorizationHandler "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bearerauthorizationhandler-bearerauthorizationhandler"}},[t._v("BearerAuthorizationHandler")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bearerauthorizationhandler-handleauthorization"}},[t._v("handleAuthorization")])]),t._v(" "),e("td",[t._v("Implementation of "),e("a",{attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("AuthorizationHandler::handleAuthorization()")])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#bearerauthorizationhandler-authorize"}},[t._v("authorize")])]),t._v(" "),e("td",[t._v("Implement this method! Do the actual authorization here. When not implemented returns "),e("a",{attrs:{href:"#defaultbearerauthorizationobject"}},[t._v("DefaultBearerAuthorizationObject")]),t._v(".")])])])]),t._v(" "),e("h3",{attrs:{id:"bearerauthorizationhandler-bearerauthorizationhandler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bearerauthorizationhandler-bearerauthorizationhandler"}},[t._v("#")]),t._v(" BearerAuthorizationHandler::BearerAuthorizationHandler")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" realm ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("BearerAuthorizationHandler")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" realm "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"API"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"bearerauthorizationhandler-handleauthorization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bearerauthorizationhandler-handleauthorization"}},[t._v("#")]),t._v(" BearerAuthorizationHandler::handleAuthorization")]),t._v(" "),e("p",[t._v("Implementation of "),e("a",{attrs:{href:"#authorizationhandler-handleauthorization"}},[t._v("AuthorizationHandler::handleAuthorization()")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" header - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationobject"}},[t._v("oatpp::web::server::handler::AuthorizationObject")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleAuthorization")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("header"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"bearerauthorizationhandler-authorize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bearerauthorizationhandler-authorize"}},[t._v("#")]),t._v(" BearerAuthorizationHandler::authorize")]),t._v(" "),e("p",[t._v("Implement this method! Do the actual authorization here. When not implemented returns "),e("a",{attrs:{href:"#defaultbearerauthorizationobject"}},[t._v("DefaultBearerAuthorizationObject")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" token - access token. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to "),e("a",{attrs:{href:"#authorizationobject"}},[t._v("AuthorizationObject")]),t._v(". "),e("code",[t._v("nullptr")]),t._v(' - for "Unauthorized". ')])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("authorize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" token"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/271.1e56369c.js b/docs/.vuepress/dist/assets/js/271.1e56369c.js deleted file mode 100644 index a3f21e54b..000000000 --- a/docs/.vuepress/dist/assets/js/271.1e56369c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[271],{643:function(t,r,a){"use strict";a.r(r);var e=a(42),s=Object(e.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"errorhandler-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errorhandler-hpp"}},[t._v("#")]),t._v(" ErrorHandler.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/handler/ErrorHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/handler/ErrorHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp/web/server/handler/ErrorHandler.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"errorhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errorhandler"}},[t._v("#")]),t._v(" ErrorHandler")]),t._v(" "),a("p",[t._v("Error Handler.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("web::protocol::http::Headers")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#errorhandler-headers"}},[t._v("Headers")])]),t._v(" "),a("td",[t._v("Convenience typedef for Headers. "),a("br"),t._v(" See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#errorhandler-~errorhandler"}},[t._v("~ErrorHandler")])]),t._v(" "),a("td",[t._v("Virtual destructor since the class is ment to be derived from.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#errorhandler-handleerror"}},[t._v("handleError")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Implement this method! ")]),a("li",[t._v("Convenience method to call "),a("code",[t._v("handleError")]),t._v(" method with no headers. ")])])])])])]),t._v(" "),a("h3",{attrs:{id:"errorhandler-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errorhandler-headers"}},[t._v("#")]),t._v(" ErrorHandler::Headers")]),t._v(" "),a("p",[t._v("Convenience typedef for Headers. "),a("br"),t._v(" See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Headers Headers\n")])])]),a("h3",{attrs:{id:"errorhandler-errorhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errorhandler-errorhandler"}},[t._v("#")]),t._v(" ErrorHandler::~ErrorHandler")]),t._v(" "),a("p",[t._v("Virtual destructor since the class is ment to be derived from. */")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ErrorHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),a("h3",{attrs:{id:"errorhandler-handleerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errorhandler-handleerror"}},[t._v("#")]),t._v(" ErrorHandler::handleError")]),t._v(" "),a("ol",[a("li",[t._v("Implement this method! "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" status - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" Headers - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#headers"}},[t._v("oatpp::web::protocol::http::Headers")])],1),a("li",[a("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v("\nstd"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Convenience method to call "),a("code",[t._v("handleError")]),t._v(" method with no headers. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" status - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")])],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - std::shared_ptr to "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"defaulterrorhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaulterrorhandler"}},[t._v("#")]),t._v(" DefaultErrorHandler")]),t._v(" "),a("p",[t._v("Default Error Handler.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" handler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultErrorHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ErrorHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#defaulterrorhandler-defaulterrorhandler"}},[t._v("DefaultErrorHandler")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#defaulterrorhandler-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared DefaultErrorHandler.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#defaulterrorhandler-handleerror"}},[t._v("handleError")])]),t._v(" "),a("td",[t._v("Implementation of "),a("a",{attrs:{href:"#errorhandler-handleerror"}},[t._v("ErrorHandler::handleError()")])])])])]),t._v(" "),a("h3",{attrs:{id:"defaulterrorhandler-defaulterrorhandler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaulterrorhandler-defaulterrorhandler"}},[t._v("#")]),t._v(" DefaultErrorHandler::DefaultErrorHandler")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultErrorHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"defaulterrorhandler-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaulterrorhandler-createshared"}},[t._v("#")]),t._v(" DefaultErrorHandler::createShared")]),t._v(" "),a("p",[t._v("Create shared DefaultErrorHandler. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to DefaultErrorHandler. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultErrorHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"defaulterrorhandler-handleerror"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaulterrorhandler-handleerror"}},[t._v("#")]),t._v(" DefaultErrorHandler::handleError")]),t._v(" "),a("p",[t._v("Implementation of "),a("a",{attrs:{href:"#errorhandler-handleerror"}},[t._v("ErrorHandler::handleError()")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" status - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#status"}},[t._v("oatpp::web::protocol::http::Status")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" message - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" status"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Headers"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" headers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/272.eaacb1f0.js b/docs/.vuepress/dist/assets/js/272.eaacb1f0.js deleted file mode 100644 index 4bb0b0578..000000000 --- a/docs/.vuepress/dist/assets/js/272.eaacb1f0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[272],{644:function(e,t,o){"use strict";o.r(t);var r=o(42),l=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"allowcorsglobal-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#allowcorsglobal-hpp"}},[e._v("#")]),e._v(" AllowCorsGlobal.hpp"),o("seo")],1),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/interceptor/AllowCorsGlobal.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),o("OutboundLink")],1),o("br"),e._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/interceptor/AllowCorsGlobal.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("code",[e._v("API: latest")]),o("br"),e._v(" "),o("code",[e._v("module: oatpp")]),o("br"),e._v(" "),o("code",[e._v('#include "oatpp/web/server/interceptor/AllowCorsGlobal.hpp"')])])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/273.472240ba.js b/docs/.vuepress/dist/assets/js/273.472240ba.js deleted file mode 100644 index 67a3e73d3..000000000 --- a/docs/.vuepress/dist/assets/js/273.472240ba.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[273],{645:function(t,e,s){"use strict";s.r(e);var r=s(42),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"requestinterceptor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor-hpp"}},[t._v("#")]),t._v(" RequestInterceptor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/interceptor/RequestInterceptor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/interceptor/RequestInterceptor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/server/interceptor/RequestInterceptor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"requestinterceptor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor"}},[t._v("#")]),t._v(" RequestInterceptor")]),t._v(" "),s("p",[t._v("RequestInterceptor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" interceptor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestInterceptor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::web::protocol::http::incoming::Request")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestinterceptor-incomingrequest"}},[t._v("IncomingRequest")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::web::protocol::http::outgoing::Response")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestinterceptor-outgoingresponse"}},[t._v("OutgoingResponse")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestinterceptor-~requestinterceptor"}},[t._v("~RequestInterceptor")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestinterceptor-intercept"}},[t._v("intercept")])]),t._v(" "),s("td",[t._v('This method should not do any "heavy" nor I/O operations')])])])]),t._v(" "),s("h3",{attrs:{id:"requestinterceptor-incomingrequest"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor-incomingrequest"}},[t._v("#")]),t._v(" RequestInterceptor::IncomingRequest")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request IncomingRequest\n")])])]),s("h3",{attrs:{id:"requestinterceptor-outgoingresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor-outgoingresponse"}},[t._v("#")]),t._v(" RequestInterceptor::OutgoingResponse")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response OutgoingResponse\n")])])]),s("h3",{attrs:{id:"requestinterceptor-requestinterceptor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor-requestinterceptor"}},[t._v("#")]),t._v(" RequestInterceptor::~RequestInterceptor")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("RequestInterceptor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"requestinterceptor-intercept"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestinterceptor-intercept"}},[t._v("#")]),t._v(" RequestInterceptor::intercept")]),t._v(" "),s("p",[t._v('This method should not do any "heavy" nor I/O operations as it is used for both "Simple" and "Async" API NOT FOR I/O operations!!! - return nullptr to continue. - return OutgoingResponse to send response immediately possible usage ex: return 301 - redirect if needed')]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("intercept")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/274.4cc578ff.js b/docs/.vuepress/dist/assets/js/274.4cc578ff.js deleted file mode 100644 index fa3e95bb2..000000000 --- a/docs/.vuepress/dist/assets/js/274.4cc578ff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[274],{646:function(t,e,s){"use strict";s.r(e);var r=s(42),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"responseinterceptor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor-hpp"}},[t._v("#")]),t._v(" ResponseInterceptor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/server/interceptor/ResponseInterceptor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/server/interceptor/ResponseInterceptor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp/web/server/interceptor/ResponseInterceptor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"responseinterceptor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor"}},[t._v("#")]),t._v(" ResponseInterceptor")]),t._v(" "),s("p",[t._v("ResponseInterceptor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" interceptor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResponseInterceptor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"typedefs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::web::protocol::http::incoming::Request")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responseinterceptor-incomingrequest"}},[t._v("IncomingRequest")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::web::protocol::http::outgoing::Response")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responseinterceptor-outgoingresponse"}},[t._v("OutgoingResponse")])]),t._v(" "),s("td",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responseinterceptor-~responseinterceptor"}},[t._v("~ResponseInterceptor")])]),t._v(" "),s("td",[t._v("Default virtual destructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#responseinterceptor-intercept"}},[t._v("intercept")])]),t._v(" "),s("td",[t._v('This method should not do any "heavy" nor I/O operations '),s("br")])])])]),t._v(" "),s("h3",{attrs:{id:"responseinterceptor-incomingrequest"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor-incomingrequest"}},[t._v("#")]),t._v(" ResponseInterceptor::IncomingRequest")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Request/#request"}},[t._v("oatpp::web::protocol::http::incoming::Request")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Request IncomingRequest\n")])])]),s("h3",{attrs:{id:"responseinterceptor-outgoingresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor-outgoingresponse"}},[t._v("#")]),t._v(" ResponseInterceptor::OutgoingResponse")]),t._v(" "),s("p",[t._v("Convenience typedef for "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("outgoing"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Response OutgoingResponse\n")])])]),s("h3",{attrs:{id:"responseinterceptor-responseinterceptor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor-responseinterceptor"}},[t._v("#")]),t._v(" ResponseInterceptor::~ResponseInterceptor")]),t._v(" "),s("p",[t._v("Default virtual destructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResponseInterceptor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),s("h3",{attrs:{id:"responseinterceptor-intercept"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#responseinterceptor-intercept"}},[t._v("#")]),t._v(" ResponseInterceptor::intercept")]),t._v(" "),s("p",[t._v('This method should not do any "heavy" nor I/O operations '),s("br"),t._v(' as it is used for both "Simple" and "Async" API '),s("br"),t._v(" NOT FOR I/O operations!!! "),s("br"),t._v(" "),s("br"),t._v(" - return the same response, or the new one. "),s("br"),t._v(" - do "),s("strong",[t._v("NOT")]),t._v(" return "),s("code",[t._v("nullptr")]),t._v(". "),s("br"),s("br"),t._v(" possible usage ex: add extra headers to the response. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" request - the corresponding request. ")]),s("li",[s("strong",[t._v("@param")]),t._v(" response - response to the request ")]),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/outgoing/Response/#response"}},[t._v("oatpp::web::protocol::http::outgoing::Response")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("intercept")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" response"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/275.37cb5698.js b/docs/.vuepress/dist/assets/js/275.37cb5698.js deleted file mode 100644 index 9162cde42..000000000 --- a/docs/.vuepress/dist/assets/js/275.37cb5698.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[275],{647:function(t,e,r){"use strict";r.r(e);var p=r(42),n=Object(p.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"pattern-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pattern-hpp"}},[t._v("#")]),t._v(" Pattern.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/url/mapping/Pattern.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/url/mapping/Pattern.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp/web/url/mapping/Pattern.hpp"')])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/276.ad25f25e.js b/docs/.vuepress/dist/assets/js/276.ad25f25e.js deleted file mode 100644 index daf09159e..000000000 --- a/docs/.vuepress/dist/assets/js/276.ad25f25e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[276],{648:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"router-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-hpp"}},[t._v("#")]),t._v(" Router.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp/web/url/mapping/Router.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp/web/url/mapping/Router.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp/web/url/mapping/Router.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"router"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router"}},[t._v("#")]),t._v(" Router")]),t._v(" "),e("p",[t._v('Class responsible to map "Path" to "Route" by "Path-Pattern". '),e("ul",[e("li",[e("strong",[t._v("@tparam")]),t._v(" Endpoint - endpoint of the route. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" url "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Router")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"typedefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::pair, Endpoint>")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-pair"}},[t._v("Pair")])]),t._v(" "),e("td",[t._v("Pair oatpp::web::url::mapping::Pattern to Endpoint.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::share::StringKeyLabel")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-stringkeylabel"}},[t._v("StringKeyLabel")])]),t._v(" "),e("td",[t._v("Convenience typedef "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1)])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-route"}},[t._v("route")])]),t._v(" "),e("td",[t._v("Add "),e("code",[t._v("path-pattern")]),t._v(" to "),e("code",[t._v("endpoint")]),t._v(" mapping.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("Route")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-getroute"}},[t._v("getRoute")])]),t._v(" "),e("td",[t._v("Resolve path to corresponding endpoint.")])])])]),t._v(" "),e("h3",{attrs:{id:"router-pair"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-pair"}},[t._v("#")]),t._v(" Router::Pair")]),t._v(" "),e("p",[t._v("Pair oatpp::web::url::mapping::Pattern to Endpoint.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("pair"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Pattern"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Pair\n")])])]),e("h3",{attrs:{id:"router-stringkeylabel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-stringkeylabel"}},[t._v("#")]),t._v(" Router::StringKeyLabel")]),t._v(" "),e("p",[t._v("Convenience typedef "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/MemoryLabel/#stringkeylabel"}},[t._v("oatpp::data::share::StringKeyLabel")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel StringKeyLabel\n")])])]),e("h3",{attrs:{id:"router-route"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route"}},[t._v("#")]),t._v(" Router::route")]),t._v(" "),e("p",[t._v("Add "),e("code",[t._v("path-pattern")]),t._v(" to "),e("code",[t._v("endpoint")]),t._v(" mapping. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pathPattern - path pattern for endpoint. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" endpoint - route endpoint. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("route")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pathPattern"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpoint"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"router-getroute"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-getroute"}},[t._v("#")]),t._v(" Router::getRoute")]),t._v(" "),e("p",[t._v("Resolve path to corresponding endpoint. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" path ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - Router::Route. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("Route "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRoute")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" path"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"router-route-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route-2"}},[t._v("#")]),t._v(" Router::Route")]),t._v(" "),e("p",[t._v('Resolved "Route" for "path-pattern"')]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" web "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" url "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typename")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Router")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Route")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-route-route"}},[t._v("Route")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Default constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const Endpoint&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-route-getendpoint"}},[t._v("getEndpoint")])]),t._v(" "),e("td",[t._v("Get Endpoint.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const Pattern::MatchMap&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-route-getmatchmap"}},[t._v("getMatchMap")])]),t._v(" "),e("td",[t._v("Match map of resolved path containing resolved path variables.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#router-route-isvalid"}},[t._v("isValid")])]),t._v(" "),e("td",[t._v("Check if route is valid.")])])])]),t._v(" "),e("h3",{attrs:{id:"router-route-route"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route-route"}},[t._v("#")]),t._v(" Router::Route::Route")]),t._v(" "),e("ol",[e("li",[t._v("Default constructor."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Route")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_valid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pEndpoint - route endpoint. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pMatchMap - Match map of resolved path containing resolved path variables. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Route")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpoint"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Pattern"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MatchMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" matchMap"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_valid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_endpoint")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("endpoint"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_matchMap")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("matchMap"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"router-route-getendpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route-getendpoint"}},[t._v("#")]),t._v(" Router::Route::getEndpoint")]),t._v(" "),e("p",[t._v("Get Endpoint.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Endpoint"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEndpoint")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"router-route-getmatchmap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route-getmatchmap"}},[t._v("#")]),t._v(" Router::Route::getMatchMap")]),t._v(" "),e("p",[t._v("Match map of resolved path containing resolved path variables.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Pattern"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MatchMap"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMatchMap")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"router-route-isvalid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#router-route-isvalid"}},[t._v("#")]),t._v(" Router::Route::isValid")]),t._v(" "),e("p",[t._v("Check if route is valid. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("isValid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/277.80e0c7f4.js b/docs/.vuepress/dist/assets/js/277.80e0c7f4.js deleted file mode 100644 index 3ba52f908..000000000 --- a/docs/.vuepress/dist/assets/js/277.80e0c7f4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[277],{649:function(e,t,r){"use strict";r.r(t);var o=r(42),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"benchmark-oatpp-aws-cloud"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#benchmark-oatpp-aws-cloud"}},[e._v("#")]),e._v(" Benchmark oatpp - AWS cloud "),r("seo")],1),e._v(" "),r("h2",{attrs:{id:"aws-t2-micro-instance-1vcpu-1gb-ubuntu-18-04-free-tier"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#aws-t2-micro-instance-1vcpu-1gb-ubuntu-18-04-free-tier"}},[e._v("#")]),e._v(" AWS t2.micro instance. 1vCPU 1GB Ubuntu 18.04 - free tier")]),e._v(" "),r("p",[e._v('Performance test of "Hello World" endpoint.')]),e._v(" "),r("p",[r("strong",[e._v("Machine")]),e._v(" - AWS t2.micro instance. 1vCPU 1GB Ubuntu 18.04 - free tier"),r("br"),e._v(" "),r("strong",[e._v("Tool")]),e._v(" - wrk")]),e._v(" "),r("p",[e._v("oatpp-async compiled with: "),r("code",[e._v("-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=1")]),e._v(" option.")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://github.com/lganzzzo/oatpp-website-res/blob/master/aws-1.png?raw=true",alt:"benchmark aws t2.micro"}})]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("go net/http")]),e._v(' service performs clearly till 10 concurrent connection. At higher concurrency levels performs with "timeout" errors. Down at concurrency level > 15K.')]),e._v(" "),r("li",[r("strong",[e._v("oatpp-async")]),e._v(" service performs clearly and stays available up till 20K concurrent connections load. At higher loads no response. Service available if load drops.")]),e._v(" "),r("li",[r("strong",[e._v("oatpp-multithreaded")]),e._v(" service shows very high performance and works clearly up to 2.5K concurrent connections. Then down at load 5K concurrent connections.")])]),e._v(" "),r("h2",{attrs:{id:"aws-t3-xlarge-instance-4vcpus-16gb-ubuntu-18-04-121-81-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#aws-t3-xlarge-instance-4vcpus-16gb-ubuntu-18-04-121-81-month"}},[e._v("#")]),e._v(" AWS t3.xlarge instance. 4vCPUs 16GB Ubuntu 18.04 - $121.81/Month")]),e._v(" "),r("p",[e._v('Performance test of "Hello World" endpoint.')]),e._v(" "),r("p",[r("strong",[e._v("Machine")]),e._v(" - AWS t3.xlarge instance. 4vCPUs 16GB Ubuntu 18.04 - $121.81/Month"),r("br"),e._v(" "),r("strong",[e._v("Tool")]),e._v(" - wrk")]),e._v(" "),r("p",[e._v("oatpp-async compiled with:\n"),r("code",[e._v("-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=3")]),e._v(" option.")]),e._v(" "),r("p",[r("img",{attrs:{src:"https://github.com/lganzzzo/oatpp-website-res/blob/master/aws-2.png?raw=true",alt:"benchmark aws t3.xlarge"}})]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("go net/http")]),e._v(' service performs clearly till 10 concurrent connection. At higher concurrency levels (till 25K connections) performs with "timeout" errors. At 30K load no response. Service available if load drops.')]),e._v(" "),r("li",[r("strong",[e._v("oatpp-async")]),e._v(" service performs clearly and stays available up till 25K concurrent connections load. At 30K load no response. Service available if load drops.")]),e._v(" "),r("li",[r("strong",[e._v("oatpp-multithreaded")]),e._v(' service shows very high performance and works clearly up to 2.5K concurrent connections. At higher concurrency levels (till 20K connections) performs with "timeout" errors. Down at higher load.')])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/278.8b340efd.js b/docs/.vuepress/dist/assets/js/278.8b340efd.js deleted file mode 100644 index 1a34291d4..000000000 --- a/docs/.vuepress/dist/assets/js/278.8b340efd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[278],{650:function(t,e,o){"use strict";o.r(e);var n=o(42),r=Object(n.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"benchmark-oatpp-digital-ocean-cloud"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#benchmark-oatpp-digital-ocean-cloud"}},[t._v("#")]),t._v(" Benchmark oatpp - Digital Ocean cloud "),o("seo")],1),t._v(" "),o("h2",{attrs:{id:"digital-ocean-droplet-1vcpu-1gb-ubuntu-16-04-5-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#digital-ocean-droplet-1vcpu-1gb-ubuntu-16-04-5-month"}},[t._v("#")]),t._v(" Digital Ocean droplet 1vCPU 1GB Ubuntu 16.04 - $5/Month")]),t._v(" "),o("p",[t._v('Performance test of "Hello World" endpoint.')]),t._v(" "),o("p",[o("strong",[t._v("Machine")]),t._v(" - Digital Ocean droplet. 1vCPU 1GB Ubuntu 16.04 - $5/Month"),o("br"),t._v(" "),o("strong",[t._v("Tool")]),t._v(" - wrk")]),t._v(" "),o("p",[t._v("oatpp-async compiled with: "),o("code",[t._v("-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=1")]),t._v(" option.")]),t._v(" "),o("p",[o("img",{attrs:{src:"https://github.com/lganzzzo/oatpp-website-res/blob/master/do-1.png?raw=true",alt:"Digital Ocean 1vCPU 1GB"}})]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("go net/http")]),t._v(' service performs clearly till 10 concurrent connection. At higher concurrency levels performs with "timeout" errors. Down at concurrency level 20K.')]),t._v(" "),o("li",[o("strong",[t._v("oatpp-async")]),t._v(" service performs clearly and stays available on the whole distance.")]),t._v(" "),o("li",[o("strong",[t._v("oatpp-multithreaded")]),t._v(" service performs clearly up to 5K concurrent connections. Then down at load 10K concurrent connections.")])]),t._v(" "),o("h2",{attrs:{id:"digital-ocean-droplet-4vcpus-8gb-ubuntu-16-04-40-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#digital-ocean-droplet-4vcpus-8gb-ubuntu-16-04-40-month"}},[t._v("#")]),t._v(" Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month")]),t._v(" "),o("p",[t._v('Performance test of "Hello World" endpoint.')]),t._v(" "),o("p",[o("strong",[t._v("Machine")]),t._v(" - Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month"),o("br"),t._v(" "),o("strong",[t._v("Tool")]),t._v(" - wrk")]),t._v(" "),o("p",[t._v("oatpp-async compiled with: "),o("code",[t._v("-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=3")]),t._v(" option.")]),t._v(" "),o("p",[o("img",{attrs:{src:"https://github.com/lganzzzo/oatpp-website-res/blob/master/do-2.png?raw=true",alt:"benchmark Digital Ocean droplet 4vCPUs"}})]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("go net/http")]),t._v(" service performs clearly and stays available up till 30K concurrent connections load.")]),t._v(" "),o("li",[o("strong",[t._v("oatpp-async")]),t._v(" service performs clearly and stays available up till 30K concurrent connections load.")]),t._v(" "),o("li",[o("strong",[t._v("oatpp-multithreaded")]),t._v(" service performs clearly up till 1K concurrent connections load. Then down at load 2.5K concurrent connections.")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/279.204fb37b.js b/docs/.vuepress/dist/assets/js/279.204fb37b.js deleted file mode 100644 index 6e3a0060e..000000000 --- a/docs/.vuepress/dist/assets/js/279.204fb37b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[279],{651:function(e,t,r){"use strict";r.r(t);var n=r(42),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"benchmarks-info"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#benchmarks-info"}},[e._v("#")]),e._v(" Benchmarks info "),r("seo")],1),e._v(" "),r("p",[e._v("Benchmarks were taken for oatpp version "),r("code",[e._v("0.18.9")])]),e._v(" "),r("p",[e._v("Source code of services prepared for tests can be found here: "),r("a",{attrs:{href:"https://github.com/oatpp/benchmark",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/oatpp/benchmark"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you are interested in some particular framework vs oatpp please let me know by opening issue here: "),r("a",{attrs:{href:"https://github.com/oatpp/benchmark/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/oatpp/benchmark/issues"),r("OutboundLink")],1),e._v(". Specify platform/framework in the issue.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/28.3376969a.js b/docs/.vuepress/dist/assets/js/28.3376969a.js deleted file mode 100644 index 3b2146fad..000000000 --- a/docs/.vuepress/dist/assets/js/28.3376969a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{400:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/client/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/client/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-libressl")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-libressl/client/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Libressl client connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Implements oatpp::network::ConnectionProvider::close. Here does nothing.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("Get connection in asynchronous manner.")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Implements oatpp::network::ConnectionProvider::close. Here does nothing.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("Get connection in asynchronous manner. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/280.ed9047a2.js b/docs/.vuepress/dist/assets/js/280.ed9047a2.js deleted file mode 100644 index 72f9ab17b..000000000 --- a/docs/.vuepress/dist/assets/js/280.ed9047a2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[280],{652:function(e,t,s){"use strict";s.r(t);var a=s(42),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"_2-million-websockets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-million-websockets"}},[e._v("#")]),e._v(" 2 Million WebSockets "),s("seo")],1),e._v(" "),s("p",[e._v("Date - "),s("code",[e._v("May 5, 2019")]),s("br"),e._v("\nOatpp version - "),s("code",[e._v("0.19.4")])]),e._v(" "),s("p",[e._v("This article describes oatpp benchmark for 2 Million "),s("strong",[e._v("fully-loaded")]),e._v(" concurrent websocket connections.")]),e._v(" "),s("h2",{attrs:{id:"setup"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),s("img",{attrs:{alt:"Setup diagram",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/diagram/2m-websockets-setup.svg?sanitize=true"}}),e._v(" "),s("ul",[s("li",[e._v("Server Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-8 (8 vCPUs, 52 GB memory)")]),e._v(" running Debian GNU/Linux 9.")]),e._v(" "),s("li",[e._v("Client Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-8 (8 vCPUs, 52 GB memory)")]),e._v(" running Debian GNU/Linux 9.")])]),e._v(" "),s("p",[s("strong",[e._v("Server application")]),e._v(" listens to 100 ports from 8000 to 8099\n(in order to prevent ephemeral ports exhaustion on the client - as we running all 2m clients on the same machine).\nOnce there is a message on WebSocket, server will echo client's message adding "),s("code",[e._v('"Hello from oatpp!"')]),e._v(" at the beginning.")]),e._v(" "),s("p",[s("strong",[e._v("Client application")]),e._v(" opens 20k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load.\nEach of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.")]),e._v(" "),s("p",[e._v("Both server and client applications are running asynchronous oatpp server/client based on "),s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[e._v("oatpp coroutines")]),e._v(".")],1),e._v(" "),s("h2",{attrs:{id:"results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),s("p",[e._v("Server showed stable performance through all the benchmark test delivering about "),s("code",[e._v("9 Million")]),e._v(" messages per minute ("),s("code",[e._v("~32.7 Mb/Second")]),e._v("):")]),e._v(" "),s("img",{attrs:{alt:"Server monitoring graph",src:"https://github.com/lganzzzo/oatpp-website-res/raw/master/benchmark/websocket/2m/monitoring.png",width:"800px"}}),e._v(" "),s("h3",{attrs:{id:"server-stats"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-stats"}},[e._v("#")]),e._v(" Server Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Server memory consumption was stable at about 15GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/2m/top-server.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 2000000 # - Number of connected clients \nFRAMES_TOTAL: 2055762317 # - Frames received by server (total) \nMESSAGES_TOTAL: 2055711187 # - Messages received by server (total) \nFRAMES_PER_MIN: 9198391.630007 # - Frames received rate per minute \nMESSAGES_PER_MIN: 9194998.122585 # - Messages received rate per minute \n")])])]),s("h3",{attrs:{id:"client-stats"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client-stats"}},[e._v("#")]),e._v(" Client Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption-2"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Client memory consumption was stable at about 10GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/2m/top-client.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput-2"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 2000000 # - Number of connected clients \nFRAMES_TOTAL: 1986591173 # - Frames received by client (total) \nMESSAGES_TOTAL: 1986358027 # - Messages received by client (total) \nFRAMES_PER_MIN: 8971818.390638 # - Frames received rate per minute \nMESSAGES_PER_MIN: 8973755.731700 # - Messages received rate per minute \n")])])]),s("h2",{attrs:{id:"steps-to-reproduce"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#steps-to-reproduce"}},[e._v("#")]),e._v(" Steps to Reproduce")]),e._v(" "),s("p",[e._v("Create two "),s("code",[e._v("n1-highmem-8 (8 vCPUs, 52 GB memory) - Debian GNU/Linux 9")]),e._v(" instances in same VPC on Google Cloud.")]),e._v(" "),s("h3",{attrs:{id:"execute-the-following-commands-for-both-instances-ssh"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#execute-the-following-commands-for-both-instances-ssh"}},[e._v("#")]),e._v(" Execute the following commands for both instances (SSH).")]),e._v(" "),s("ul",[s("li",[e._v("Install git")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt-get")]),e._v(" update\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt-get")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n")])])]),s("ul",[s("li",[e._v("Clone "),s("a",{attrs:{href:"https://github.com/oatpp/benchmark-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("benchmark-websocket repo"),s("OutboundLink")],1),e._v(" and "),s("code",[e._v("cd")]),e._v(" to repo folder")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/oatpp/benchmark-websocket\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" benchmark-websocket\n")])])]),s("ul",[s("li",[e._v("Install "),s("code",[e._v("oatpp")]),e._v(" and "),s("code",[e._v("oatpp-websocket")]),e._v(" modules (run ./prepare.sh script).")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./prepare.sh\n")])])]),s("ul",[s("li",[e._v("Configure environment (run ./sock-config.sh script)")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./sock-config.sh\n$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("ulimit")]),e._v(" -n "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3000000")]),e._v("\n")])])]),s("h3",{attrs:{id:"build-and-run-server"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run-server"}},[e._v("#")]),e._v(" Build and Run Server")]),e._v(" "),s("p",[e._v("Commands for server instance only:")]),e._v(" "),s("ul",[s("li",[e._v("Build server")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" server/build/\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("make")]),e._v("\n")])])]),s("ul",[s("li",[e._v("Run server")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./wsb-server-exe --tp "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("9")]),e._v(" --tio "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3")]),e._v("\n")])])]),s("p",[e._v("where:"),s("br"),e._v(" "),s("code",[e._v("--tp")]),e._v(" - number of data-processing threads."),s("br"),e._v(" "),s("code",[e._v("--tio")]),e._v(" - number of I/O workers.")]),e._v(" "),s("h3",{attrs:{id:"build-and-run-client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run-client"}},[e._v("#")]),e._v(" Build and Run Client")]),e._v(" "),s("p",[e._v("Commands for client instance only:")]),e._v(" "),s("ul",[s("li",[e._v("Build client")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" client/build/\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("make")]),e._v("\n")])])]),s("ul",[s("li",[e._v("Run client")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./wsb-client-exe --tp "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("9")]),e._v(" --tio "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3")]),e._v(" -h "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("server-private-ip"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" --socks-max "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("2000000")]),e._v(" --socks-port "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("20000")]),e._v(" --si "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" --sf "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("50")]),e._v("\n")])])]),s("p",[e._v("where:"),s("br"),e._v(" "),s("code",[e._v("--tp")]),e._v(" - number of data-processing threads."),s("br"),e._v(" "),s("code",[e._v("--tio")]),e._v(" - number of I/O workers."),s("br"),e._v(" "),s("code",[e._v("-h ")]),e._v(" - substitute "),s("strong",[e._v("private-ip")]),e._v(" of server instance here."),s("br"),e._v(" "),s("code",[e._v("--socks-max")]),e._v(" - how many client connections to establish."),s("br"),e._v(" "),s("code",[e._v("--socks-port")]),e._v(" - how many client connections per port."),s("br"),e._v(" "),s("code",[e._v("--si 1000 --sf 50")]),e._v(" - control how fast clients will connect to server. Here - each "),s("code",[e._v("1000")]),e._v(" iterations sleep for "),s("code",[e._v("50")]),e._v(" milliseconds.")]),e._v(" "),s("p",[s("strong",[e._v("Note")]),e._v(" - clients will not start load until all clients are connected."),s("br"),e._v(" "),s("strong",[e._v("Note")]),e._v(" - client app will fail with assertion if any of clients has failed.")]),e._v(" "),s("h2",{attrs:{id:"links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/benchmark-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("This benchmark repo"),s("OutboundLink")],1)]),e._v(" "),s("li",[s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[e._v("About oatpp coroutines")])],1),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-websocket repo"),s("OutboundLink")],1)]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp repo"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/281.9a96aaf1.js b/docs/.vuepress/dist/assets/js/281.9a96aaf1.js deleted file mode 100644 index e4aa7e3d3..000000000 --- a/docs/.vuepress/dist/assets/js/281.9a96aaf1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[281],{653:function(e,t,s){"use strict";s.r(t);var a=s(42),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"_5-million-websockets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-million-websockets"}},[e._v("#")]),e._v(" 5 Million WebSockets "),s("seo")],1),e._v(" "),s("p",[e._v("Date - "),s("code",[e._v("May 20, 2019")]),s("br"),e._v("\nOatpp version - "),s("code",[e._v("0.19.4")])]),e._v(" "),s("p",[e._v("This article describes oatpp benchmark for 5 Million "),s("strong",[e._v("fully-loaded")]),e._v(" concurrent websocket connections.")]),e._v(" "),s("p",[e._v("It consists of two parts:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#_4m-websockets"}},[e._v("4 Million WebSockets test")]),e._v(".")]),e._v(" "),s("li",[s("a",{attrs:{href:"#_5m-websockets"}},[e._v("5 Million WebSockets test")]),e._v(".")])]),e._v(" "),s("h2",{attrs:{id:"the-purpose"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-purpose"}},[e._v("#")]),e._v(" The Purpose")]),e._v(" "),s("p",[e._v("This benchmark is aimed to determine scalability of oatpp with increase of load and computing powers with respect to "),s("strong",[e._v("previous")]),e._v(" "),s("RouterLink",{attrs:{to:"/benchmark/websocket/2-million/"}},[e._v("2-million WebSockets benchmark")]),e._v(".")],1),e._v(" "),s("table",[s("thead",[s("tr",[s("th"),e._v(" "),s("th",[e._v("Previous, 2M benchmark")]),e._v(" "),s("th",[e._v("This, 4M / 5M benchmark")])])]),e._v(" "),s("tbody",[s("tr",[s("td",[e._v("Computing power")]),e._v(" "),s("td",[s("strong",[e._v("8 vCPUs, 52 GB memory")])]),e._v(" "),s("td",[s("strong",[e._v("16 vCPUs, 104 GB memory")])])]),e._v(" "),s("tr",[s("td",[e._v("Load")]),e._v(" "),s("td",[s("strong",[e._v("2M connections")])]),e._v(" "),s("td",[s("strong",[e._v("4M / 5M connections")])])])])]),e._v(" "),s("h2",{attrs:{id:"_4m-websockets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4m-websockets"}},[e._v("#")]),e._v(" 4M WebSockets")]),e._v(" "),s("h3",{attrs:{id:"setup"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),s("img",{attrs:{alt:"Setup diagram",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/diagram/4m-websockets-setup.svg?sanitize=true"}}),e._v(" "),s("ul",[s("li",[e._v("Server Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-16 (16 vCPUs, 104 GB memory)")]),e._v(" running Debian GNU/Linux 9.")]),e._v(" "),s("li",[e._v("Client Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-16 (16 vCPUs, 104 GB memory)")]),e._v(" running Debian GNU/Linux 9.")])]),e._v(" "),s("p",[s("strong",[e._v("Server application")]),e._v(" listens to 400 ports from 8000 to 8399\n(in order to prevent ephemeral ports exhaustion on the client - as we running all 4M clients on the same machine).\nOnce there is a message on WebSocket, server will echo client's message adding "),s("code",[e._v('"Hello from oatpp!"')]),e._v(" at the beginning.")]),e._v(" "),s("p",[s("strong",[e._v("Client application")]),e._v(" opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load.\nEach of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.")]),e._v(" "),s("p",[e._v("Both server and client applications are running asynchronous oatpp server/client based on "),s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[e._v("oatpp coroutines")]),e._v(".")],1),e._v(" "),s("h3",{attrs:{id:"results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),s("p",[e._v("Server showed stable performance through all the benchmark test delivering about "),s("code",[e._v("17 Million")]),e._v(" messages per minute ("),s("code",[e._v("~57.5 Mb/Second")]),e._v("):")]),e._v(" "),s("img",{attrs:{alt:"Server monitoring graph",src:"https://github.com/lganzzzo/oatpp-website-res/raw/master/benchmark/websocket/4m/monitoring.png",width:"800px"}}),e._v(" "),s("h3",{attrs:{id:"server-stats"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-stats"}},[e._v("#")]),e._v(" Server Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Server memory consumption was stable at about 30GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/4m/top-server.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 4000000 # - Number of connected clients \nFRAMES_TOTAL: 573911830 # - Frames received by server (total) \nMESSAGES_TOTAL: 573905877 # - Messages received by server (total) \nFRAMES_PER_MIN: 17373801.439247 # - Frames received rate per minute \nMESSAGES_PER_MIN: 17372968.482111 # - Messages received rate per minute \n")])])]),s("h3",{attrs:{id:"client-stats"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client-stats"}},[e._v("#")]),e._v(" Client Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption-2"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Client memory consumption was stable at about 20.5GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/4m/top-client.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput-2"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 4000000 # - Number of connected clients \nFRAMES_TOTAL: 516770460 # - Frames received by client (total) \nMESSAGES_TOTAL: 516405193 # - Messages received by client (total) \nFRAMES_PER_MIN: 16801610.114129 # - Frames received rate per minute \nMESSAGES_PER_MIN: 16472169.881512 # - Messages received rate per minute \n")])])]),s("h2",{attrs:{id:"_5m-websockets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5m-websockets"}},[e._v("#")]),e._v(" 5M WebSockets")]),e._v(" "),s("h3",{attrs:{id:"setup-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup-2"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),s("img",{attrs:{alt:"Setup diagram",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/diagram/5m-websockets-setup.svg?sanitize=true"}}),e._v(" "),s("ul",[s("li",[e._v("Server Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-16 (16 vCPUs, 104 GB memory)")]),e._v(" running Debian GNU/Linux 9.")]),e._v(" "),s("li",[e._v("Client Machine - Google-Cloud "),s("strong",[e._v("n1-highmem-16 (16 vCPUs, 104 GB memory)")]),e._v(" running Debian GNU/Linux 9.")])]),e._v(" "),s("p",[s("strong",[e._v("Server application")]),e._v(" listens to 500 ports from 8000 to 8499\n(in order to prevent ephemeral ports exhaustion on the client - as we running all 5m clients on the same machine).\nOnce there is a message on WebSocket, server will echo client's message adding "),s("code",[e._v('"Hello from oatpp!"')]),e._v(" at the beginning.")]),e._v(" "),s("p",[s("strong",[e._v("Client application")]),e._v(" opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load.\nEach of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.")]),e._v(" "),s("p",[e._v("Both server and client applications are running asynchronous oatpp server/client based on "),s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[e._v("oatpp coroutines")]),e._v(".")],1),e._v(" "),s("hr"),e._v(" "),s("p",[e._v("As main point of memory consumption is linux sockets buffers, for 5M connections it was required to reduce "),s("code",[e._v("net.ipv4.tcp_rmem")]),e._v(" in\norder for the test to be stable")]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("sysctl -w net.ipv4.tcp_rmem"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v("'2048 2048 2048'")]),e._v("\n")])])]),s("p",[s("em",[e._v("Here we reduce read buffers as it appeared to have minimal performance impact in this particular case.")])]),e._v(" "),s("h2",{attrs:{id:"results-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#results-2"}},[e._v("#")]),e._v(" Results")]),e._v(" "),s("p",[e._v("Server showed stable performance through all the benchmark test delivering about "),s("code",[e._v("18 Million")]),e._v(" messages per minute ("),s("code",[e._v("~58 Mb/Second")]),e._v("):")]),e._v(" "),s("img",{attrs:{alt:"Server monitoring graph",src:"https://github.com/lganzzzo/oatpp-website-res/raw/master/benchmark/websocket/5m/monitoring.png",width:"800px"}}),e._v(" "),s("h3",{attrs:{id:"server-stats-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-stats-2"}},[e._v("#")]),e._v(" Server Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption-3"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Server memory consumption was stable at about 36GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/5m/top-server.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput-3"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 5000000 # - Number of connected clients \nFRAMES_TOTAL: 1179521220 # - Frames received by server (total) \nMESSAGES_TOTAL: 1177610133 # - Messages received by server (total) \nFRAMES_PER_MIN: 19625257.718400 # - Frames received rate per minute \nMESSAGES_PER_MIN: 19619426.046304 # - Messages received rate per minute \n")])])]),s("h3",{attrs:{id:"client-stats-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client-stats-2"}},[e._v("#")]),e._v(" Client Stats")]),e._v(" "),s("h4",{attrs:{id:"resource-consumption-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resource-consumption-4"}},[e._v("#")]),e._v(" Resource consumption")]),e._v(" "),s("p",[e._v("Client memory consumption was stable at about 24GB.")]),e._v(" "),s("img",{attrs:{alt:"Server resource consumption",border:"1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/benchmark/websocket/5m/top-client.png",width:"800px"}}),e._v(" "),s("h4",{attrs:{id:"throughput-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#throughput-4"}},[e._v("#")]),e._v(" Throughput")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("SOCKETS: 5000000 # - Number of connected clients \nFRAMES_TOTAL: 1108906831 # - Frames received by client (total) \nMESSAGES_TOTAL: 1097120434 # - Messages received by client (total) \nFRAMES_PER_MIN: 17878571.176088 # - Frames received rate per minute \nMESSAGES_PER_MIN: 17612701.369327 # - Messages received rate per minute \n")])])]),s("h2",{attrs:{id:"steps-to-reproduce"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#steps-to-reproduce"}},[e._v("#")]),e._v(" Steps to Reproduce")]),e._v(" "),s("p",[e._v("Create two "),s("code",[e._v("n1-highmem-16 (16 vCPUs, 104 GB memory) - Debian GNU/Linux 9")]),e._v(" instances in same VPC on Google Cloud.")]),e._v(" "),s("h3",{attrs:{id:"execute-the-following-commands-for-both-instances-ssh"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#execute-the-following-commands-for-both-instances-ssh"}},[e._v("#")]),e._v(" Execute the following commands for both instances (SSH).")]),e._v(" "),s("ul",[s("li",[e._v("Install git")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt-get")]),e._v(" update\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt-get")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n")])])]),s("ul",[s("li",[e._v("Clone "),s("a",{attrs:{href:"https://github.com/oatpp/benchmark-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("benchmark-websocket repo"),s("OutboundLink")],1),e._v(" and "),s("code",[e._v("cd")]),e._v(" to repo folder")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/oatpp/benchmark-websocket\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v(".\n$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" benchmark-websocket\n")])])]),s("ul",[s("li",[e._v("Install "),s("code",[e._v("oatpp")]),e._v(" and "),s("code",[e._v("oatpp-websocket")]),e._v(" modules (run ./prepare.sh script).")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./prepare.sh\n")])])]),s("ul",[s("li",[e._v("Configure environment (run ./sock-config-5m.sh script)")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./sock-config.sh\n$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("ulimit")]),e._v(" -n "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("6000000")]),e._v("\n")])])]),s("h3",{attrs:{id:"build-and-run-server"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run-server"}},[e._v("#")]),e._v(" Build and Run Server")]),e._v(" "),s("p",[e._v("Commands for server instance only:")]),e._v(" "),s("ul",[s("li",[e._v("Build server")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" server/build/\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("make")]),e._v("\n")])])]),s("ul",[s("li",[e._v("Run server")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./wsb-server-exe --tp "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("16")]),e._v(" --tio "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("8")]),e._v(" --pc "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("500")]),e._v("\n")])])]),s("p",[e._v("where:"),s("br"),e._v(" "),s("code",[e._v("--tp")]),e._v(" - number of data-processing threads."),s("br"),e._v(" "),s("code",[e._v("--tio")]),e._v(" - number of I/O workers."),s("br"),e._v(" "),s("code",[e._v("--pc")]),e._v(" - number of ports to listen to.")]),e._v(" "),s("h3",{attrs:{id:"build-and-run-client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run-client"}},[e._v("#")]),e._v(" Build and Run Client")]),e._v(" "),s("p",[e._v("Commands for client instance only:")]),e._v(" "),s("ul",[s("li",[e._v("Build client")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" client/build/\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("..")]),e._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("make")]),e._v("\n")])])]),s("ul",[s("li",[e._v("Run client")])]),e._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[e._v("$ ./wsb-client-exe --tp "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("16")]),e._v(" --tio "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("8")]),e._v(" -h "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("server-private-ip"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" --socks-max "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("5000000")]),e._v(" --socks-port "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("10000")]),e._v(" --si "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" --sf "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("30")]),e._v(" --pc "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("500")]),e._v("\n")])])]),s("p",[e._v("where:"),s("br"),e._v(" "),s("code",[e._v("--tp")]),e._v(" - number of data-processing threads."),s("br"),e._v(" "),s("code",[e._v("--tio")]),e._v(" - number of I/O workers."),s("br"),e._v(" "),s("code",[e._v("-h ")]),e._v(" - substitute "),s("strong",[e._v("private-ip")]),e._v(" of server instance here."),s("br"),e._v(" "),s("code",[e._v("--socks-max")]),e._v(" - how many client connections to establish."),s("br"),e._v(" "),s("code",[e._v("--socks-port")]),e._v(" - how many client connections per port."),s("br"),e._v(" "),s("code",[e._v("--si 1000 --sf 30")]),e._v(" - control how fast clients will connect to server. Here - each "),s("code",[e._v("1000")]),e._v(" iterations sleep for "),s("code",[e._v("30")]),e._v(" milliseconds."),s("br"),e._v(" "),s("code",[e._v("--pc")]),e._v(" - number of available server ports to connect to.")]),e._v(" "),s("p",[s("strong",[e._v("Note")]),e._v(" - clients will not start load until all clients are connected."),s("br"),e._v(" "),s("strong",[e._v("Note")]),e._v(" - client app will fail with assertion if any of clients has failed.")]),e._v(" "),s("h2",{attrs:{id:"conclusion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),s("p",[e._v("Previous results for 2M WebSockets were "),s("strong",[e._v("9 Million messages per minute ~32.7 Mb/Second")]),e._v(". So it was "),s("strong",[e._v("expected")]),e._v(" to\nget something aroud "),s("strong",[e._v("18 Million messages per minute ~64 Mb/Second")]),e._v(" in this benchmark (As computing power was increased x2).")]),e._v(" "),s("p",[e._v("Actual results are "),s("strong",[e._v("17-18 Million messages per minute, with about ~58 Mb/Second")]),e._v(" - which is a good result, almost as expected.")]),e._v(" "),s("p",[e._v("At this point oatpp has shown almost constant I/O performance with respect load increase.")]),e._v(" "),s("h2",{attrs:{id:"links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp repo"),s("OutboundLink")],1)]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/benchmark-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("This benchmark repo"),s("OutboundLink")],1)]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-websocket repo"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/282.3f32df3a.js b/docs/.vuepress/dist/assets/js/282.3f32df3a.js deleted file mode 100644 index 79409bdbc..000000000 --- a/docs/.vuepress/dist/assets/js/282.3f32df3a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[282],{654:function(t,o,r){"use strict";r.r(o);var a=r(42),e=Object(a.a)({},(function(){var t=this,o=t.$createElement,r=t._self._c||o;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"contact"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contact"}},[t._v("#")]),t._v(" Contact "),r("seo")],1),t._v(" "),r("h2",{attrs:{id:"communities"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#communities"}},[t._v("#")]),t._v(" Communities")]),t._v(" "),r("ul",[r("li",[t._v("Developers chat on "),r("strong",[t._v("Gitter")]),t._v(". "),r("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[t._v("oat++ framework/Lobby"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("Follow us on "),r("strong",[t._v("Twitter")]),t._v(" for latest news. "),r("a",{attrs:{href:"https://twitter.com/oatpp_io",target:"_blank",rel:"noopener noreferrer"}},[t._v("@oatpp_io"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("Join community on "),r("strong",[t._v("Reddit")]),t._v(". "),r("a",{attrs:{href:"https://www.reddit.com/r/oatpp/",target:"_blank",rel:"noopener noreferrer"}},[t._v("r/oatpp"),r("OutboundLink")],1)])]),t._v(" "),r("h2",{attrs:{id:"mailing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#mailing"}},[t._v("#")]),t._v(" Mailing")]),t._v(" "),r("ul",[r("li",[t._v("PR, questions, propositions, feedback, etc. - "),r("a",{attrs:{href:"mailto:contact@oatpp.io"}},[t._v("contact@oatpp.io")])]),t._v(" "),r("li",[t._v("Request consultancy or a tailored solution - "),r("a",{attrs:{href:"mailto:consultancy@oatpp.io"}},[t._v("consultancy@oatpp.io")])])])])}),[],!1,null,null,null);o.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/283.75ead362.js b/docs/.vuepress/dist/assets/js/283.75ead362.js deleted file mode 100644 index df264ce8e..000000000 --- a/docs/.vuepress/dist/assets/js/283.75ead362.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[283],{655:function(t,e,o){"use strict";o.r(e);var r=o(42),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"contributing-to-oat"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#contributing-to-oat"}},[t._v("#")]),t._v(" Contributing to Oat++ "),o("seo")],1),t._v(" "),o("p",[t._v("Thank you for your interest in the project, and for taking time to contribute.")]),t._v(" "),o("h2",{attrs:{id:"how-to-contribute"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-to-contribute"}},[t._v("#")]),t._v(" How to contribute")]),t._v(" "),o("p",[t._v("All kind of contributions are very welcome.")]),t._v(" "),o("h3",{attrs:{id:"join-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[t._v("#")]),t._v(" Join the community")]),t._v(" "),o("ul",[o("li",[t._v("Any questions, propositions, etc. "),o("strong",[t._v("Email")]),t._v(". "),o("a",{attrs:{href:"mailto:contact@oatpp.io"}},[t._v("contact@oatpp.io")])]),t._v(" "),o("li",[t._v("Join discussion on "),o("strong",[t._v("Gitter")]),t._v(". "),o("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[t._v("oat++ framework/Lobby"),o("OutboundLink")],1)]),t._v(" "),o("li",[t._v("Follow us on "),o("strong",[t._v("Twitter")]),t._v(" for latest news. "),o("a",{attrs:{href:"https://twitter.com/oatpp_io",target:"_blank",rel:"noopener noreferrer"}},[t._v("@oatpp_io"),o("OutboundLink")],1)]),t._v(" "),o("li",[t._v("Join community on "),o("strong",[t._v("Reddit")]),t._v(". "),o("a",{attrs:{href:"https://www.reddit.com/r/oatpp/",target:"_blank",rel:"noopener noreferrer"}},[t._v("r/oatpp"),o("OutboundLink")],1)])]),t._v(" "),o("h3",{attrs:{id:"try-to-use-oat"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#try-to-use-oat"}},[t._v("#")]),t._v(" Try to use Oat++")]),t._v(" "),o("ul",[o("li",[t._v("Grab example project from the "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp-examples",target:"_blank",rel:"noopener noreferrer"}},[t._v("list of examples"),o("OutboundLink")],1)]),t._v(" "),o("li",[t._v("Take starter project and try to build something on top of it\n"),o("ul",[o("li",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter",target:"_blank",rel:"noopener noreferrer"}},[t._v("Starter project with Simple API"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-async",target:"_blank",rel:"noopener noreferrer"}},[t._v("Starter project with Async API"),o("OutboundLink")],1)])])]),t._v(" "),o("li",[t._v("Try to reproduce benchmark results "),o("RouterLink",{attrs:{to:"/benchmark/websocket/2-million/"}},[t._v("2 Million WebSockets")])],1)]),t._v(" "),o("h3",{attrs:{id:"open-an-issue"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#open-an-issue"}},[t._v("#")]),t._v(" Open an issue")]),t._v(" "),o("p",[t._v("Ask question or report a bug "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),o("OutboundLink")],1)]),t._v(" "),o("h3",{attrs:{id:"create-a-pull-request"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#create-a-pull-request"}},[t._v("#")]),t._v(" Create a pull request")]),t._v(" "),o("p",[t._v("All kind of "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/pulls",target:"_blank",rel:"noopener noreferrer"}},[t._v("pull requests"),o("OutboundLink")],1),t._v(" are very welcome.\nEven if it's just fixing typos, or adding documentation.")]),t._v(" "),o("p",[o("em",[t._v("Please make sure your pull requests confirming to overall project code-style.")]),o("br"),t._v(" "),o("em",[t._v("Please make sure to notify the community if you are working on an issue so we don't duplicate work!")])]),t._v(" "),o("h3",{attrs:{id:"create-oat-extension-module"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#create-oat-extension-module"}},[t._v("#")]),t._v(" Create Oat++ extension module")]),t._v(" "),o("p",[t._v("Use "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-module",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-starter-module"),o("OutboundLink")],1),t._v(" to create oatpp extensions.")]),t._v(" "),o("h2",{attrs:{id:"code-of-conduct"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#code-of-conduct"}},[t._v("#")]),t._v(" Code of Conduct")]),t._v(" "),o("p",[t._v("Follow "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/CODE_OF_CONDUCT.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("Code of Conduct"),o("OutboundLink")],1),t._v(" at all times."),o("br"),t._v("\nPlease report unacceptable behavior to "),o("a",{attrs:{href:"mailto:oatpp.io@gmail.com"}},[t._v("oatpp.io@gmail.com")]),t._v(".")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/284.74074c2c.js b/docs/.vuepress/dist/assets/js/284.74074c2c.js deleted file mode 100644 index 6a8204539..000000000 --- a/docs/.vuepress/dist/assets/js/284.74074c2c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[284],{656:function(t,o,e){"use strict";e.r(o);var n=e(42),a=Object(n.a)({},(function(){var t=this,o=t.$createElement,e=t._self._c||o;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"async"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#async"}},[t._v("#")]),t._v(" Async "),e("seo")],1),t._v(" "),e("p",[t._v("Roughly, the Async approach can be described as iterating through NON-BLOCKING operations in the loop.\nAsync operation should NOT block. If async operation blocks, it makes the entire loop and the whole Async system wait for that operation to finish.\nWhile it brings in some challenges to code-writing, it also leads to better CPU utilization and some performance increase.")]),t._v(" "),e("p",[t._v("If you go with Async approach you should always make sure:")]),t._v(" "),e("ul",[e("li",[t._v("That you are using NON-BLOCKING I/O.")]),t._v(" "),e("li",[t._v("Calls that you make from within Async methods are NON-BLOCKING.")])]),t._v(" "),e("p",[t._v("All asynchronous logic in oatpp is based on "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/"}},[t._v("oatpp::async::Executor")]),t._v(" and "),e("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("oatpp coroutines")]),t._v(".")],1),t._v(" "),e("p",[t._v('Entities that provide Async API are named "'),e("strong",[t._v("Async")]),t._v('Entity", Async methods are named "doSomething'),e("strong",[t._v("Async")]),t._v('",\ncode-gen macros that generate Async code are named "MACRO_'),e("strong",[t._v("ASYNC")]),t._v('"')]),t._v(" "),e("p",[t._v("For better understanding and examples see "),e("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("oatpp coroutines")])],1)])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/285.b79dde59.js b/docs/.vuepress/dist/assets/js/285.b79dde59.js deleted file mode 100644 index a28206ddf..000000000 --- a/docs/.vuepress/dist/assets/js/285.b79dde59.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[285],{657:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"api-client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api-client"}},[t._v("#")]),t._v(" Api Client "),s("seo")],1),t._v(" "),s("p",[s("code",[t._v("ApiClient")]),t._v(" is the class which extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/ApiClient/"}},[t._v("oatpp::web::client::ApiClient")]),t._v(".\nIt provides convenient declaration of remote API calls.")],1),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#declaration"}},[t._v("Declaration")])]),s("li",[s("a",{attrs:{href:"#api-call-types"}},[t._v("API Call Types")])]),s("li",[s("a",{attrs:{href:"#declaration-of-api-calls"}},[t._v("Declaration of API Calls")]),s("ul",[s("li",[s("a",{attrs:{href:"#path-variables-mapping"}},[t._v("Path Variables Mapping")])]),s("li",[s("a",{attrs:{href:"#headers-mapping"}},[t._v("Headers Mapping")])]),s("li",[s("a",{attrs:{href:"#query-parameters-mapping"}},[t._v("Query Parameters Mapping")])]),s("li",[s("a",{attrs:{href:"#body-parameter-mapping"}},[t._v("Body Parameter Mapping")])])])]),s("li",[s("a",{attrs:{href:"#create-api-client"}},[t._v("Create Api Client")]),s("ul",[s("li",[s("a",{attrs:{href:"#connection-pool"}},[t._v("Connection Pool")])]),s("li",[s("a",{attrs:{href:"#automatic-retries"}},[t._v("Automatic Retries")])])])]),s("li",[s("a",{attrs:{href:"#examples-of-code"}},[t._v("Examples of code")])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"declaration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declaration"}},[t._v("#")]),t._v(" Declaration")]),t._v(" "),s("p",[t._v("API calls are created with the help of code-gen macros."),s("br"),t._v("\nAPI calls code generation section must begin with\n"),s("code",[t._v("#include OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v(" and must be closed with\n"),s("code",[t._v("#include OATPP_CODEGEN_END(ApiClient)")]),t._v("."),s("br"),t._v(" "),s("em",[t._v("Do not forget to close the code generation section in order to avoid macro conflicts later in the code!")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/client/ApiClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin code-gen section")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyApiClient")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CLIENT_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyApiClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/resource"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getResource"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End code-gen section")]),t._v("\n")])])]),s("h2",{attrs:{id:"api-call-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api-call-types"}},[t._v("#")]),t._v(" API Call Types")]),t._v(" "),s("p",[t._v("There are two types of generated API calls:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("API_CALL")]),t._v(" - Used with "),s("strong",[t._v("Simple API")]),t._v(" (multithreaded API). Generates method which returns "),s("code",[t._v("std::shared_ptr")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/incoming/Response/"}},[t._v("incoming::Response")]),t._v(".")],1),t._v(" "),s("li",[s("code",[t._v("API_CALL_ASYNC")]),t._v(" - Used with "),s("strong",[t._v("Async API")]),t._v(". Generates "),s("code",[t._v("oatpp::async::CoroutineWithResult")]),t._v(" with "),s("code",[t._v("std::shared_ptr")]),t._v(" return type.\nSee "),s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("oatpp coroutines")]),t._v(" for more information.")],1)]),t._v(" "),s("h2",{attrs:{id:"declaration-of-api-calls"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declaration-of-api-calls"}},[t._v("#")]),t._v(" Declaration of API Calls")]),t._v(" "),s("p",[t._v("Parameters and declarations of "),s("code",[t._v("API_CALL")]),t._v(" and "),s("code",[t._v("API_CALL_ASYNC")]),t._v(" are absolutely identical. The difference is in the return type only.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("method"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("optional param"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("mappings"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL_ASYNC")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("method"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("optional param"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("mappings"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"path-variables-mapping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#path-variables-mapping"}},[t._v("#")]),t._v(" Path Variables Mapping")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h4",{attrs:{id:"path-variable-name-qualifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#path-variable-name-qualifier"}},[t._v("#")]),t._v(" Path Variable Name Qualifier")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{user-id}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"headers-mapping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#headers-mapping"}},[t._v("#")]),t._v(" Headers Mapping")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("HEADER")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"X-USER-ID"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"query-parameters-mapping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters-mapping"}},[t._v("#")]),t._v(" Query Parameters Mapping")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("Here the destination URL will be:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("/users?age=\n")])])]),s("p",[t._v("If more query parameters specified:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" firstName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("the destination URL will be:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("/users?age=&firstName=\n")])])]),s("h4",{attrs:{id:"query-parameter-name-qualifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-parameter-name-qualifier"}},[t._v("#")]),t._v(" Query Parameter Name Qualifier")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-age"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("the destination URL will be:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("/users?user-age=\n")])])]),s("h3",{attrs:{id:"body-parameter-mapping"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#body-parameter-mapping"}},[t._v("#")]),t._v(" Body Parameter Mapping")]),t._v(" "),s("h4",{attrs:{id:"body-as-string"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#body-as-string"}},[t._v("#")]),t._v(" Body As String")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userInfo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h4",{attrs:{id:"body-as-dto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#body-as-dto"}},[t._v("#")]),t._v(" Body As DTO")]),t._v(" "),s("p",[s("em",[t._v("DTO will be serialized using ObjectMapper given to the ApiClient constructor")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userInfo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"create-api-client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-api-client"}},[t._v("#")]),t._v(" Create Api Client")]),t._v(" "),s("p",[t._v("To create API client you need "),s("code",[t._v("network::client::ConnectionProvider")]),t._v(", "),s("code",[t._v("web::client::RequestExecutor")]),t._v(", and "),s("code",[t._v("ObjectMapper")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/client/HttpRequestExecutor.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/client/ConnectionProvider.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create connection provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" tcp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create HTTP request executor */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create JSON object mapper */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" objectMapper "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create API client */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"connection-pool"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connection-pool"}},[t._v("#")]),t._v(" Connection Pool")]),t._v(" "),s("p",[t._v("To use connection pool for API client requests - wrap connection provider with "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionPool/"}},[t._v("ConnectionPool")]),t._v(" and pass it to "),s("code",[t._v("RequestExecutor")]),t._v(":")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/ConnectionPool.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create connection provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" tcp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create connection pool */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionPool "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ClientConnectionPool"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n connectionProvider "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* connection provider */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max connections */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max lifetime of idle connection */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create request executor */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionPool "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* pass connection pool */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create API client */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"automatic-retries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#automatic-retries"}},[t._v("#")]),t._v(" Automatic Retries")]),t._v(" "),s("p",[t._v("To enable automatic retries - provide "),s("a",{attrs:{href:"http://localhost:8080/api/latest/oatpp/web/client/RetryPolicy/",target:"_blank",rel:"noopener noreferrer"}},[t._v("RetryPolicy"),s("OutboundLink")],1),t._v(" to the API client.")]),t._v(" "),s("p",[s("em",[t._v("Note: Connection pools and automatic retries can work together with no conflicts - invalid connections are dismissed from the pool right away. And after retry interval client will request a new valid connection.")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/ConnectionPool.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create connection provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" tcp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create connection pool */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionPool "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ClientConnectionPool"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n connectionProvider "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* connection provider */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max connections */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max lifetime of idle connection */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create retry policy */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" retryPolicy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SimpleRetryPolicy"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max retries */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* retry interval */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create request executor */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionPool"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" retryPolicy "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* retry policy */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create API client */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"examples-of-code"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples-of-code"}},[t._v("#")]),t._v(" Examples of code")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/example-api-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/example-api-client"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/286.dd6bf1be.js b/docs/.vuepress/dist/assets/js/286.dd6bf1be.js deleted file mode 100644 index b1f5152ad..000000000 --- a/docs/.vuepress/dist/assets/js/286.dd6bf1be.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[286],{658:function(t,s,a){"use strict";a.r(s);var n=a(42),r=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"api-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-controller"}},[t._v("#")]),t._v(" Api Controller "),a("seo")],1),t._v(" "),a("p",[a("code",[t._v("ApiController")]),t._v(" is the class which extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/"}},[t._v("oatpp::web::server::api::ApiController")]),t._v(". It implements and manages endpoints.")],1),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#declaration"}},[t._v("Declaration")])]),a("li",[a("a",{attrs:{href:"#endpoint-types"}},[t._v("Endpoint Types")])]),a("li",[a("a",{attrs:{href:"#endpoint-specifics"}},[t._v("ENDPOINT Specifics")]),a("ul",[a("li",[a("a",{attrs:{href:"#path-variables-mapping"}},[t._v("Path Variables Mapping")])]),a("li",[a("a",{attrs:{href:"#headers-mapping"}},[t._v("Headers Mapping")])]),a("li",[a("a",{attrs:{href:"#query-parameters-mapping"}},[t._v("Query Parameters Mapping")])]),a("li",[a("a",{attrs:{href:"#request-body-mapping"}},[t._v("Request Body Mapping")])]),a("li",[a("a",{attrs:{href:"#the-whole-request-object-mapping"}},[t._v("The Whole Request Object Mapping")])]),a("li",[a("a",{attrs:{href:"#authorization-basic"}},[t._v("Authorization - Basic")])]),a("li",[a("a",{attrs:{href:"#authorization-bearer"}},[t._v("Authorization - Bearer")])]),a("li",[a("a",{attrs:{href:"#authorization-custom"}},[t._v("Authorization - Custom")])]),a("li",[a("a",{attrs:{href:"#authorization-handler-qualifier"}},[t._v("Authorization Handler Qualifier")])]),a("li",[a("a",{attrs:{href:"#cors"}},[t._v("CORS")])])])]),a("li",[a("a",{attrs:{href:"#endpoint-async-specifics"}},[t._v("ENDPOINT_ASYNC Specifics")])]),a("li",[a("a",{attrs:{href:"#endpoint-annotation-and-api-documentation"}},[t._v("Endpoint Annotation And API Documentation")]),a("ul",[a("li",[a("a",{attrs:{href:"#endpoint-parameters-annotation"}},[t._v("Endpoint Parameters Annotation")])]),a("li",[a("a",{attrs:{href:"#examples-and-q-a"}},[t._v("Examples and Q&A")])])])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"declaration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declaration"}},[t._v("#")]),t._v(" Declaration")]),t._v(" "),a("p",[t._v("Endpoints are created with the help of code-gen macros."),a("br"),t._v("\nEndpoints code generation section must begin with\n"),a("code",[t._v("#include OATPP_CODEGEN_BEGIN(ApiController)")]),t._v(" and must be closed with\n"),a("code",[t._v("#include OATPP_CODEGEN_END(ApiController)")]),t._v("."),a("br"),t._v(" "),a("em",[t._v("Do not forget to close the code generation section in order to avoid macro conflicts later in the code!")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/api/ApiController.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiController) ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin ApiController codegen section")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello World!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - more endpoints here")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiController) ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End ApiController codegen section")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-types"}},[t._v("#")]),t._v(" Endpoint Types")]),t._v(" "),a("p",[t._v("There are two types of generated endpoints:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("ENDPOINT")]),t._v(" - Used with "),a("strong",[t._v("Simple API")]),t._v(" (multithreaded API). Generates method which returns "),a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("li",[a("code",[t._v("ENDPOINT_ASYNC")]),t._v(" - Used with "),a("strong",[t._v("Async API")]),t._v(". Generates "),a("code",[t._v("oatpp::async::CoroutineWithResult")]),t._v(" with "),a("code",[t._v("std::shared_ptr")]),t._v(" return type.\nSee "),a("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("oatpp coroutines")]),t._v(" for more information.")],1)]),t._v(" "),a("h2",{attrs:{id:"endpoint-specifics"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-specifics"}},[t._v("#")]),t._v(" ENDPOINT Specifics")]),t._v(" "),a("p",[a("code",[t._v("ENDPOINT")]),t._v(" macro has the following params:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("method"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("optional param"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("mappings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"path-variables-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#path-variables-mapping"}},[t._v("#")]),t._v(" Path Variables Mapping")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"userId=%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"path-variable-name-qualifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#path-variable-name-qualifier"}},[t._v("#")]),t._v(" Path Variable Name Qualifier")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{my-path-variable}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-path-variable"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"userId=%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"headers-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#headers-mapping"}},[t._v("#")]),t._v(" Headers Mapping")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("HEADER")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userAgent"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"User-Agent"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"userAgent=%s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userAgent"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"query-parameters-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters-mapping"}},[t._v("#")]),t._v(" Query Parameters Mapping")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"age=%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Note:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("age")]),t._v(" - is "),a("strong",[t._v("required")]),t._v(" query parameter here. "),a("strong",[t._v("Case sensitive.")])]),t._v(" "),a("li",[t._v("Accessible URL example - "),a("code",[t._v("/users?age=21")]),t._v(".")])]),t._v(" "),a("h4",{attrs:{id:"query-parameter-name-qualifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameter-name-qualifier"}},[t._v("#")]),t._v(" Query Parameter Name Qualifier")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-age"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"age=%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Note:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("user-age")]),t._v(" - is "),a("strong",[t._v("required")]),t._v(" query parameter here. "),a("strong",[t._v("Case sensitive.")])]),t._v(" "),a("li",[t._v("Accessible URL example - "),a("code",[t._v("/users?user-age=21")]),t._v(".")])]),t._v(" "),a("h4",{attrs:{id:"optional-query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#optional-query-parameters"}},[t._v("#")]),t._v(" Optional Query Parameters")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERIES")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("QueryParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" queryParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" param "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" queryParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAll")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"%s=%s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" param"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("first"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" param"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("second"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("See also "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/protocol/http/Http/#queryparams"}},[t._v("QueryParams")]),t._v(" data type.")],1),t._v(" "),a("h3",{attrs:{id:"request-body-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-body-mapping"}},[t._v("#")]),t._v(" Request Body Mapping")]),t._v(" "),a("h4",{attrs:{id:"body-as-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#body-as-string"}},[t._v("#")]),t._v(" Body As String")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" postUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userInfo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"body='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Note:")]),t._v(" "),a("ul",[a("li",[t._v("Empty body is allowed here.")]),t._v(" "),a("li",[t._v("Binary data is allowed here.")])]),t._v(" "),a("h4",{attrs:{id:"body-as-dto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#body-as-dto"}},[t._v("#")]),t._v(" Body As DTO")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" postUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"user-name='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Note:")]),t._v(" "),a("ul",[a("li",[t._v("The body is parsed using default ObjectMapper (the one passed to the constructor of ApiController).")])]),t._v(" "),a("h3",{attrs:{id:"the-whole-request-object-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-whole-request-object-mapping"}},[t._v("#")]),t._v(" The Whole Request Object Mapping")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" testEndpoint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("REQUEST")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"user-agent='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-agent"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"authorization-basic"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization-basic"}},[t._v("#")]),t._v(" Authorization - Basic")]),t._v(" "),a("h4",{attrs:{id:"default-basic-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-basic-authorization"}},[t._v("#")]),t._v(" Default Basic Authorization")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BasicAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/my/secret/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultBasicAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("password "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h4",{attrs:{id:"custom-basic-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#custom-basic-authorization"}},[t._v("#")]),t._v(" Custom Basic Authorization")]),t._v(" "),a("h5",{attrs:{id:"define-authorization-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#define-authorization-object"}},[t._v("#")]),t._v(" Define Authorization Object")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyAuthorizationObject")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationObject "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyAuthorizationObject")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pUserId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("userId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pUserId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h5",{attrs:{id:"define-authorization-handler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#define-authorization-handler"}},[t._v("#")]),t._v(" Define Authorization Handler")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyBasicAuthorizationHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BasicAuthorizationHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyBasicAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BasicAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("authorize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" password"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" password "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uid-admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h5",{attrs:{id:"endpoint-with-custom-basic-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-with-custom-basic-authorization"}},[t._v("#")]),t._v(" Endpoint With Custom Basic Authorization")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyBasicAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/my/secret/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uid-admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"authorization-bearer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization-bearer"}},[t._v("#")]),t._v(" Authorization - Bearer")]),t._v(" "),a("h4",{attrs:{id:"default-bearer-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-bearer-authorization"}},[t._v("#")]),t._v(" Default Bearer Authorization")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BearerAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/my/secret/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultBearerAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("token "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4e99e8c12de7e01535248d2bac85e732"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h4",{attrs:{id:"custom-bearer-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#custom-bearer-authorization"}},[t._v("#")]),t._v(" Custom Bearer Authorization")]),t._v(" "),a("h5",{attrs:{id:"define-authorization-object-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#define-authorization-object-2"}},[t._v("#")]),t._v(" Define Authorization Object")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyAuthorizationObject")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AuthorizationObject "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyAuthorizationObject")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pUserId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("userId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pUserId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h5",{attrs:{id:"define-authorization-handler-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#define-authorization-handler-2"}},[t._v("#")]),t._v(" Define Authorization Handler")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyBearerAuthorizationHandler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BearerAuthorizationHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyBearerAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BearerAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("authorize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" token"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("token "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4e99e8c12de7e01535248d2bac85e732"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uid-admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h5",{attrs:{id:"endpoint-with-custom-bearer-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-with-custom-bearer-authorization"}},[t._v("#")]),t._v(" Endpoint With Custom Bearer Authorization")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultAuthorizationHandler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyBearerAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/my/secret/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uid-admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"authorization-custom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization-custom"}},[t._v("#")]),t._v(" Authorization - Custom")]),t._v(" "),a("p",[t._v("To implement your custom Authorization - you have to extend "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationhandler"}},[t._v("AuthorizationHandler")]),t._v(" class.")],1),t._v(" "),a("h3",{attrs:{id:"authorization-handler-qualifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization-handler-qualifier"}},[t._v("#")]),t._v(" Authorization Handler Qualifier")]),t._v(" "),a("p",[t._v("You may specify the exact "),a("code",[t._v("AuthorizationHandler")]),t._v(" to be used on the endpoint.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_basicAuthHandler "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BasicAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_bearerAuthHandler "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("BearerAuthorizationHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-realm"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/basic/auth/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getBasicAuthResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultBasicAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_basicAuthHandler "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* qualifier */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("password "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/bearer/auth/resource"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getBearerAuthResource"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultBearerAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_bearerAuthHandler "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* qualifier */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("token "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4e99e8c12de7e01535248d2bac85e732"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"cors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cors"}},[t._v("#")]),t._v(" CORS")]),t._v(" "),a("h4",{attrs:{id:"add-cors-to-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-cors-to-endpoint"}},[t._v("#")]),t._v(" Add CORS To Endpoint")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ADD_CORS")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("getHello"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getHello"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"add-cors-macro-params"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-cors-macro-params"}},[t._v("#")]),t._v(" ADD_CORS Macro Params")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ADD_CORS")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("endpoint"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("allow_origin "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"*"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("allow_methods "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET, POST, OPTIONS"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("allow_headers "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"DNT, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Range"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("max_age "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1728000"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-async-specifics"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-async-specifics"}},[t._v("#")]),t._v(" ENDPOINT_ASYNC Specifics")]),t._v(" "),a("p",[a("code",[t._v("ENDPOINT_ASYNC")]),t._v(" macro has the following structure:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Root "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Name of the Coroutine */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//shared_ptr request; - is available as a property of the class")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Generate constructor and default fields")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello Async"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("In order to be able to access MyController's fields from the inside of the endpoint's Coroutine without additional casts add the following typedef to the controller:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" MyController __ControllerType"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"endpoint-annotation-and-api-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-annotation-and-api-documentation"}},[t._v("#")]),t._v(" Endpoint Annotation And API Documentation")]),t._v(" "),a("p",[a("code",[t._v("ApiController")]),t._v(" code-gen also supports the annotation of endpoints with additional info.\nThis info is then can be used to generate API documentation for Swagger-UI or for other API-documentation tools."),a("br"),t._v(" "),a("em",[t._v("For how-to integrate Swagger-UI in oatpp application, see "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp-swagger/"}},[t._v("oatpp-swagger")])],1),t._v(".")]),t._v(" "),a("p",[t._v("Additional endpoint info can be added in "),a("code",[t._v("ENDPOINT_INFO()")]),t._v(" block.")]),t._v(" "),a("p",[a("strong",[t._v("example:")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Simple API:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("createUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Create new User"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addConsumes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Async API:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CreateUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Create new User"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addConsumes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" CreateUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CreateUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("readBodyToDtoAsync"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDefaultObjectMapper")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("CreateUser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("returnResponse"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("returnResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])]),t._v(" "),a("p",[t._v("Note that endpoint-name in "),a("code",[t._v("ENDPOINT_INFO()")]),t._v(" block should be the same as endpoint-name in corresponding\n"),a("code",[t._v("ENDPOINT")]),t._v(" or "),a("code",[t._v("ENDPOINT_ASYNC")]),t._v(" block.")]),t._v(" "),a("h3",{attrs:{id:"endpoint-parameters-annotation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-parameters-annotation"}},[t._v("#")]),t._v(" Endpoint Parameters Annotation")]),t._v(" "),a("p",[t._v("You can annotate three types of endpoint parameters:")]),t._v(" "),a("ul",[a("li",[t._v("Headers - can be accessed as "),a("code",[t._v("info->headers")])]),t._v(" "),a("li",[t._v("Path Parameters - can be accessed as "),a("code",[t._v("info->pathParams")])]),t._v(" "),a("li",[t._v("Query Parameters - can be accessed as "),a("code",[t._v("info->queryParams")])])]),t._v(" "),a("p",[t._v("Parameters have next the attributes as for "),a("a",{attrs:{href:"https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameter-object",target:"_blank",rel:"noopener noreferrer"}},[t._v("Parameter Object in OpenAPI 3.0.0 specification"),a("OutboundLink")],1),t._v(":")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Field Name")]),t._v(" "),a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("name")]),t._v(" "),a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[t._v("The name of the parameter. Parameter names are case sensitive.")])]),t._v(" "),a("tr",[a("td",[t._v("description")]),t._v(" "),a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[t._v("A brief description of the parameter.")])]),t._v(" "),a("tr",[a("td",[t._v("required")]),t._v(" "),a("td",[a("code",[t._v("oatpp::Boolean")])]),t._v(" "),a("td",[t._v("Default value "),a("code",[t._v("true")]),t._v('. Determines whether this parameter is mandatory. If the parameter is "Path Parameter", its value MUST be '),a("code",[t._v("true")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[t._v("deprecated")]),t._v(" "),a("td",[a("code",[t._v("oatpp::Boolean")])]),t._v(" "),a("td",[t._v("Default value "),a("code",[t._v("false")]),t._v(". Specifies that a parameter is deprecated and SHOULD be transitioned out of usage.")])]),t._v(" "),a("tr",[a("td",[t._v("allowEmptyValue")]),t._v(" "),a("td",[a("code",[t._v("oatpp::Boolean")])]),t._v(" "),a("td",[t._v("Default value "),a("code",[t._v("null")]),t._v(". Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value.")])])])]),t._v(" "),a("p",[a("strong",[t._v("Example:")]),a("br"),t._v('\nAdd description to "userId" path parameter:')]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("getUserById"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// general")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Get one User by userId"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_404"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"text/plain"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// params specific")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("pathParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"userId"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"User Identifier"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" user "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserById")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_404"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"User not found"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Add parameters which are not present in the mapping -\nuse "),a("code",[t._v("add(param-name)")]),t._v(" instead of "),a("code",[t._v("[]")]),t._v(" operator:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ConcatParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Example. Documenting path params for async APIs."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"text/plain"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("pathParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("add"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"just the first parameter"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// add param1 info")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("pathParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("add"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"just the second parameter"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// add param2 info")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/params/{param1}/{param2}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ConcatParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ConcatParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" p1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPathVariable")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" p2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPathVariable")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" p2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param1 and param2 should not be null"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"param1 + param2 = \'"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" p1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" p2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\'"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"examples-and-q-a"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#examples-and-q-a"}},[t._v("#")]),t._v(" Examples and Q&A")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/47",target:"_blank",rel:"noopener noreferrer"}},[t._v("How to upload and access a file. [Endpoint documentation]. [Swagger-UI]"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/lganzzzo/oatpp-swagger-with-async-api",target:"_blank",rel:"noopener noreferrer"}},[t._v("Simple example how to document Async-Controller endpoints with Swagger-UI"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/287.f3b97935.js b/docs/.vuepress/dist/assets/js/287.f3b97935.js deleted file mode 100644 index 91663fc3b..000000000 --- a/docs/.vuepress/dist/assets/js/287.f3b97935.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[287],{659:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"data-transfer-object-dto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#data-transfer-object-dto"}},[t._v("#")]),t._v(" Data Transfer Object (DTO) "),s("seo")],1),t._v(" "),s("p",[t._v("DTO is any object of the class which extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#dto"}},[t._v("oatpp::DTO")]),t._v(".\nIt is a special object which can be Serialized and Deserialized with the help of\n"),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#declaration"}},[t._v("Declaration")]),s("ul",[s("li",[s("a",{attrs:{href:"#field-name-qualifier"}},[t._v("Field Name Qualifier")])]),s("li",[s("a",{attrs:{href:"#default-value"}},[t._v("Default Value")])]),s("li",[s("a",{attrs:{href:"#additional-field-info"}},[t._v("Additional Field Info")])]),s("li",[s("a",{attrs:{href:"#declare-field-as-object"}},[t._v("Declare Field As Object")])]),s("li",[s("a",{attrs:{href:"#declare-field-as-list"}},[t._v("Declare Field As List")])]),s("li",[s("a",{attrs:{href:"#declare-field-as-map"}},[t._v("Declare Field As Map")])]),s("li",[s("a",{attrs:{href:"#core-types"}},[t._v("Core Types")])]),s("li",[s("a",{attrs:{href:"#custom-types"}},[t._v("Custom Types")])])])]),s("li",[s("a",{attrs:{href:"#example"}},[t._v("Example")]),s("ul",[s("li",[s("a",{attrs:{href:"#serialize-deserialize"}},[t._v("Serialize / Deserialize")])]),s("li",[s("a",{attrs:{href:"#use-json-beautifier"}},[t._v("Use JSON Beautifier")])])])]),s("li",[s("a",{attrs:{href:"#examples-of-code"}},[t._v("Examples of code")])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"declaration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declaration"}},[t._v("#")]),t._v(" Declaration")]),t._v(" "),s("p",[t._v("DTO objects are generated within DTO-code-gen section. DTO code generation section must begin with"),s("br"),t._v(" "),s("code",[t._v("#include OATPP_CODEGEN_BEGIN(DTO)")]),t._v(" and must be closed with "),s("code",[t._v("#include OATPP_CODEGEN_END(DTO)")]),t._v(".\n"),s("em",[t._v("Do not forget to close code generation section in order to avoid macro conflicts later in the code!")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/Types.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin DTO codegen section")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("User")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* extends */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End DTO codegen section")]),t._v("\n")])])]),s("h3",{attrs:{id:"field-name-qualifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#field-name-qualifier"}},[t._v("#")]),t._v(" Field Name Qualifier")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"default-value"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#default-value"}},[t._v("#")]),t._v(" Default Value")]),t._v(" "),s("p",[t._v("By default all values are set to "),s("code",[t._v("nullptr")]),t._v(". You can override default values by assigning values to DTO fields.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"additional-field-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#additional-field-info"}},[t._v("#")]),t._v(" Additional Field Info")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD_INFO")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n info"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user first name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//<-- Fields description is integrated with Swagger-UI.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"declare-field-as-object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-field-as-object"}},[t._v("#")]),t._v(" Declare Field As Object")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"declare-field-as-list"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-field-as-list"}},[t._v("#")]),t._v(" Declare Field As List")]),t._v(" "),s("p",[t._v("List of primitives:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" colors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("List of Objects:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" colors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"declare-field-as-map"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-field-as-map"}},[t._v("#")]),t._v(" Declare Field As Map")]),t._v(" "),s("p",[t._v("Map "),s("code",[t._v("String --\x3e Int32")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" colors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Map "),s("code",[t._v("String --\x3e Object")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" colors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"core-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#core-types"}},[t._v("#")]),t._v(" Core Types")]),t._v(" "),s("p",[t._v("Types defined in "),s("code",[t._v("oatpp/core/Types.hpp")]),t._v(".")]),t._v(" "),s("h4",{attrs:{id:"primitives"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#primitives"}},[t._v("#")]),t._v(" Primitives")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Underlying Type")]),t._v(" "),s("th",[t._v("Default Value")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#int8"}},[t._v("Int8")])],1),t._v(" "),s("td",[s("code",[t._v("v_int8")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#uint8"}},[t._v("UInt8")])],1),t._v(" "),s("td",[s("code",[t._v("v_uint8")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#int16"}},[t._v("Int16")])],1),t._v(" "),s("td",[s("code",[t._v("v_int16")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#uint16"}},[t._v("UInt16")])],1),t._v(" "),s("td",[s("code",[t._v("v_uint16")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#int32"}},[t._v("Int32")])],1),t._v(" "),s("td",[s("code",[t._v("v_int32")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#uint32"}},[t._v("UInt32")])],1),t._v(" "),s("td",[s("code",[t._v("v_uint32")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#int64"}},[t._v("Int64")])],1),t._v(" "),s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#uint64"}},[t._v("UInt64")])],1),t._v(" "),s("td",[s("code",[t._v("v_uint64")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#float32"}},[t._v("Float32")])],1),t._v(" "),s("td",[s("code",[t._v("v_float32")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#float64"}},[t._v("Float64")])],1),t._v(" "),s("td",[s("code",[t._v("v_float64")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#boolean"}},[t._v("Boolean")])],1),t._v(" "),s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])])])]),t._v(" "),s("h5",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32 a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nv_int32 va "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"collections"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#collections"}},[t._v("#")]),t._v(" Collections")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Underlying Collection")]),t._v(" "),s("th",[t._v("Default Value")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#vector"}},[t._v("Vector")])],1),t._v(" "),s("td",[s("code",[t._v("std::vector")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#list"}},[t._v("List")])],1),t._v(" "),s("td",[s("code",[t._v("std::list")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedset"}},[t._v("UnorderedSet")])],1),t._v(" "),s("td",[s("code",[t._v("std::unordered_set")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#fields"}},[t._v("Fields")])],1),t._v(" "),s("td",[s("code",[t._v("std::list>")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedfields"}},[t._v("UnorderedFields")])],1),t._v(" "),s("td",[s("code",[t._v("std::unordered_map")])]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])])])]),t._v(" "),s("h5",{attrs:{id:"examples-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples-2"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" porridges "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Owsianka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Stirabout"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Zabkása"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" porridge "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("porridges"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"special-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#special-types"}},[t._v("#")]),t._v(" Special Types")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Underlying Type")]),t._v(" "),s("th",[t._v("Default Value")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("String")])],1),t._v(" "),s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/StrBuffer/"}},[t._v("oatpp::base::StrBuffer")])],1),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#object"}},[t._v("Object")])],1),t._v(" "),s("td",[t._v("class which extends "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#dto"}},[t._v("oatpp::DTO")])],1),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#enum"}},[t._v("Enum")])],1),t._v(" "),s("td",[s("code",[t._v("enum")]),t._v(" declared via "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/dto/enum_define/#enum"}},[t._v("ENUM")])],1),t._v(" "),s("td",[s("code",[t._v("nullptr")])])]),t._v(" "),s("tr",[s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#any"}},[t._v("Any")])],1),t._v(" "),s("td",[t._v("any other mapping-enabled type")]),t._v(" "),s("td",[s("code",[t._v("nullptr")])])])])]),t._v(" "),s("h5",{attrs:{id:"examples-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples-3"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" dto "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\noatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Any any "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" dto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dto "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" any"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("retrieve"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// throws `std::runtime_error` if stored type doesn't match.")]),t._v("\n")])])]),s("h3",{attrs:{id:"custom-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#custom-types"}},[t._v("#")]),t._v(" Custom Types")]),t._v(" "),s("p",[t._v('To simplify the integration of custom types with oatpp Object-Mapping framework the "'),s("strong",[t._v("Type Interpretation")]),t._v('" feature was introduced.'),s("br"),t._v(" "),s("em",[t._v("For information about custom object mapping contact us in "),s("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[t._v("dev-chat"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("Let's say you have some struct that is not part of oatpp object-mapping framework.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("VPoint")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n v_int32 x"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n v_int32 y"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n v_int32 z"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("To integrate it with oatpp object-mapping you can do the following:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PointClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Declare ObjectWrapper for your type */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Mapping-Enabled Point */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Primitive"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("VPoint"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PointClass"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Point"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Type info\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PointClass")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Type interpretation\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Inter")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interpretation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Point"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UnorderedFields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UnorderedFields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("interpret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Point"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"x"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("x"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"y"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("y"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("z"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Point "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("reproduce")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UnorderedFields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" map"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Point")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("map"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"x"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" map"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"y"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" map"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId CLASS_ID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Type "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CLASS_ID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-types"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Inter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* <-- Add type interpretation */")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId PointClass"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("CLASS_ID")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-types::Point"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v('Now the "Point" struct can be serialized/deserialized with object mappers.')]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper mapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" mapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSerializer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConfig")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("enabledInterpretations "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-types"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// Enable "my-types" for serializer')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" mapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDeserializer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConfig")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("enabledInterpretations "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"my-types"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// Enable "my-types" for deserializer')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\nPoint "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("point")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Create mapping-enabled Point")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" mapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("point"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Serialize Point")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" pointClone "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" mapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("readFromString"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Point"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Deserialize Point")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v(" Type interpretations work through all framework components including REST framework, ORM, and Swagger-UI.")]),t._v(" "),s("h2",{attrs:{id:"example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),s("h3",{attrs:{id:"serialize-deserialize"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#serialize-deserialize"}},[t._v("#")]),t._v(" Serialize / Deserialize")]),t._v(" "),s("h4",{attrs:{id:"define-dto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#define-dto"}},[t._v("#")]),t._v(" Define DTO")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/Types.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin DTO codegen section")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("User")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* extends */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"First-Name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" surname"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Family-Name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" age"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" familyMembers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Map>")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" additionalNotes"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Map")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End DTO codegen section")]),t._v("\n")])])]),s("h4",{attrs:{id:"create-object-and-set-fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-object-and-set-fields"}},[t._v("#")]),t._v(" Create object and set fields")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create user */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" user "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("surname "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("age "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("familyMembers "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Initialize empty map.")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("additionalNotes "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Initialize empty map.")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create user */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" brother "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nbrother"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Yuriy"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nbrother"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("surname "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nbrother"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("age "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create user */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" sister "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsister"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Kate"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsister"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("surname "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsister"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("age "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create list of siblings */")]),t._v("\noatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" siblings "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("brother"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" sister"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("familyMembers"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"siblings"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" siblings"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("additionalNotes"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Education"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Master of Computer Science"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"create-json-object-mapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-json-object-mapper"}},[t._v("#")]),t._v(" Create JSON object mapper")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create json ObjectMapper with default configs */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" jsonObjectMapper "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"serialize-user-to-json"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#serialize-user-to-json"}},[t._v("#")]),t._v(" Serialize user to json")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String json "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"json"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"value='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< print json")]),t._v("\n")])])]),s("p",[t._v("output:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"First-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Family-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"age"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"familyMembers"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"siblings"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"First-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Yuriy"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Family-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"age"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"familyMembers"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"additionalNotes"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"First-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Kate"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Family-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"age"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"familyMembers"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"additionalNotes"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"additionalNotes"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Education"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Master of Computer Science"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("em",[t._v("Please note: example of above output is beautified with "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/Beautifier/"}},[t._v("oatpp::parser::json::Beautifier")])],1),t._v(".")]),t._v(" "),s("h4",{attrs:{id:"deserizalize-from-string"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deserizalize-from-string"}},[t._v("#")]),t._v(" Deserizalize from String")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" cloneOfUser "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("readFromString"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"use-json-beautifier"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#use-json-beautifier"}},[t._v("#")]),t._v(" Use JSON Beautifier")]),t._v(" "),s("p",[t._v("Without the use of beautifier the json serializer output will contain no spaces nor newline character:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"First-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Family-Name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ovsyanochka"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"age"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(" ...\n")])])]),s("p",[t._v("In order to beautify json output set "),s("code",[t._v("useBeautifier = true")]),t._v(" in serializer config:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create serializer and deserializer configurations */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" serializeConfig "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Serializer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" deserializeConfig "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Deserializer"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* enable beautifier */")]),t._v("\nserializeConfig"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("useBeautifier "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* create json object mapper with serializer config */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" jsonObjectMapper "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serializeConfig"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" deserializeConfig"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("More about json object mapper configuration see:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Serializer/#serializer-config"}},[t._v("Serializer::Config")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/Deserializer/#deserializer-config"}},[t._v("Deserializer::Config")])],1)]),t._v(" "),s("h2",{attrs:{id:"examples-of-code"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples-of-code"}},[t._v("#")]),t._v(" Examples of code")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp"),s("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/288.03a96eed.js b/docs/.vuepress/dist/assets/js/288.03a96eed.js deleted file mode 100644 index 020605e56..000000000 --- a/docs/.vuepress/dist/assets/js/288.03a96eed.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[288],{660:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"object-relational-mapping-orm-framework"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object-relational-mapping-orm-framework"}},[t._v("#")]),t._v(" Object-Relational Mapping (ORM) Framework "),s("seo")],1),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Have got any questions - ask them in the "),s("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[t._v("Devs Chat on Gitter"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("Oat++ ORM framework is a set of generalized interfaces and their implementations to make it easy to work with databases.")]),t._v(" "),s("p",[t._v("It's based on an "),s("RouterLink",{attrs:{to:"/docs/components/dto/"}},[t._v("object-mapping framework")]),t._v(" and ensures data consistency when manipulating with data.\nAlso, it integrates perfectly with other Oat++ components ensuring seamless data-flow in the application\n(example: from REST to database, from the database to REST).")],1),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#high-level-overview"}},[t._v("High-Level Overview")]),s("ul",[s("li",[s("a",{attrs:{href:"#declare-dbclient"}},[t._v("Declare DbClient")])]),s("li",[s("a",{attrs:{href:"#create-dbclient-component-and-connect-to-database"}},[t._v("Create DbClient Component And Connect to Database")])]),s("li",[s("a",{attrs:{href:"#dbclient-usage-example"}},[t._v("DbClient Usage Example")])])])]),s("li",[s("a",{attrs:{href:"#supported-databases"}},[t._v("Supported Databases")]),s("ul",[s("li",[s("a",{attrs:{href:"#available-database-adaptors"}},[t._v("Available Database Adaptors")])]),s("li",[s("a",{attrs:{href:"#libraries-hierarchy"}},[t._v("Libraries Hierarchy")])])])]),s("li",[s("a",{attrs:{href:"#dbclient"}},[t._v("DbClient")]),s("ul",[s("li",[s("a",{attrs:{href:"#declare-a-query"}},[t._v("Declare a Query")])]),s("li",[s("a",{attrs:{href:"#query-with-parameters"}},[t._v("Query With Parameters")])]),s("li",[s("a",{attrs:{href:"#query-with-dto-as-a-parameter"}},[t._v("Query With DTO as a Parameter")])]),s("li",[s("a",{attrs:{href:"#query-with-prepared-statement"}},[t._v("Query With Prepared Statement")])]),s("li",[s("a",{attrs:{href:"#execute-an-arbitrary-query"}},[t._v("Execute An Arbitrary Query")])]),s("li",[s("a",{attrs:{href:"#enable-type-interpretations"}},[t._v("Enable Type Interpretations")])]),s("li",[s("a",{attrs:{href:"#transactions"}},[t._v("Transactions")])])])]),s("li",[s("a",{attrs:{href:"#executing-queries"}},[t._v("Executing Queries")]),s("ul",[s("li",[s("a",{attrs:{href:"#mapping-results"}},[t._v("Mapping Results")])]),s("li",[s("a",{attrs:{href:"#managing-connections"}},[t._v("Managing Connections")])])])]),s("li",[s("a",{attrs:{href:"#connection-pool"}},[t._v("Connection Pool")])]),s("li",[s("a",{attrs:{href:"#schema-migration"}},[t._v("Schema Migration")]),s("ul",[s("li",[s("a",{attrs:{href:"#overview"}},[t._v("Overview")])]),s("li",[s("a",{attrs:{href:"#schema-name"}},[t._v("Schema Name")])])])]),s("li",[s("a",{attrs:{href:"#examples-projects"}},[t._v("Examples projects")])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"high-level-overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#high-level-overview"}},[t._v("#")]),t._v(" High-Level Overview")]),t._v(" "),s("h3",{attrs:{id:"declare-dbclient"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-dbclient"}},[t._v("#")]),t._v(" Declare DbClient")]),t._v(" "),s("p",[t._v("The main component you are going to work with is the "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/DbClient/"}},[t._v("DbClient")]),t._v(".\nYou may treat it as the main point interfacing with your data. Here you declare database queries and manage database schema migrations.")],1),t._v(" "),s("p",[t._v("Database queries are declared with the help of code-gen macros."),s("br"),t._v("\nDbClient code generation section must begin with\n"),s("code",[t._v("#include OATPP_CODEGEN_BEGIN(DbClient)")]),t._v(" and must be closed with\n"),s("code",[t._v("#include OATPP_CODEGEN_END(DbClient)")]),t._v("."),s("br"),t._v(" "),s("em",[t._v("Do not forget to close the code generation section in order to avoid macro conflicts later in the code!")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/SchemaMigration.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/DbClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DbClient) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin code-gen section")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClient")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DbClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("createUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT INTO users (username, email, role) VALUES (:username, :email, :role);"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" email"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Enum"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserRoles"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsString"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" role"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("getUserByName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE username=:username;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n \n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DbClient) ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End code-gen section")]),t._v("\n")])])]),s("h3",{attrs:{id:"create-dbclient-component-and-connect-to-database"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-dbclient-component-and-connect-to-database"}},[t._v("#")]),t._v(" Create DbClient Component And Connect to Database")]),t._v(" "),s("p",[t._v("DbClient is a heavy object - you want to instantiate it once and then inject it in whatever places you are going to use it.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"db/MyClient.hpp"')]),t._v(" ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< User-declared DbClient")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-sqlite/orm.hpp"')]),t._v(" ")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< SQLite adapter for oatpp ORM")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create DbClient component.\n * SQLite is used as an example here. For other databases declaration is similar.\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("db"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" myDatabaseClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionProvider */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/database.sqlite"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific Executor */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" executor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyClient database client */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")])]),t._v(" "),s("ul",[s("li",[s("code",[t._v("ConnectionProvider")]),t._v(" and "),s("code",[t._v("ConnectionPool")]),t._v(" objects can be reused by multiple "),s("code",[t._v("Executors")]),t._v(" unless it's\nprohibited by a database-specific implementation.")]),t._v(" "),s("li",[s("code",[t._v("Executor")]),t._v(" can be reused by multiple DbClients unless it's prohibited by a database-specific implementation.")])]),t._v(" "),s("h3",{attrs:{id:"dbclient-usage-example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-usage-example"}},[t._v("#")]),t._v(" DbClient Usage Example")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject MyClient database client */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("db"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create new user in the database */")]),t._v("\nclient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" UserRoles"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ADMIN"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Find user by username in the database */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserByUsername")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Retrieve query result as a vector of UserDto objects */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Of cause, UserDto had to be previously defined */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* You can also use oatpp::Fields - instead of oatpp::Object for any arbitrary result */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* And we can easily serialize result as a json string using json object mapper */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dataset"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print the resultant json */")]),t._v("\nstd"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("endl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Output:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_ADMIN"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h2",{attrs:{id:"supported-databases"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#supported-databases"}},[t._v("#")]),t._v(" Supported Databases")]),t._v(" "),s("h3",{attrs:{id:"available-database-adaptors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#available-database-adaptors"}},[t._v("#")]),t._v(" Available Database Adaptors")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Adaptor")]),t._v(" "),s("th",[t._v("Database")]),t._v(" "),s("th",[t._v("Limitations")]),t._v(" "),s("th",[t._v("Example Project")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-sqlite"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("SQLite")]),t._v(" "),s("td",[s("strong",[t._v("Full feature support")])]),t._v(" "),s("td",[s("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-crud"),s("OutboundLink")],1)])]),t._v(" "),s("tr",[s("td",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-postgresql"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("PostgreSQL")]),t._v(" "),s("td",[t._v("Doesn't support all postgres types")]),t._v(" "),s("td",[s("a",{attrs:{href:"https://github.com/oatpp/example-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-postgresql"),s("OutboundLink")],1)])])])]),t._v(" "),s("h3",{attrs:{id:"libraries-hierarchy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#libraries-hierarchy"}},[t._v("#")]),t._v(" Libraries Hierarchy")]),t._v(" "),s("p",[t._v("The main "),s("strong",[t._v("oatpp")]),t._v(' module contains ORM interfaces only. In order to "plug" a specific database,\nyou have to link the corresponding adaptor (ex.: '),s("strong",[t._v("oatpp-sqlite")]),t._v(").")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("- oatpp # The main oatpp module. ORM interfaces are here.\n |\n |- oatpp-sqlite # Sqlite adapter for oatpp ORM. Sqlite-specific implementation is here.\n |- oatpp-postgresql # PostgreSQL adapter for oatpp ORM. PostgreSQL-specific implementation is here.\n ...\n ... etc.\n")])])]),s("h2",{attrs:{id:"dbclient"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dbclient"}},[t._v("#")]),t._v(" DbClient")]),t._v(" "),s("h3",{attrs:{id:"declare-a-query"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-a-query"}},[t._v("#")]),t._v(" Declare a Query")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("selectAllUsers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n")])])]),s("h3",{attrs:{id:"query-with-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-with-parameters"}},[t._v("#")]),t._v(" Query With Parameters")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("selectUserByUsername"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE username=:username;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n")])])]),s("p",[t._v("During execution the expression "),s("code",[t._v("username=:username")]),t._v(" will be changed to "),s("code",[t._v("username=''")]),t._v(" and\nparameter value will be properly escaped according to its type.")]),t._v(" "),s("h3",{attrs:{id:"query-with-dto-as-a-parameter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-with-dto-as-a-parameter"}},[t._v("#")]),t._v(" Query With DTO as a Parameter")]),t._v(" "),s("p",[t._v("For complex queries, it's more convenient to use DTO objects as for parameters set. Thus you ensure the correct order of arguments.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("insertUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT INTO users "')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"(username, email, role) VALUES "')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"(:user.username, :user.email, :user.role);"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),s("br"),t._v("\nThe query template variable names are now starting with "),s("code",[t._v("user")]),t._v(", like "),s("code",[t._v("user.username")]),t._v(" -\nwhere "),s("code",[t._v("user")]),t._v(" is the name of the DTO parameter, and "),s("code",[t._v("username")]),t._v(" is the name of DTO field.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Yes")]),t._v(", you can specify a path to nested DTO fields like "),s("code",[t._v(":user.path.to.nested.field")]),t._v(".")]),t._v(" "),s("li",[s("strong",[t._v("Yes")]),t._v(", you can have multiple DTO parameters in the query, and you can mix DTO parameters with regular parameters.")])]),t._v(" "),s("h3",{attrs:{id:"query-with-prepared-statement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-with-prepared-statement"}},[t._v("#")]),t._v(" Query With Prepared Statement")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("selectUserByUsername"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE username=:username;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PREPARE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//<-- set prepare to `true` to use a prepared statement.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n")])])]),s("p",[s("strong",[t._v("Note")]),t._v(":"),s("br"),t._v("\nThe database adapter may ignore this.\nFor example:")]),t._v(" "),s("ul",[s("li",[t._v("SQLite is always using prepared statements to execute queries thus "),s("strong",[t._v("oatpp-sqlite")]),t._v(" will ignore this parameter.")]),t._v(" "),s("li",[t._v("PostgreSQL has a special method to execute prepared statements thus "),s("strong",[t._v("oatpp-postgresql")]),t._v(" will not ignore this parameter.")])]),t._v(" "),s("h3",{attrs:{id:"execute-an-arbitrary-query"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#execute-an-arbitrary-query"}},[t._v("#")]),t._v(" Execute An Arbitrary Query")]),t._v(" "),s("p",[t._v("To execute an arbitrary query use "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/DbClient/#dbclient-executequery"}},[t._v("DbClient::executeQuery()")]),t._v(" method."),s("br"),t._v("\nUse this method when it's needed to dynamically build a query.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dbResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeQuery")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* empty params map */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("You can add parameters using parameters map:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dbResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeQuery")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE id=:id AND username=:username;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Int64")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("23")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Yes, you have to explicitly specify parameter type here - oatpp::Int64")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Yes, you have to explicitly specify parameter type here - oatpp::String")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("When building parameters map dynamically you have to use "),s("code",[t._v("std::unordered_map::insert()")]),t._v(" method."),s("br"),t._v("\nThe "),s("code",[t._v("[]")]),t._v(" operator WON'T work.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" params"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nparams"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Int64")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("23")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nparams"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dbResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeQuery")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE id=:id AND username=:username;"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" params"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("To build a query string it's recommended to use "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream"}},[t._v("oatpp::data::stream::BufferOutputStream")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/data/stream/BufferStream.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\noatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nstream \n"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users "')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"WHERE "')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id=:id"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('" AND "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username=:username"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('";"')]),t._v(" \n\nstd"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" params"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nparams"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Int64")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("23")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nparams"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dbResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("executeQuery")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" params"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"enable-type-interpretations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#enable-type-interpretations"}},[t._v("#")]),t._v(" Enable Type Interpretations")]),t._v(" "),s("p",[t._v("When using custom or non-standard types as parameters in "),s("code",[t._v("QUERY")]),t._v(" macro,\nas well as when reading query results to custom/non-standard structures, you have to\nexplicitly enable corresponding type interpretations.")]),t._v(" "),s("p",[t._v("The recommended place to do it - is the constructor:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClient")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DbClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEnabledInterpretations")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"protobuf"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"query-with-custom-type-parameter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-with-custom-type-parameter"}},[t._v("#")]),t._v(" Query With Custom Type Parameter")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("insertUser"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT INTO users "')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"(username, email, role) VALUES "')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"(:user.username, :user.email, :user.role);"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protobuf"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Pass protobuf object")]),t._v("\n")])])]),s("h4",{attrs:{id:"map-query-result-to-custom-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-query-result-to-custom-type"}},[t._v("#")]),t._v(" Map Query Result To Custom Type")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Execute query */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserByUsername")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Map result to a vector of protobuf objects */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" res"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protobuf"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Map result")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" user "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("dataset"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"transactions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[t._v("#")]),t._v(" Transactions")]),t._v(" "),s("p",[t._v("Use "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/DbClient/#dbclient-begintransaction"}},[t._v("DbClient::beginTransaction()")]),t._v(" method to begin a transaction."),s("br"),t._v("\nAll queries MUST be executed on the same transaction connection.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" transaction "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beginTransaction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insertUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" transaction"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insertUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" transaction"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insertUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" transaction"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n transaction"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("commit")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),s("br"),t._v("\nTransaction will be automatically rollback if "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Transaction/#transaction-commit"}},[t._v("Transaction::commit()")]),t._v(" method\nwas not called.")],1),t._v(" "),s("h2",{attrs:{id:"executing-queries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#executing-queries"}},[t._v("#")]),t._v(" Executing Queries")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Execute a query */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" queryResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("selectAllUsers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Check if the operation was successful */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isSuccess")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" message "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getErrorMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Query"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Error, message=%s"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Fetch everything as a vector of User objects */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("The "),s("code",[t._v("queryResult")]),t._v(" here is the "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/"}},[t._v("oatpp::orm::QueryResult")]),t._v(" object.\nAll queries return "),s("code",[t._v("oatpp::orm::QueryResult")]),t._v(".")],1),t._v(" "),s("h3",{attrs:{id:"mapping-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mapping-results"}},[t._v("#")]),t._v(" Mapping Results")]),t._v(" "),s("p",[t._v("Available result mappings depend on the database adapter but here are some examples (that work for oatpp-sqlite and oatpp-postgresql)...")]),t._v(" "),s("h4",{attrs:{id:"map-everything-using-previously-decalred-userdto-and-display-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-everything-using-previously-decalred-userdto-and-display-results"}},[t._v("#")]),t._v(" Map everything using previously decalred "),s("code",[t._v("UserDto")]),t._v(" and display results")]),t._v(" "),s("p",[t._v("For more info on how to declare a DTO - see "),s("RouterLink",{attrs:{to:"/docs/components/dto/"}},[t._v("oatpp::DTO")])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UserDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Serialize result as a json string using json object mapper */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dataset"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print the resultant json */")]),t._v("\nstd"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("endl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Output:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_ADMIN"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ivan@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_GUEST"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"map-everything-using-oatpp-any-and-display-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#map-everything-using-oatpp-any-and-display-results"}},[t._v("#")]),t._v(" Map everything using "),s("code",[t._v("oatpp::Any")]),t._v(" and display results")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Serialize result as a json string using json object mapper */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dataset"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print the resultant json */")]),t._v("\nstd"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("endl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Output:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_ADMIN"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ivan"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ivan@domain.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_GUEST"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h3",{attrs:{id:"managing-connections"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#managing-connections"}},[t._v("#")]),t._v(" Managing Connections")]),t._v(" "),s("p",[t._v("All declared queries have an "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Connection/"}},[t._v("oatpp::orm::Connection")]),t._v(" as the last parameter."),s("br"),t._v("\nIf the connection is not specified("),s("code",[t._v("nullptr")]),t._v("), then the new connection will be opened to execute that query.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" queryResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("selectAllUsers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< Open a new connection.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" queryResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("selectAllUsers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< Execute using the connection provided.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" queryResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("selectAllUsers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< Open a new connection.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n queryResult "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insertUser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" queryResult"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< Execute on the same connection as the last query.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")])]),t._v(" "),s("p",[t._v("The "),s("code",[t._v("queryResult")]),t._v(" object holds a connection. The connection won't return to the connection pool until "),s("code",[t._v("queryResult")]),t._v(" is destroyed.")]),t._v(" "),s("h2",{attrs:{id:"connection-pool"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connection-pool"}},[t._v("#")]),t._v(" Connection Pool")]),t._v(" "),s("p",[t._v("It's always a good idea to use a connection pool when working with a database.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"db/MyClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-sqlite/orm.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create DbClient component.\n * SQLite is used as an example here. For other databases declaration is similar.\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("db"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" myDatabaseClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionProvider */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/database.sqlite"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionPool */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionPool "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionPool"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-connections */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* connection TTL */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific Executor */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" executor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionPool"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyClient database client */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v("\nSQLite is used as an example here. For other databases declaration is similar.")]),t._v(" "),s("h2",{attrs:{id:"schema-migration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-migration"}},[t._v("#")]),t._v(" Schema Migration")]),t._v(" "),s("p",[t._v("Use "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/SchemaMigration/"}},[t._v("SchemaMigration")]),t._v(" to do schema migrations!"),s("br"),t._v("\nThe recommended place to do schema migrations is the constructor of your DbClient.")],1),t._v(" "),s("h3",{attrs:{id:"overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClient")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DbClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SchemaMigration "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("migration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n migration"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* version */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sql/initial_schema.sql"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* migration script */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n migration"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addFile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* version */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sql/schema_fix_1.sql"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* migration script */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n migration"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("migrate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//<-- This guy will throw on error.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")])]),t._v(" "),s("ul",[s("li",[t._v("Version MUST start from "),s("code",[t._v("1")]),t._v(".")]),t._v(" "),s("li",[t._v("Version MUST be incremented by "),s("code",[t._v("1")]),t._v(".")]),t._v(" "),s("li",[t._v("In case of an error changes will be rolled back to the last successfully applied version.")])]),t._v(" "),s("h3",{attrs:{id:"schema-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-name"}},[t._v("#")]),t._v(" Schema Name")]),t._v(" "),s("p",[t._v("If you have multiple Schemas in your database you can manage migrations of each one independently.\nFor this specify a version control table suffix:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SchemaMigration "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("migration")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"suffix"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v("\nIt is recommended to have one DbClient per schema!")]),t._v(" "),s("h2",{attrs:{id:"examples-projects"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples-projects"}},[t._v("#")]),t._v(" Examples projects")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-crud"),s("OutboundLink")],1),t._v(" - Using oatpp ORM with SQLite.")]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/example-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-postgresql"),s("OutboundLink")],1),t._v(" - Using oatpp ORM with PostgreSQL.")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/289.34237cda.js b/docs/.vuepress/dist/assets/js/289.34237cda.js deleted file mode 100644 index 8757998b9..000000000 --- a/docs/.vuepress/dist/assets/js/289.34237cda.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[289],{661:function(t,a,s){"use strict";s.r(a);var n=s(42),r=Object(n.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"upload-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#upload-file"}},[t._v("#")]),t._v(" Upload File "),s("seo")],1),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#upload-and-stream-to-file"}},[t._v("Upload and stream to file")])]),s("li",[s("a",{attrs:{href:"#simple-api-multipart-upload"}},[t._v("Simple API Multipart Upload")]),s("ul",[s("li",[s("a",{attrs:{href:"#store-part-in-memory"}},[t._v("Store Part In Memory")])]),s("li",[s("a",{attrs:{href:"#stream-part-to-file"}},[t._v("Stream Part To File")])]),s("li",[s("a",{attrs:{href:"#complete-example"}},[t._v("Complete Example")])])])]),s("li",[s("a",{attrs:{href:"#async-api-multipart-upload"}},[t._v("Async API Multipart Upload")]),s("ul",[s("li",[s("a",{attrs:{href:"#async-store-part-in-memory"}},[t._v("Async Store Part In Memory")])]),s("li",[s("a",{attrs:{href:"#async-stream-part-to-file"}},[t._v("Async Stream Part To File")])]),s("li",[s("a",{attrs:{href:"#async-complete-example"}},[t._v("Async Complete Example")])])])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"upload-and-stream-to-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#upload-and-stream-to-file"}},[t._v("#")]),t._v(" Upload and stream to file")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/data/stream/FileStream.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/upload"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" upload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("REQUEST")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("FileOutputStream "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fileOutputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyToStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("fileOutputStream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// transfer body chunk by chunk")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"simple-api-multipart-upload"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simple-api-multipart-upload"}},[t._v("#")]),t._v(" Simple API Multipart Upload")]),t._v(" "),s("h3",{attrs:{id:"store-part-in-memory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#store-part-in-memory"}},[t._v("#")]),t._v(" Store Part In Memory")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/InMemoryPartReader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/PartList.hpp"')])]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upload/multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" uploadMultipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("REQUEST")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Prepare multipart container. */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PartList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create multipart reader. */")]),t._v("\n multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Reader "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("multipartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to read part with name "part1" into memory */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("256")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBody")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Print value of "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" part1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert part is not null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print part value */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"part1='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" part1"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),s("h3",{attrs:{id:"stream-part-to-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stream-part-to-file"}},[t._v("#")]),t._v(" Stream Part To File")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/FileStreamProvider.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/PartList.hpp"')])]),t._v("\n\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upload/multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" uploadMultipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("REQUEST")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Prepare multipart container. */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PartList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create multipart reader. */")]),t._v("\n multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Reader "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("multipartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to stream part with name "part1" to file */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFilePartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBody")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Print value of "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" part1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert part is not null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get part data input stream */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" inputStream "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" part1"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - process file stream.")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),s("h3",{attrs:{id:"complete-example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#complete-example"}},[t._v("#")]),t._v(" Complete Example")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/FileStreamProvider.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/InMemoryPartReader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/PartList.hpp"')])]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test/multipart-all"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" uploadMultipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("REQUEST")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Prepare multipart container. */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PartList"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create multipart reader. */")]),t._v("\n multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Reader "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("multipartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to read part with name "part1" into memory */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("256")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to stream part with name "part2" to file */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFilePartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Configure to read all other parts into memory */")]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("16")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBody")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print number of uploaded parts */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"parts_count=%d"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Get part by name "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" part1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert part is not null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Print in-memory value of "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"part1='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" part1"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Get part by name "part2"*/')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" filePart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert part is not null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("filePart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get part data input stream */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" inputStream "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" filePart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - process file stream.")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"async-api-multipart-upload"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#async-api-multipart-upload"}},[t._v("#")]),t._v(" Async API Multipart Upload")]),t._v(" "),s("h3",{attrs:{id:"async-store-part-in-memory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#async-store-part-in-memory"}},[t._v("#")]),t._v(" Async Store Part In Memory")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/InMemoryPartReader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test/multipart-all"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Coroutine State */")]),t._v("\n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n m_multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipartReader "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to read part with name "part1" into memory */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("256")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onUploaded"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onUploaded")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get multipart by name */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" part1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Asser part not-null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Print value of "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"part1='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" part1"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"async-stream-part-to-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#async-stream-part-to-file"}},[t._v("#")]),t._v(" Async Stream Part To File")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/FileStreamProvider.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test/multipart-all"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Coroutine State */")]),t._v("\n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n m_multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipartReader "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to stream part with name "part1" to file */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncFilePartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onUploaded"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onUploaded")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get multipart by name */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" filePart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Asser part not-null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("filePart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get part data input stream */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" inputStream "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" filePart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - process file stream.")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"async-complete-example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#async-complete-example"}},[t._v("#")]),t._v(" Async Complete Example")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/FileStreamProvider.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/InMemoryPartReader.hpp"')])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/mime/multipart/Reader.hpp"')])]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mime"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test/multipart-all"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Coroutine State */")]),t._v("\n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n m_multipart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeaders")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" multipartReader "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("m_multipart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to read part with name "part1" into memory */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("256")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Configure to stream part with name "part2" to file */')]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncFilePartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Configure to read all other parts into memory */")]),t._v("\n multipartReader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createAsyncInMemoryPartReader")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("16")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-data-size */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read multipart body */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transferBodyAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("multipartReader"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MultipartUpload"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onUploaded"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("onUploaded")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print number of uploaded parts */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"parts_count=%d"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get multipart by name */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" part1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Asser part not-null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part1 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Print value of "part1" */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Multipart"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"part1='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" part1"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInMemoryData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get multipart by name */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" filePart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_multipart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNamedPart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Asser part not-null */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("filePart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_400"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"part2 is null"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get part data input stream */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" inputStream "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" filePart"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStream")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - process file stream.")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OK"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/29.1098080f.js b/docs/.vuepress/dist/assets/js/29.1098080f.js deleted file mode 100644 index a8486015e..000000000 --- a/docs/.vuepress/dist/assets/js/29.1098080f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{401:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/src/oatpp-libressl/server/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/issues/new?title=API%20question&body=In%20file:%20oatpp-libressl/server/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-libressl")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-libressl/server/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Libressl server connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" libressl "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-~connectionprovider"}},[t._v("~ConnectionProvider")])]),t._v(" "),r("td",[t._v("Virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Close all handles.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get incoming connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("No need to implement this."),r("br")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-libressl/Config/#config"}},[t._v("oatpp::libressl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" useExtendedConnections "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider::~ConnectionProvider")]),t._v(" "),r("p",[t._v("Virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Close all handles.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get incoming connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("No need to implement this."),r("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),r("br"),t._v(" "),r("em",[t._v("It may be implemented later")])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/290.c60be499.js b/docs/.vuepress/dist/assets/js/290.c60be499.js deleted file mode 100644 index c3402a0e7..000000000 --- a/docs/.vuepress/dist/assets/js/290.c60be499.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[290],{662:function(r,e,t){"use strict";t.r(e);var n=t(42),a=Object(n.a)({},(function(){var r=this,e=r.$createElement,t=r._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[t("h1",{attrs:{id:"conan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conan"}},[r._v("#")]),r._v(" Conan "),t("seo")],1),r._v(" "),t("p",[r._v("Check out the community-maintained Conan packages!")]),r._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://conan.io/",target:"_blank",rel:"noopener noreferrer"}},[r._v("Conan Website"),t("OutboundLink")],1),r._v(" - learn more about conan.")]),r._v(" "),t("li",[t("a",{attrs:{href:"https://conan.io/center/",target:"_blank",rel:"noopener noreferrer"}},[r._v("Available Packages"),t("OutboundLink")],1),r._v(" - Search for 'oatpp'.")])]),r._v(" "),t("h2",{attrs:{id:"credits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[r._v("#")]),r._v(" Credits")]),r._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/nicraMarcin",target:"_blank",rel:"noopener noreferrer"}},[r._v("nicraMarcin"),t("OutboundLink")],1),r._v(",\n"),t("a",{attrs:{href:"https://github.com/theirix",target:"_blank",rel:"noopener noreferrer"}},[r._v("theirix"),t("OutboundLink")],1),r._v(",\n"),t("a",{attrs:{href:"https://github.com/hoxnox",target:"_blank",rel:"noopener noreferrer"}},[r._v("hoxnox"),t("OutboundLink")],1),r._v(",\n"),t("a",{attrs:{href:"https://github.com/SpaceIm",target:"_blank",rel:"noopener noreferrer"}},[r._v("SpaceIm"),t("OutboundLink")],1),r._v(",\n"),t("a",{attrs:{href:"https://github.com/Alberto-Izquierdo",target:"_blank",rel:"noopener noreferrer"}},[r._v("Alberto-Izquierdo"),t("OutboundLink")],1),r._v(",\n"),t("a",{attrs:{href:"https://github.com/frek818",target:"_blank",rel:"noopener noreferrer"}},[r._v("frek818"),t("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/291.4f8a89f0.js b/docs/.vuepress/dist/assets/js/291.4f8a89f0.js deleted file mode 100644 index 8da391383..000000000 --- a/docs/.vuepress/dist/assets/js/291.4f8a89f0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[291],{664:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"installation-on-unix-linux"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installation-on-unix-linux"}},[t._v("#")]),t._v(" Installation on Unix/Linux "),s("seo")],1),t._v(" "),s("p",[t._v("The installation process of Oat++ is simple and straightforward.\nIf you have all "),s("a",{attrs:{href:"#prerequisites"}},[t._v("prerequisites")]),t._v(" installed, jump straight to "),s("a",{attrs:{href:"#install-oat"}},[t._v("Install Oat++")]),t._v(".")]),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#prerequisites"}},[t._v("Prerequisites")])]),s("li",[s("a",{attrs:{href:"#install-oat"}},[t._v("Install Oat++")]),s("ul",[s("li",[s("a",{attrs:{href:"#installation-cmake-options"}},[t._v("Installation CMake options:")])])])]),s("li",[s("a",{attrs:{href:"#installing-prerequisites"}},[t._v("Installing Prerequisites")]),s("ul",[s("li",[s("a",{attrs:{href:"#ubuntu"}},[t._v("Ubuntu")])]),s("li",[s("a",{attrs:{href:"#centos"}},[t._v("CentOS")])]),s("li",[s("a",{attrs:{href:"#fedora"}},[t._v("Fedora")])]),s("li",[s("a",{attrs:{href:"#alpine"}},[t._v("Alpine")])])])]),s("li",[s("a",{attrs:{href:"#patches"}},[t._v("Patches")])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"prerequisites"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),s("ul",[s("li",[t._v("Git")]),t._v(" "),s("li",[t._v("C++ compiler supporting C++ version >= 11.")]),t._v(" "),s("li",[t._v("Make")]),t._v(" "),s("li",[t._v("CMake version >= 3.1")])]),t._v(" "),s("p",[t._v("For details see "),s("a",{attrs:{href:"#installing-prerequisites"}},[t._v("Installing Prerequisites")]),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"install-oat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-oat"}},[t._v("#")]),t._v(" Install Oat++")]),t._v(" "),s("p",[t._v("Once all prerequisites installed - install Oat++:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/oatpp/oatpp.git\n$ "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" oatpp/\n\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),s("h3",{attrs:{id:"installation-cmake-options"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installation-cmake-options"}},[t._v("#")]),t._v(" Installation CMake options:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Option")]),t._v(" "),s("th",[t._v("Default")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("CMAKE_BUILD_TYPE")])]),t._v(" "),s("td",[s("code",[t._v("Debug")])]),t._v(" "),s("td",[t._v("Build type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("BUILD_SHARED_LIBS")])]),t._v(" "),s("td",[s("code",[t._v("OFF")])]),t._v(" "),s("td",[t._v("Leave this option to "),s("code",[t._v("OFF")]),t._v(". Oat++ is meant to be used as a static library.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("OATPP_BUILD_TESTS")])]),t._v(" "),s("td",[s("code",[t._v("ON")])]),t._v(" "),s("td",[t._v("Set it to "),s("code",[t._v("OFF")]),t._v(" to disable tests build.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("OATPP_LINK_ATOMIC")])]),t._v(" "),s("td",[s("code",[t._v("OFF")])]),t._v(" "),s("td",[t._v("Explicitly link "),s("code",[t._v("libatomic")]),t._v(". This flag is ignored for: MSVC, MINGW, APPLE, FreeBSD.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("OATPP_DISABLE_ENV_OBJECT_COUNTERS")])]),t._v(" "),s("td",[s("code",[t._v("OFF")])]),t._v(" "),s("td",[t._v("If "),s("code",[t._v("ON")]),t._v(", do not count oatpp objects (do not detect memory-leaks). This will increase performance. "),s("br"),t._v(" "),s("strong",[t._v("Note:")]),t._v(" DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("OATPP_DISABLE_POOL_ALLOCATIONS")])]),t._v(" "),s("td",[s("code",[t._v("OFF")])]),t._v(" "),s("td",[t._v("If "),s("code",[t._v("ON")]),t._v(", do not use oatpp memory-pools.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("OATPP_COMPAT_BUILD_NO_THREAD_LOCAL")])]),t._v(" "),s("td",[s("code",[t._v("OFF")])]),t._v(" "),s("td",[t._v("Build without "),s("code",[t._v("thread_local")]),t._v(" feature. See "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/81",target:"_blank",rel:"noopener noreferrer"}},[t._v("#81"),s("OutboundLink")],1),t._v(".")])])])]),t._v(" "),s("h2",{attrs:{id:"installing-prerequisites"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installing-prerequisites"}},[t._v("#")]),t._v(" Installing Prerequisites")]),t._v(" "),s("h3",{attrs:{id:"ubuntu"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu"}},[t._v("#")]),t._v(" Ubuntu")]),t._v(" "),s("p",[t._v("Install prerequisites:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt-get")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt-get")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" cmake\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt-get")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" build-essential\n")])])]),s("h3",{attrs:{id:"centos"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#centos"}},[t._v("#")]),t._v(" CentOS")]),t._v(" "),s("p",[t._v("Install prerequisites:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v("\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" cmake\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" gcc gcc-c++ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v("\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" libatomic\n")])])]),s("h3",{attrs:{id:"fedora"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fedora"}},[t._v("#")]),t._v(" Fedora")]),t._v(" "),s("p",[t._v("Install prerequisites:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v("\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" cmake\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" gcc gcc-c++ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v("\n$ yum "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" libatomic\n")])])]),s("h3",{attrs:{id:"alpine"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#alpine"}},[t._v("#")]),t._v(" Alpine")]),t._v(" "),s("p",[t._v("Install prerequisites:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ apk "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v("\n$ apk "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" cmake\n$ apk "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" g++\n$ apk "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v("\n")])])]),s("h2",{attrs:{id:"patches"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#patches"}},[t._v("#")]),t._v(" Patches")]),t._v(" "),s("p",[t._v("Some platforms may require patching of build-scripts to properly install oatpp.\nYou may find what you need in the following repos:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("OpenWRT")]),t._v(" - see "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-openwrt-feed",target:"_blank",rel:"noopener noreferrer"}},[t._v("Oat++ OpenWRT feed"),s("OutboundLink")],1),t._v("\ncontaining build-scripts, options and patches for applications, modules and libraries provided by Oat++.")]),t._v(" "),s("li",[s("strong",[t._v("NixOS")]),t._v(" - see "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-nixos-feed",target:"_blank",rel:"noopener noreferrer"}},[t._v("Oat++ NixOS feed"),s("OutboundLink")],1),t._v(" - collection of patches to properly install\noatpp on NixOS. Special thanks to David Ibbitson - "),s("a",{attrs:{href:"https://github.com/dibbitson",target:"_blank",rel:"noopener noreferrer"}},[t._v("dibbitson"),s("OutboundLink")],1),t._v(".")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/292.93e660d3.js b/docs/.vuepress/dist/assets/js/292.93e660d3.js deleted file mode 100644 index 6ffdc0e36..000000000 --- a/docs/.vuepress/dist/assets/js/292.93e660d3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[292],{663:function(t,e,r){"use strict";r.r(e);var a=r(42),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"vcpkg"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vcpkg"}},[t._v("#")]),t._v(" Vcpkg "),r("seo")],1),t._v(" "),r("p",[t._v("The community maintained ports are available for the majority of oatpp modules.")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://docs.microsoft.com/en-us/cpp/build/vcpkg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Vcpkg Website"),r("OutboundLink")],1),t._v(" - learn more about vcpkg.")]),t._v(" "),r("li",[r("a",{attrs:{href:"https://vcpkg.info/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Available Ports"),r("OutboundLink")],1),t._v(" - Search for 'oatpp'.")])]),t._v(" "),r("h2",{attrs:{id:"credits"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[t._v("#")]),t._v(" Credits")]),t._v(" "),r("ul",[r("li",[t._v("Special thanks to "),r("a",{attrs:{href:"https://github.com/mheyman",target:"_blank",rel:"noopener noreferrer"}},[t._v("mheyman"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/KaungZawHtet",target:"_blank",rel:"noopener noreferrer"}},[t._v("KaungZawHtet"),r("OutboundLink")],1),t._v(", "),r("a",{attrs:{href:"https://github.com/NancyLi1013",target:"_blank",rel:"noopener noreferrer"}},[t._v("NancyLi1013"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/293.06e168dc.js b/docs/.vuepress/dist/assets/js/293.06e168dc.js deleted file mode 100644 index 304b735db..000000000 --- a/docs/.vuepress/dist/assets/js/293.06e168dc.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[293],{665:function(t,a,e){"use strict";e.r(a);var s=e(42),o=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"installation-on-windows"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation-on-windows"}},[t._v("#")]),t._v(" Installation on Windows "),e("seo")],1),t._v(" "),e("h2",{attrs:{id:"requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[t._v("#")]),t._v(" Requirements")]),t._v(" "),e("ul",[e("li",[t._v("Microsoft Visual Studio (Tested with Visual Studio 2017)")]),t._v(" "),e("li",[t._v("CMake (Latest version recommended)")]),t._v(" "),e("li",[t._v("Git")])]),t._v(" "),e("h2",{attrs:{id:"install-oat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-oat"}},[t._v("#")]),t._v(" Install Oat++")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/oatpp/oatpp.git\n$ "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n$ MD build\n$ "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n\n$ cmake "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ cmake --build "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" --target INSTALL\n")])])]),e("h3",{attrs:{id:"installation-cmake-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation-cmake-options"}},[t._v("#")]),t._v(" Installation CMake options:")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Option")]),t._v(" "),e("th",[t._v("Default")]),t._v(" "),e("th",[t._v("Description")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("CMAKE_BUILD_TYPE")])]),t._v(" "),e("td",[e("code",[t._v("Debug")])]),t._v(" "),e("td",[t._v("Build type.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("BUILD_SHARED_LIBS")])]),t._v(" "),e("td",[e("code",[t._v("OFF")])]),t._v(" "),e("td",[t._v("Leave this option to "),e("code",[t._v("OFF")]),t._v(". Oat++ is meant to be used as a static library.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("OATPP_BUILD_TESTS")])]),t._v(" "),e("td",[e("code",[t._v("ON")])]),t._v(" "),e("td",[t._v("Set it to "),e("code",[t._v("OFF")]),t._v(" to disable tests build.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("OATPP_DISABLE_ENV_OBJECT_COUNTERS")])]),t._v(" "),e("td",[e("code",[t._v("OFF")])]),t._v(" "),e("td",[t._v("If "),e("code",[t._v("ON")]),t._v(", do not count oatpp objects (do not detect memory-leaks). This will increase performance. "),e("br"),t._v(" "),e("strong",[t._v("Note:")]),t._v(" DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("OATPP_DISABLE_POOL_ALLOCATIONS")])]),t._v(" "),e("td",[e("code",[t._v("OFF")])]),t._v(" "),e("td",[t._v("If "),e("code",[t._v("ON")]),t._v(", do not use oatpp memory-pools.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("OATPP_COMPAT_BUILD_NO_THREAD_LOCAL")])]),t._v(" "),e("td",[e("code",[t._v("OFF")])]),t._v(" "),e("td",[t._v("Build without "),e("code",[t._v("thread_local")]),t._v(" feature. See "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/81",target:"_blank",rel:"noopener noreferrer"}},[t._v("#81"),e("OutboundLink")],1),t._v(".")])])])])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/294.6155b1ef.js b/docs/.vuepress/dist/assets/js/294.6155b1ef.js deleted file mode 100644 index 9211d4d5a..000000000 --- a/docs/.vuepress/dist/assets/js/294.6155b1ef.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[294],{666:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-consul"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-consul"}},[t._v("#")]),t._v(" oatpp-consul "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1),a("br"),t._v(" "),a("RouterLink",{attrs:{to:"/examples/consul/"}},[t._v("Example Project")])],1),t._v(" "),a("p",[a("strong",[t._v("oatpp-consul")]),t._v(" - extension of "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),a("br"),t._v("\nIt provides "),a("a",{attrs:{href:"https://www.consul.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Consul"),a("OutboundLink")],1),t._v(" integration for oatpp applications.")],1),t._v(" "),a("h3",{attrs:{id:"kv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#kv"}},[t._v("#")]),t._v(" KV")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-consul/Client.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* request executor should be previously initialized */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("consul"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* put value */")]),t._v("\n client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvPut")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* get value */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" value "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGet")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* print value */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"consul"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"value='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* get kv metadata */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" meta "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetMetadata")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* decode and pring value from metadata */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"consul"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"value='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" meta"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValueDecoded")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n")])])]),a("h3",{attrs:{id:"register-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#register-service"}},[t._v("#")]),t._v(" Register Service")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-consul/Client.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* request executor should be previously initialized */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("consul"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* get oatpp::consul::rest::Client */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" restClient "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getRestClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" checkPayload "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("consul"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("rest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AgentCheckRegisterPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"service_check_id"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"service_check_name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("notes "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Check on the MyService/Health endpoint"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("http "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:8000/check/health"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("method "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("interval "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"30s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n checkPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("timeout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"15s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" payload "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("consul"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("rest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AgentServiceRegisterPayload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n payload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"service_id"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n payload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"service_name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n payload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("port "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n payload"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("check "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" checkPayload"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* make API call */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" restClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("agentServiceRegister")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("payload"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"consul"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"response='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/295.13f50213.js b/docs/.vuepress/dist/assets/js/295.13f50213.js deleted file mode 100644 index 0c4bdc884..000000000 --- a/docs/.vuepress/dist/assets/js/295.13f50213.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[295],{667:function(t,a,s){"use strict";s.r(a);var n=s(42),e=Object(n.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"oatpp-curl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-curl"}},[t._v("#")]),t._v(" oatpp-curl "),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1),s("br"),t._v(" "),s("RouterLink",{attrs:{to:"/examples/api-client/"}},[t._v("Example Project")])],1),t._v(" "),s("p",[s("strong",[t._v("oatpp-curl")]),t._v(" - extension of "),s("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),s("br"),t._v("\nIt is a wrapper over the libcurl. It adapts libcurl to be used as a "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/"}},[t._v("RequestExecutor")]),t._v(" for "),s("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v("."),s("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),s("h2",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[t._v("libcurl installed.")]),t._v(" "),s("h2",{attrs:{id:"oatpp-apiclient"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-apiclient"}},[t._v("#")]),t._v(" oatpp ApiClient ?")]),t._v(" "),s("p",[t._v("oatpp "),s("code",[t._v("ApiClient")]),t._v(" is a mechanism which enables you to generate Web Api Clients in declarative manner.\nUnder the hood it uses provided "),s("code",[t._v("RequestExecutor")]),t._v(" (ex.: "),s("code",[t._v("oatpp::curl::RequestExecutor")]),t._v(") to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes.\n"),s("em",[t._v("Roughly you may treat oatpp "),s("code",[t._v("ApiClient")]),t._v(" as Java Retrofit for C++.")])]),t._v(" "),s("h3",{attrs:{id:"example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),s("p",[s("em",[t._v("This example is partially taken from "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-consul"),s("OutboundLink")],1),t._v(" implementation")])]),t._v(" "),s("h4",{attrs:{id:"declare-apiclient"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#declare-apiclient"}},[t._v("#")]),t._v(" Declare ApiClient")]),t._v(" "),s("p",[t._v("Declare "),s("code",[t._v("ApiClient")]),t._v(" for remote service using code-generation")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyApiClient")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CLIENT_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("DemoApiClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvGet"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvGetInDC"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" datacenter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dc"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}?raw"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvGetRaw"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}?raw&dc={dc}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvGetRawInDC"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" datacenter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dc"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvPut"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v1/kv/{key}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" kvPutInDC"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" datacenter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dc"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"create-apiclient-instance"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-apiclient-instance"}},[t._v("#")]),t._v(" Create ApiClient instance")]),t._v(" "),s("p",[t._v("Create MyApiClient instance and configure it to use "),s("code",[t._v("oatpp::curl::RequestExecutor")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create ObjectMapper for serialization of DTOs */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" objectMapper "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create oatpp-curl RequestExecutor with baseUrl */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("curl"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestExecutor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:8500/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Instantiate MyApiClient */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" myApiClient "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"make-calls"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#make-calls"}},[t._v("#")]),t._v(" Make calls")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// like that...")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" value "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvGetRaw")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"response"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"value='%s'\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// or like that...")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" response "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myApiClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("kvPut")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"some-value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("statusCode "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" body "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" response"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("body "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" body "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"response"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value successfully saved"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"more"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#more"}},[t._v("#")]),t._v(" More")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-examples/tree/master/ApiClient-Demo",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-examples/ApiClient-Demo"),s("OutboundLink")],1),t._v(" - Full example project. ApiClient to "),s("code",[t._v("http://httpbin.org/")]),t._v(" API with Sync and Async examples.")]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-consul"),s("OutboundLink")],1),t._v(" - oatpp-consul integration based on "),s("code",[t._v("ApiClient")]),t._v(".")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/296.c089aaef.js b/docs/.vuepress/dist/assets/js/296.c089aaef.js deleted file mode 100644 index 335963164..000000000 --- a/docs/.vuepress/dist/assets/js/296.c089aaef.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[296],{668:function(t,s,a){"use strict";a.r(s);var e=a(42),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-libressl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-libressl"}},[t._v("#")]),t._v(" oatpp-libressl "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1),a("br"),t._v(" "),a("RouterLink",{attrs:{to:"/examples/libressl/"}},[t._v("Example Project")])],1),t._v(" "),a("p",[a("strong",[t._v("oatpp-libressl")]),t._v(" - extension of "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),a("br"),t._v("\nIt provides secure server and client connection providers for oatpp applications. Based on "),a("a",{attrs:{href:"https://www.libressl.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("LibreSSL"),a("OutboundLink")],1),t._v("."),a("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),a("h2",{attrs:{id:"requires"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("LibreSSL")]),t._v(" - minimum version 3.0.0")])]),t._v(" "),a("h2",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("p",[t._v("See: "),a("a",{attrs:{href:"https://github.com/oatpp/example-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("Full example project TLS-Libressl"),a("OutboundLink")],1)]),t._v(" "),a("h3",{attrs:{id:"create-server-connection-provider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-server-connection-provider"}},[t._v("#")]),t._v(" Create server connection provider")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-libressl/server/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-libressl/Config.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" crtFile "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/file.crt"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pemFile "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/file.pem"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("crtFile"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pemFile "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* private key */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8443")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),a("h3",{attrs:{id:"create-client-connection-provider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-client-connection-provider"}},[t._v("#")]),t._v(" Create client connection provider")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-libressl/client/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-libressl/Config.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),a("h2",{attrs:{id:"don-t-forget"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#don-t-forget"}},[t._v("#")]),t._v(" Don't forget!")]),t._v(" "),a("p",[t._v("Set libressl lockingCallback and SIGPIPE handler on program start!")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-libressl/Callbacks.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* set lockingCallback for libressl */")]),t._v("\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Callbacks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDefaultCallbacks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("")])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ignore SIGPIPE */")]),t._v("\nstd"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("signal")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("SIGPIPE"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" SIG_IGN"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"see-more"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#see-more"}},[t._v("#")]),t._v(" See more")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/docs/modules/oatpp-mbedtls/"}},[t._v("oatpp-mbedtls")])],1)])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/297.b9740bb6.js b/docs/.vuepress/dist/assets/js/297.b9740bb6.js deleted file mode 100644 index 0ec05c5e1..000000000 --- a/docs/.vuepress/dist/assets/js/297.b9740bb6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[297],{669:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"oatpp-mbedtls"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-mbedtls"}},[t._v("#")]),t._v(" oatpp-mbedtls "),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("oatpp-mbedtls")]),t._v(" - extension of "),s("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),s("br"),t._v("\nIt provides secure server and client connection providers for oatpp applications. Based on "),s("a",{attrs:{href:"https://tls.mbed.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MbedTLS"),s("OutboundLink")],1),t._v("."),s("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),s("h2",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[t._v("MbedTLS installed.")]),t._v(" "),s("h2",{attrs:{id:"apis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#apis"}},[t._v("#")]),t._v(" APIs")]),t._v(" "),s("h3",{attrs:{id:"server"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server"}},[t._v("#")]),t._v(" Server")]),t._v(" "),s("h4",{attrs:{id:"connectionprovider"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),s("p",[t._v("Create "),s("code",[t._v("ConnectionProvider")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverCertificateFile "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/server/certificate"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverPrivateKeyFile "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/server/private/key"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Config */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverCertificateFile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverPrivateKeyFile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Secure Connection Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* port */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get Secure Connection Stream */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"custom-transport-stream"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#custom-transport-stream"}},[t._v("#")]),t._v(" Custom Transport Stream")]),t._v(" "),s("p",[t._v("Create "),s("code",[t._v("ConnectionProvider")]),t._v(" with custom transport stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverCertificateFile "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/server/certificate"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverPrivateKeyFile "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"path/to/server/private/key"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Config */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverCertificateFile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverPrivateKeyFile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Transport Stream Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Replace With Your Custom Transport Stream Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" transportStreamProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Secure Connection Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" transportStreamProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get Secure Connection Stream over Custom Transport Stream */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v(" To use "),s("code",[t._v("oatpp-mbedtls")]),t._v(" for server connections with custom transport stream you should implement:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://oatpp.io/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp::network::ServerConnectionProvider"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("li",[s("a",{attrs:{href:"https://oatpp.io/api/latest/oatpp/core/data/stream/Stream/#iostream",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp::data::stream::IOStream"),s("OutboundLink")],1),t._v(" - to be returned by "),s("code",[t._v("ConnectionProvider")]),t._v(".")])]),t._v(" "),s("h3",{attrs:{id:"client"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#client"}},[t._v("#")]),t._v(" Client")]),t._v(" "),s("h4",{attrs:{id:"connectionprovider-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),s("p",[t._v("Create "),s("code",[t._v("ConnectionProvider")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Config */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultClientConfigShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Secure Connection Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* port */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get Secure Connection Stream */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"custom-transport-stream-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#custom-transport-stream-2"}},[t._v("#")]),t._v(" Custom Transport Stream")]),t._v(" "),s("p",[t._v("Create "),s("code",[t._v("ConnectionProvider")]),t._v(" with custom transport stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Config */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultClientConfigShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Transport Stream Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Replace With Your Custom Transport Stream Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" transportStreamProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Secure Connection Provider */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mbedtls"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" transportStreamProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get Secure Connection Stream over Custom Transport Stream */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connection "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" connectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v(" To use "),s("code",[t._v("oatpp-mbedtls")]),t._v(" for client connections with custom transport stream you should implement:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://oatpp.io/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp::network::ClientConnectionProvider"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("li",[s("a",{attrs:{href:"https://oatpp.io/api/latest/oatpp/core/data/stream/Stream/#iostream",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp::data::stream::IOStream"),s("OutboundLink")],1),t._v(" - to be returned by "),s("code",[t._v("ConnectionProvider")]),t._v(".")])]),t._v(" "),s("h2",{attrs:{id:"see-more"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#see-more"}},[t._v("#")]),t._v(" See more")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/docs/modules/oatpp-libressl/"}},[t._v("oatpp-libressl")])],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/298.d5f86bff.js b/docs/.vuepress/dist/assets/js/298.d5f86bff.js deleted file mode 100644 index 4e7d0b6b2..000000000 --- a/docs/.vuepress/dist/assets/js/298.d5f86bff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[298],{670:function(t,a,s){"use strict";s.r(a);var n=s(42),e=Object(n.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"oatpp-mongo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-mongo"}},[t._v("#")]),t._v(" oatpp-mongo "),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[t._v("Example Project"),s("OutboundLink")],1)]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("BSON ObjectMapper")]),t._v(" - is ready-to-use.")]),t._v(" "),s("li",[s("strong",[t._v("Database driver")]),t._v(" - is "),s("strong",[t._v("in development")]),t._v(". While you can do basic CRUD operations, it's still on POC stage. API is not ready and it's not recommended to use.\nTo work with MongoDB - use BSON ObjectMapper + mongocxx driver.")])])]),t._v(" "),s("p",[s("strong",[t._v("oatpp-mongo")]),t._v(" is the oatpp native client for MongoDB. It contains DTO to BSON mapper plus database driver.")]),t._v(" "),s("p",[t._v("Find the complete example project using "),s("strong",[t._v("oatpp-mongo")]),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"how-to-build"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-to-build"}},[t._v("#")]),t._v(" How To Build")]),t._v(" "),s("p",[s("code",[t._v("oatpp-mongo")]),t._v(" has no extrernal dependencies ("),s("em",[t._v("The main oatpp module is still required")]),t._v(")."),s("br"),t._v(" "),s("code",[t._v("libmongoxcc")]),t._v(" is used (and linked) in module "),s("strong",[t._v("tests only")]),t._v(". Use "),s("code",[t._v("-DOATPP_BUILD_TESTS=OFF")]),t._v(" option to build without tests and without dependency on "),s("code",[t._v("libmongoxcc")]),t._v(".")]),t._v(" "),s("h3",{attrs:{id:"install-oatpp-mongo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-oatpp-mongo"}},[t._v("#")]),t._v(" Install oatpp-mongo")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("Clone this repository.")])]),t._v(" "),s("li",[s("p",[t._v("In the root of the repository run:")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\ncmake -DOATPP_BUILD_TESTS"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("OFF "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),s("h3",{attrs:{id:"temporary-api-using-libmongoxcc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#temporary-api-using-libmongoxcc"}},[t._v("#")]),t._v(" Temporary API (using libmongoxcc)")]),t._v(" "),s("p",[t._v("Since oatpp driver is not ready yet, you can use "),s("code",[t._v("libmongoxcc")]),t._v(" together with oatpp BSON.")]),t._v(" "),s("p",[s("strong",[t._v("Why using oatpp BSON?")]),t._v(" - because it's based on oatpp object-mapping framework and\nit's "),s("strong",[t._v("extremely easy to use")]),t._v(".")]),t._v(" "),s("h4",{attrs:{id:"create-bsonxx-document-from-any-oatpp-object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-bsonxx-document-from-any-oatpp-object"}},[t._v("#")]),t._v(" Create "),s("code",[t._v("bsonxx::document")]),t._v(" From Any oatpp Object")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * This is the utility function that you'll need while working libmongoxcc\n */")]),t._v("\nbsoncxx"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("document"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("value Database"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createMongoDocument")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// if you have huge docs, you may want to increase starting BufferOutputStream size.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Or you may want to use oatpp::data::stream::ChunkedBuffer instead - for no-copy growth.")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BufferOutputStream stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n m_objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" polymorph"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//< Serialize oatpp object to BSON.")]),t._v("\n \n bsoncxx"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("document"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("view "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("view")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stream"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCurrentPosition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" bsoncxx"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("document"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("value")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("view"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Where "),s("code",[t._v("m_objectMapper")]),t._v(" - is "),s("code",[t._v("oatpp::mongo::bson::mapping::ObjectMapper")]),t._v(".")]),t._v(" "),s("h4",{attrs:{id:"insert-document"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#insert-document"}},[t._v("#")]),t._v(" Insert Document")]),t._v(" "),s("p",[t._v("Let's say you have such DTO defined:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("User")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" _id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" active"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" role"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Then you can insert your DTO in the database like this:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("collection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert_one")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createMongoDocument")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("myDto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("You can also insert an arbitrary document using "),s("code",[t._v("oatpp::Any")])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("collection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("insert_one")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createMongoDocument")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Mr. Porridge"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"jacket-color"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"red"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"green"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"blue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"read-document"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#read-document"}},[t._v("#")]),t._v(" Read Document")]),t._v(" "),s("p",[t._v("Let's say we have the same DTO - "),s("code",[t._v("User")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n collection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find_one")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createMongoDocument")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// <-- Filter")]),t._v("\n oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"_id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" view "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("view")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" bson "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("String")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("view"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" view"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("length")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* to not copy view data */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" user "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" m_objectMapper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("readFromString"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bson"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - do somthing with user:)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You can then serialize it to JSON using oatpp::parser::json::mapping::ObjectMapper")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-mongodb"),s("OutboundLink")],1),t._v(" - CRUD with MongoDB and Swagger-UI.")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/299.738d6520.js b/docs/.vuepress/dist/assets/js/299.738d6520.js deleted file mode 100644 index eb2981316..000000000 --- a/docs/.vuepress/dist/assets/js/299.738d6520.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[299],{671:function(t,a,s){"use strict";s.r(a);var n=s(42),e=Object(n.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"oatpp-postgresql"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-postgresql"}},[t._v("#")]),t._v(" oatpp-postgresql "),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/example-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("Example Project"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("PostgreSQL adapter for Oat++ ORM.."),s("br"),t._v(" "),s("em",[t._v("Note: this alpha version, which means that not all PostgreSQL data-types are supported.")])]),t._v(" "),s("h2",{attrs:{id:"build-and-install"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-install"}},[t._v("#")]),t._v(" Build And Install")]),t._v(" "),s("p",[s("em",[t._v("Note: you need to install the main "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),s("OutboundLink")],1),t._v(" module and PostgreSQL dev package first.")])]),t._v(" "),s("ul",[s("li",[t._v("Clone this repository.")]),t._v(" "),s("li",[t._v("In the root of the repository run:"),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\ncmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])])])]),t._v(" "),s("h2",{attrs:{id:"api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),s("p",[t._v("Detailed documentation on Oat++ ORM you can find "),s("a",{attrs:{href:"https://oatpp.io/docs/components/orm/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h3",{attrs:{id:"connect-to-database"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-database"}},[t._v("#")]),t._v(" Connect to Database")]),t._v(" "),s("p",[t._v("All you need to start using oatpp ORM with PostgreSQL is to create "),s("code",[t._v("oatpp::postgresql::Executor")]),t._v(" and provide it to your "),s("code",[t._v("DbClient")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"db/MyClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-postgresql/orm.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create DbClient component.\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("db"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" myDatabaseClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionProvider */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("postgresql"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionPool */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionPool "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("postgresql"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionPool"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-connections */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* connection TTL */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific Executor */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" executor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("postgresql"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionPool"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyClient database client */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/3.0e791e97.js b/docs/.vuepress/dist/assets/js/3.0e791e97.js deleted file mode 100644 index d11cca2ec..000000000 --- a/docs/.vuepress/dist/assets/js/3.0e791e97.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{302:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return h})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return p})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"j",(function(){return m}));n(24),n(99),n(165),n(92),n(170),n(64),n(43),n(303),n(65),n(320),n(102);var i=/#.*$/,r=/\.(md|html)$/,a=/\/$/,s=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(r,"")}function u(t){return s.test(t)}function l(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function h(t){if(u(t))return t;var e=t.match(i),n=e?e[0]:"",r=o(t);return a.test(r)?t:r+".html"+n}function f(t,e){var n=decodeURIComponent(t.hash),r=function(t){var e=t.match(i);if(e)return e[0]}(e);return(!r||n===r)&&o(t.path)===o(e)}function p(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;var r=e.split("/");n&&r[r.length-1]||r.pop();for(var a=t.replace(/^\//,"").split("/"),s=0;s3&&void 0!==arguments[3]?arguments[3]:1;if("string"==typeof e)return p(n,e,i);if(Array.isArray(e))return Object.assign(p(n,e[0],i),{title:e[1]});var a=e.children||[];return 0===a.length&&e.path?Object.assign(p(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:a.map((function(e){return t(e,n,i,r+1)})),collapsable:!1!==e.collapsable}}(t,r,l)})):[]}return[]}function g(t){var e=v(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map((function(e){return{type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}}))}]}function v(t){var e;return(t=t.map((function(t){return Object.assign({},t)}))).forEach((function(t){2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)})),t.filter((function(t){return 2===t.level}))}function m(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},303:function(t,e,n){"use strict";var i=n(167),r=n(5),a=n(13),s=n(23),o=n(168),u=n(169);i("match",1,(function(t,e,n){return[function(e){var n=s(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,n):new RegExp(e)[t](String(n))},function(t){var i=n(e,t,this);if(i.done)return i.value;var s=r(t),l=String(this);if(!s.global)return u(s,l);var c=s.unicode;s.lastIndex=0;for(var h,f=[],p=0;null!==(h=u(s,l));){var d=String(h[0]);f[p]=d,""===d&&(s.lastIndex=o(l,a(s.lastIndex),c)),p++}return 0===p?null:f}]}))},304:function(t,e,n){},305:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},306:function(t,e,n){},307:function(t,e,n){},308:function(t,e,n){},309:function(t,e,n){},310:function(t,e,n){},311:function(t,e,n){},312:function(t,e,n){},313:function(t,e,n){},314:function(t,e,n){},315:function(t,e,n){},316:function(t,e,n){},317:function(t,e,n){},320:function(t,e,n){"use strict";var i=n(167),r=n(166),a=n(5),s=n(23),o=n(98),u=n(168),l=n(13),c=n(169),h=n(67),f=n(1),p=[].push,d=Math.min,g=!f((function(){return!RegExp(4294967295,"y")}));i("split",2,(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=String(s(this)),a=void 0===n?4294967295:n>>>0;if(0===a)return[];if(void 0===t)return[i];if(!r(t))return e.call(i,t,a);for(var o,u,l,c=[],f=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,g=new RegExp(t.source,f+"g");(o=h.call(g,i))&&!((u=g.lastIndex)>d&&(c.push(i.slice(d,o.index)),o.length>1&&o.index=a));)g.lastIndex===o.index&&g.lastIndex++;return d===i.length?!l&&g.test("")||c.push(""):c.push(i.slice(d)),c.length>a?c.slice(0,a):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var r=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,r,n):i.call(String(r),e,n)},function(t,r){var s=n(i,t,this,r,i!==e);if(s.done)return s.value;var h=a(t),f=String(this),p=o(h,RegExp),v=h.unicode,m=(h.ignoreCase?"i":"")+(h.multiline?"m":"")+(h.unicode?"u":"")+(g?"y":"g"),b=new p(g?h:"^(?:"+h.source+")",m),k=void 0===r?4294967295:r>>>0;if(0===k)return[];if(0===f.length)return null===c(b,f)?[f]:[];for(var _=0,x=0,C=[];x-1)&&(e=e.replace(/y/g,""));var o=s(x?new m(t,e):m(t,e),i?this:b,$);return C&&n&&d(o,{sticky:n}),o},y=function(t){t in $||o($,t,{configurable:!0,get:function(){return m[t]},set:function(e){m[t]=e}})},L=u(m),w=0;L.length>w;)y(L[w++]);b.constructor=$,$.prototype=b,f(r,"RegExp",$)}g("RegExp")},324:function(t,e){t.exports=function(t){return null==t}},331:function(t,e,n){"use strict";n.r(e);n(164);var i=n(302),r={name:"SidebarGroup",components:{DropdownTransition:n(332).a},props:["item","open","collapsable","depth"],beforeCreate:function(){this.$options.components.SidebarLinks=n(331).default},methods:{isActive:i.e}},a=(n(352),n(42)),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(353),n(64);function o(t,e,n,i,r){var a={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:i,"sidebar-link":!0}};return r>2&&(a.style={"padding-left":r+"rem"}),t("RouterLink",a,n)}function u(t,e,n,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||s>a?null:t("ul",{class:"sidebar-sub-headers"},e.map((function(e){var l=Object(i.e)(r,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[o(t,n+"#"+e.slug,e.title,l,e.level-1),u(t,e.children,n,r,a,s+1)])})))}var l={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,r=n.$page,a=(n.$site,n.$route),s=n.$themeConfig,l=n.$themeLocaleConfig,c=e.props,h=c.item,f=c.sidebarDepth,p=Object(i.e)(a,h.path),d="auto"===h.type?p||h.children.some((function(t){return Object(i.e)(a,h.basePath+"#"+t.slug)})):p,g="external"===h.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,h.path,h.title||h.path):o(t,h.path,h.title||h.path,d),v=[r.frontmatter.sidebarDepth,f,l.sidebarDepth,s.sidebarDepth,1].find((function(t){return void 0!==t})),m=l.displayAllHeaders||s.displayAllHeaders;return"auto"===h.type?[g,u(t,h.children,h.basePath,a,v)]:(d||m)&&h.headers&&!i.d.test(h.path)?[g,u(t,Object(i.c)(h.headers),h.path,a,v)]:g}};n(354);function c(t,e){return"group"===e.type&&e.children.some((function(e){return"group"===e.type?c(t,e):"page"===e.type&&Object(i.e)(t,e.path)}))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(a.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},watch:{$route:function(){this.refreshIndex()}},created:function(){this.refreshIndex()},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(i.e)(this.$route,t.regularPath)}}},f=Object(a.a)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(e,i){return n("li",{key:i},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:i===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):n("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:e}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=f.exports},332:function(t,e,n){"use strict";var i={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},r=(n(344),n(42)),a=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},333:function(t,e,n){"use strict";var i=n(0),r=n(334);i({target:"String",proto:!0,forced:n(335)("link")},{link:function(t){return r(this,"a","href",t)}})},334:function(t,e,n){var i=n(23),r=/"/g;t.exports=function(t,e,n,a){var s=String(i(t)),o="<"+e;return""!==n&&(o+=" "+n+'="'+String(a).replace(r,""")+'"'),o+">"+s+""}},335:function(t,e,n){var i=n(1);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},336:function(t,e,n){"use strict";var i=n(304);n.n(i).a},337:function(t,e,n){var i=n(0),r=n(338);i({global:!0,forced:parseInt!=r},{parseInt:r})},338:function(t,e,n){var i=n(3),r=n(321).trim,a=n(305),s=i.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(a+"08")||22!==s(a+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},339:function(t,e,n){var i=n(1),r=n(305);t.exports=function(t){return i((function(){return!!r[t]()||"​…᠎"!="​…᠎"[t]()||r[t].name!==t}))}},340:function(t,e,n){var i=n(4),r=n(97);t.exports=function(t,e,n){var a,s;return r&&"function"==typeof(a=e.constructor)&&a!==n&&i(s=a.prototype)&&s!==n.prototype&&r(t,s),t}},341:function(t,e,n){"use strict";var i,r=n(0),a=n(25).f,s=n(13),o=n(100),u=n(23),l=n(101),c=n(20),h="".endsWith,f=Math.min,p=l("endsWith");r({target:"String",proto:!0,forced:!!(c||p||(i=a(String.prototype,"endsWith"),!i||i.writable))&&!p},{endsWith:function(t){var e=String(u(this));o(t);var n=arguments.length>1?arguments[1]:void 0,i=s(e.length),r=void 0===n?i:f(s(n),i),a=String(t);return h?h.call(e,a,r):e.slice(r-a.length,r)===a}})},342:function(t,e,n){"use strict";var i=n(306);n.n(i).a},343:function(t,e,n){"use strict";var i=n(307);n.n(i).a},344:function(t,e,n){"use strict";var i=n(308);n.n(i).a},345:function(t,e,n){"use strict";var i=n(309);n.n(i).a},346:function(t,e,n){"use strict";var i=n(310);n.n(i).a},347:function(t,e,n){"use strict";var i=n(311);n.n(i).a},348:function(t,e,n){"use strict";var i=n(312);n.n(i).a},349:function(t,e,n){var i=n(32),r=n(14),a=n(27);t.exports=function(t){return"string"==typeof t||!r(t)&&a(t)&&"[object String]"==i(t)}},350:function(t,e,n){"use strict";var i=n(313);n.n(i).a},351:function(t,e,n){"use strict";var i=n(314);n.n(i).a},352:function(t,e,n){"use strict";var i=n(315);n.n(i).a},353:function(t,e,n){"use strict";var i=n(0),r=n(29).find,a=n(95),s=n(17),o=!0,u=s("find");"find"in[]&&Array(1).find((function(){o=!1})),i({target:"Array",proto:!0,forced:o||!u},{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a("find")},354:function(t,e,n){"use strict";var i=n(316);n.n(i).a},355:function(t,e,n){"use strict";var i=n(317);n.n(i).a},376:function(t,e,n){"use strict";n.r(e);n(164),n(93),n(333);var i=n(302),r={name:"NavLink",props:{item:{required:!0}},computed:{link:function(){return Object(i.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some((function(e){return e===t.link})):"/"===this.link},isNonHttpURI:function(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget:function(){return"_blank"===this.target},isInternal:function(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target:function(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel:function(){return this.isNonHttpURI?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":""}},methods:{focusoutAction:function(){this.$emit("focusout")}}},a=n(42),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isInternal?n("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction(e)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?n("OutboundLink"):t._e()],1)}),[],!1,null,null,null).exports,o={name:"Home",components:{NavLink:s},computed:{data:function(){return this.$page.frontmatter},actionLink:function(){return{link:this.data.actionLink,text:this.data.actionText}}}},u=(n(336),Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"home",attrs:{"aria-labelledby":"main-title"}},[n("header",{staticClass:"hero"},[t.data.heroImage?n("img",{attrs:{src:t.$withBase(t.data.heroImage),alt:t.data.heroAlt||"hero"}}):t._e(),t._v(" "),null!==t.data.heroText?n("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.data.heroText||t.$title||"Hello")+"\n ")]):t._e(),t._v(" "),null!==t.data.tagline?n("p",{staticClass:"description"},[t._v("\n "+t._s(t.data.tagline||t.$description||"Welcome to your VuePress site")+"\n ")]):t._e(),t._v(" "),t.data.actionText&&t.data.actionLink?n("p",{staticClass:"action"},[n("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.data.features&&t.data.features.length?n("div",{staticClass:"features"},t._l(t.data.features,(function(e,i){return n("div",{key:i,staticClass:"feature"},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])])})),0):t._e(),t._v(" "),n("Content",{staticClass:"theme-default-content custom"}),t._v(" "),t.data.footer?n("div",{staticClass:"footer"},[t._v("\n "+t._s(t.data.footer)+"\n ")]):t._e()],1)}),[],!1,null,null,null).exports),l=(n(337),n(24),n(172),n(165),n(92),n(43),n(174),n(303),n(322),n(170),n(64),n(323),n(94),n(341),n(65),n(320),n(176)),c=n.n(l),h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c()(e,"title","");return c()(e,"frontmatter.tags")&&(i+=" ".concat(e.frontmatter.tags.join(" "))),n&&(i+=" ".concat(n)),f(t,i)},f=function(t,e){var n=function(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")},i=new RegExp("[^\0-]"),r=t.split(/\s+/g).map((function(t){return t.trim()})).filter((function(t){return!!t}));if(i.test(t))return r.some((function(t){return e.toLowerCase().indexOf(t)>-1}));var a=t.endsWith(" ");return new RegExp(r.map((function(t,e){return r.length!==e+1||a?"(?=.*\\b".concat(n(t),"\\b)"):"(?=.*\\b".concat(n(t),")")})).join("")+".+","gi").test(e)},p={name:"SearchBox",data:function(){return{query:"",focused:!1,focusIndex:0,placeholder:void 0}},computed:{showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions:function(){var t=this.query.trim().toLowerCase();if(t){for(var e=this.$site.pages,n=this.$site.themeConfig.searchMaxSuggestions||5,i=this.$localePath,r=[],a=0;a=n);a++){var s=e[a];if(this.getPageLocalePath(s)===i&&this.isSearchable(s))if(h(t,s))r.push(s);else if(s.headers)for(var o=0;o=n);o++){var u=s.headers[o];u.title&&h(t,s,u.title)&&r.push(Object.assign({},s,{path:s.path+"#"+u.slug,header:u}))}}return r}},alignRight:function(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},mounted:function(){this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey)},beforeDestroy:function(){document.removeEventListener("keydown",this.onHotkey)},methods:{getPageLocalePath:function(t){for(var e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable:function(t){var e=null;return null===e||(e=Array.isArray(e)?e:new Array(e)).filter((function(e){return t.path.match(e)})).length>0},onHotkey:function(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp:function(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown:function(){this.showSuggestions&&(this.focusIndex "+t._s(e.header.title))]):t._e()])])})),0):t._e()])}),[],!1,null,null,null).exports),g=(n(343),Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[n("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[n("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),v=(n(175),n(40)),m=n(332),b=n(177),k=n.n(b),_={name:"DropdownLink",components:{NavLink:s,DropdownTransition:m.a},props:{item:{required:!0}},data:function(){return{open:!1}},computed:{dropdownAriaLabel:function(){return this.item.ariaLabel||this.item.text}},watch:{$route:function(){this.open=!1}},methods:{setOpen:function(t){this.open=t},isLastItemOfArray:function(t,e){return k()(e)===t}}},x=(n(345),{name:"NavLinks",components:{NavLink:s,DropdownLink:Object(a.a)(_,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[n("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[n("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),n("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),n("DropdownTransition",[n("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return n("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?n("h4",[t._v("\n "+t._s(e.text)+"\n ")]):t._e(),t._v(" "),"links"===e.type?n("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return n("li",{key:i.link,staticClass:"dropdown-subitem"},[n("NavLink",{attrs:{item:i},on:{focusout:function(n){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0):n("NavLink",{attrs:{item:e},on:{focusout:function(n){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null).exports},computed:{userNav:function(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav:function(){var t=this,e=this.$site.locales;if(e&&Object.keys(e).length>1){var n=this.$page.path,i=this.$router.options.routes,r=this.$site.themeConfig.locales||{},a={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(e).map((function(a){var s,o=e[a],u=r[a]&&r[a].label||o.lang;return o.lang===t.$lang?s=n:(s=n.replace(t.$localeConfig.path,a),i.some((function(t){return t.path===s}))||(s=a)),{text:u,link:s}}))};return[].concat(Object(v.a)(this.userNav),[a])}return this.userNav},userLinks:function(){return(this.nav||[]).map((function(t){return Object.assign(Object(i.j)(t),{items:(t.items||[]).map(i.j)})}))},repoLink:function(){var t=this.$site.themeConfig.repo;return t?/^https?:/.test(t)?t:"https://github.com/".concat(t):null},repoLabel:function(){if(this.repoLink){if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;for(var t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"],n=0;nMath.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}}),B=Object(a.a)(W,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?n("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),n("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),n("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("sidebar-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("sidebar-bottom")]},proxy:!0}],null,!0)}),t._v(" "),t.$page.frontmatter.home?n("Home"):n("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("page-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("page-bottom")]},proxy:!0}],null,!0)})],1)}),[],!1,null,null,null);e.default=B.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/30.a0a09080.js b/docs/.vuepress/dist/assets/js/30.a0a09080.js deleted file mode 100644 index f73b0ba1f..000000000 --- a/docs/.vuepress/dist/assets/js/30.a0a09080.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{402:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"config-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-hpp"}},[t._v("#")]),t._v(" Config.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/blob/master/src/oatpp-mbedtls/Config.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/issues/new?title=API%20question&body=In%20file:%20oatpp-mbedtls/Config.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mbedtls")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mbedtls/Config.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config"}},[t._v("#")]),t._v(" Config")]),t._v(" "),a("p",[t._v("Wrapper over "),a("code",[t._v("mbedtls_ssl_config")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mbedtls "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-config"}},[t._v("Config")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-~config"}},[t._v("~Config")])]),t._v(" "),a("td",[t._v("Non-virtual destructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("createDefaultServerConfigShared")])]),t._v(" "),a("td",[t._v("Create default server config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("createDefaultClientConfigShared")])]),t._v(" "),a("td",[t._v("Create default client config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_ssl_config*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-gettlsconfig"}},[t._v("getTLSConfig")])]),t._v(" "),a("td",[t._v("Get underlying mbedtls_ssl_config.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_entropy_context*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-getentropy"}},[t._v("getEntropy")])]),t._v(" "),a("td",[t._v("Get entropy.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_ctr_drbg_context*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-getctr-drbg"}},[t._v("getCTR_DRBG")])]),t._v(" "),a("td",[t._v("Get CTR_DRBG.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_x509_crt*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-getservercertificate"}},[t._v("getServerCertificate")])]),t._v(" "),a("td",[t._v("Get server certificate.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_x509_crt*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-getcachain"}},[t._v("getCAChain")])]),t._v(" "),a("td",[t._v("Get CA Chain.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("mbedtls_pk_context*")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-getprivatekey"}},[t._v("getPrivateKey")])]),t._v(" "),a("td",[t._v("Get private key.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#config-shouldthrowonverificationfailed"}},[t._v("shouldThrowOnVerificationFailed")])]),t._v(" "),a("td",[t._v("Returns true if server certificate verification is required")])])])]),t._v(" "),a("h3",{attrs:{id:"config-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-config"}},[t._v("#")]),t._v(" Config::Config")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-config-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-config-2"}},[t._v("#")]),t._v(" Config::~Config")]),t._v(" "),a("p",[t._v("Non-virtual destructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createshared"}},[t._v("#")]),t._v(" Config::createShared")]),t._v(" "),a("p",[t._v("Create shared Config. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createdefaultserverconfigshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultServerConfigShared")]),t._v(" "),a("p",[t._v("Create default server config. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" serverCertFile - server certificate. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" privateKeyFile - private key. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" pkPassword - optional private key password. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" serverCertFile"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" privateKeyFile"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pkPassword "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-createdefaultclientconfigshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultClientConfigShared")]),t._v(" "),a("p",[t._v("Create default client config. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" throwOnVerificationFailed - throw error on server certificate ")]),a("li",[a("strong",[t._v("@param")]),t._v(" caRootCertFile - path to the CA Root certificate to verificate against ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultClientConfigShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" throwOnVerificationFailed "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" caRootCertFile "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-gettlsconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-gettlsconfig"}},[t._v("#")]),t._v(" Config::getTLSConfig")]),t._v(" "),a("p",[t._v("Get underlying mbedtls_ssl_config. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_ssl_config*")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_ssl_config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTLSConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-getentropy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-getentropy"}},[t._v("#")]),t._v(" Config::getEntropy")]),t._v(" "),a("p",[t._v("Get entropy. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_entropy_context*")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_entropy_context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEntropy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-getctr-drbg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-getctr-drbg"}},[t._v("#")]),t._v(" Config::getCTR_DRBG")]),t._v(" "),a("p",[t._v("Get CTR_DRBG. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_ctr_drbg_context*")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_ctr_drbg_context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCTR_DRBG")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-getservercertificate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-getservercertificate"}},[t._v("#")]),t._v(" Config::getServerCertificate")]),t._v(" "),a("p",[t._v("Get server certificate. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_x509_crt*")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_x509_crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getServerCertificate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-getcachain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-getcachain"}},[t._v("#")]),t._v(" Config::getCAChain")]),t._v(" "),a("p",[t._v("Get CA Chain. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_x509_crt*")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_x509_crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getCAChain")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-getprivatekey"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-getprivatekey"}},[t._v("#")]),t._v(" Config::getPrivateKey")]),t._v(" "),a("p",[t._v("Get private key. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("mbedtls_pk_context*")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("mbedtls_pk_context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getPrivateKey")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"config-shouldthrowonverificationfailed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-shouldthrowonverificationfailed"}},[t._v("#")]),t._v(" Config::shouldThrowOnVerificationFailed")]),t._v(" "),a("p",[t._v("Returns true if server certificate verification is required "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("bool")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shouldThrowOnVerificationFailed")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/300.1f21ae11.js b/docs/.vuepress/dist/assets/js/300.1f21ae11.js deleted file mode 100644 index 3bf67dbc6..000000000 --- a/docs/.vuepress/dist/assets/js/300.1f21ae11.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[300],{672:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"oatpp-sqlite"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-sqlite"}},[t._v("#")]),t._v(" oatpp-sqlite "),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[t._v("Example Project"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("SQLite adapter for Oat++ ORM.")]),t._v(" "),s("h2",{attrs:{id:"build-and-install"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-install"}},[t._v("#")]),t._v(" Build And Install")]),t._v(" "),s("p",[s("em",[t._v("Note: you need to install the main "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),s("OutboundLink")],1),t._v(" module first.")])]),t._v(" "),s("ul",[s("li",[t._v("Clone this repository.")]),t._v(" "),s("li",[t._v("In the root of the repository run:"),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\ncmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])])])]),t._v(" "),s("p",[s("em",[t._v("This module uses "),s("a",{attrs:{href:"https://www.sqlite.org/amalgamation.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("SQLite amalgamation"),s("OutboundLink")],1),t._v(" which will be installed as a part of this module.")])]),t._v(" "),s("h2",{attrs:{id:"api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),s("p",[t._v("Detailed documentation on Oat++ ORM you can find "),s("a",{attrs:{href:"https://oatpp.io/docs/components/orm/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h3",{attrs:{id:"connect-to-database"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-database"}},[t._v("#")]),t._v(" Connect to Database")]),t._v(" "),s("p",[t._v("All you need to start using oatpp ORM with SQLite is to create "),s("code",[t._v("oatpp::sqlite::Executor")]),t._v(" and provide it to your "),s("code",[t._v("DbClient")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"db/MyClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-sqlite/orm.hpp"')])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create DbClient component.\n * SQLite is used as an example here. For other databases declaration is similar.\n */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("db"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" myDatabaseClient"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionProvider */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/path/to/database.sqlite"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific ConnectionPool */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionPool "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionPool"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* max-connections */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* connection TTL */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create database-specific Executor */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" executor "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("sqlite"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionPool"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyClient database client */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyClient"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/301.39a9efd1.js b/docs/.vuepress/dist/assets/js/301.39a9efd1.js deleted file mode 100644 index 8455d0a91..000000000 --- a/docs/.vuepress/dist/assets/js/301.39a9efd1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[301],{673:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-ssdp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-ssdp"}},[t._v("#")]),t._v(" oatpp-ssdp "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/example-iot-hue-ssdp",target:"_blank",rel:"noopener noreferrer"}},[t._v("Example Project"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Oat++ extension module to work with SSDP (Simple Service Discovery Protocol) protocol.")]),t._v(" "),a("h2",{attrs:{id:"build-and-install"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-install"}},[t._v("#")]),t._v(" Build And Install")]),t._v(" "),a("p",[a("em",[t._v("Note: you need to install the main "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),a("OutboundLink")],1),t._v(" module first.")])]),t._v(" "),a("ul",[a("li",[t._v("Clone this repository.")]),t._v(" "),a("li",[t._v("In the root of the repository run:"),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\ncmake "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])])])]),t._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),a("h3",{attrs:{id:"declare-necessary-components"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declare-necessary-components"}},[t._v("#")]),t._v(" Declare Necessary Components")]),t._v(" "),a("p",[t._v("In the "),a("code",[t._v("AppComponent.hpp")]),t._v(" file:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-ssdp/SsdpStreamHandler.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create provider of SSDP-UDP packets stream.\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SimpleSsdpUdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * We can reuse the HttpRouter for SSDP since SSDP message is complient to HTTP1.1.\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpRouter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create SsdpStreamHandler component which uses Router component to route requests.\n * It looks like a normal ConnectionHandler but is specialized on SsdpStreams and returns something conceptually very different\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SsdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SsdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n")])])]),a("h3",{attrs:{id:"run-ssdp-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-ssdp-server"}},[t._v("#")]),t._v(" Run SSDP Server")]),t._v(" "),a("p",[t._v("In the "),a("code",[t._v("App.cpp")]),t._v(" file:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get stream provider component */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get stream handler component */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ssdp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SsdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ssdp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided streams and passes them to stream handler */")]),t._v("\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ssdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Priny info about server port */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running SSDP on port %s..."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ssdpStreamProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\nserver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"handle-ssdp-messages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#handle-ssdp-messages"}},[t._v("#")]),t._v(" Handle SSDP Messages")]),t._v(" "),a("p",[t._v("In the "),a("code",[t._v("Controller.hpp")]),t._v(" file:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Other devices that want to discover you send 'M-SEARCH *' SSDP packages.\n * You have to answer with a corresponding packet on this discovery.\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"M-SEARCH"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"*"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" star"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* empty body */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - add correct response headers.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/302.4562e961.js b/docs/.vuepress/dist/assets/js/302.4562e961.js deleted file mode 100644 index d5e9c593a..000000000 --- a/docs/.vuepress/dist/assets/js/302.4562e961.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[302],{674:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-swagger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-swagger"}},[t._v("#")]),t._v(" oatpp-swagger "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1),a("br"),t._v(" "),a("RouterLink",{attrs:{to:"/examples/crud/"}},[t._v("Example Project")])],1),t._v(" "),a("p",[a("strong",[t._v("oatpp-swagger")]),t._v(" - extension of "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),a("br"),t._v("\nIt provides "),a("a",{attrs:{href:"https://swagger.io/tools/swagger-ui/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Swagger-UI"),a("OutboundLink")],1),t._v(" for oatpp applications."),a("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),a("h2",{attrs:{id:"brief"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#brief"}},[t._v("#")]),t._v(" Brief")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Use "),a("code",[t._v("oatpp::swagger::Controller")]),t._v(" with "),a("code",[t._v("oatpp::web::server::HttpConnectionHandler")])])]),t._v(" "),a("li",[a("p",[t._v("Use "),a("code",[t._v("oatpp::swagger::AsyncController")]),t._v(" with "),a("code",[t._v("oatpp::web::server::AsyncHttpConnectionHandler")])])]),t._v(" "),a("li",[a("p",[t._v("Swagger UI location - "),a("code",[t._v("http://localhost:/swagger/ui")])])]),t._v(" "),a("li",[a("p",[t._v("OpenApi 3.0.0 specification location - "),a("code",[t._v("http://localhost:/api-docs/oas-3.0.0.json")])])])]),t._v(" "),a("p",[t._v("If you are using "),a("code",[t._v("oatpp::web::server::api::ApiController")]),t._v(" most parts of your endpoints are documented automatically like:")]),t._v(" "),a("ul",[a("li",[t._v("Endpoint name")]),t._v(" "),a("li",[t._v("Parameters")]),t._v(" "),a("li",[t._v("Request Body")])]),t._v(" "),a("p",[t._v("You may add more information to your endpoint like follows:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("createUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Create new User"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addConsumes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" createUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("More about endpoint annotation and API documentation "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-annotation-and-api-documentation"}},[t._v("read here")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"how-to-add-swagger-ui-to-your-project"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-add-swagger-ui-to-your-project"}},[t._v("#")]),t._v(" How to add Swagger UI to your project")]),t._v(" "),a("ol",[a("li",[t._v("Add "),a("code",[t._v("oatpp::swagger::DocumentInfo")]),t._v(" and "),a("code",[t._v("oatpp::swagger::Resources")]),t._v(" components to your AppComponents:")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * General API docs info\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" swaggerDocumentInfo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Builder builder"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n builder\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setTitle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"User entity service"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDescription")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CRUD API Example project with swagger docs"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1.0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContactName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan Ovsyanochka"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContactUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://oatpp.io/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLicenseName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Apache License, Version 2.0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLicenseUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://www.apache.org/licenses/LICENSE-2.0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:8000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"server on localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" builder"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Swagger-Ui Resources (/lib/oatpp-swagger/res)\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resources"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" swaggerResources"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Make sure to specify correct full path to oatpp-swagger/res folder !!!")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resources"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("loadResources")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/lib/oatpp-swagger/res"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Create "),a("code",[t._v("oatpp::swagger::Controller")]),t._v(" with list of endpoints you whant to document and add it to router:")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" swaggerController "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("list"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("of"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("endpoints"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("to"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("document"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nswaggerController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addEndpointsToRouter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[a("strong",[t._v("Done!")])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/303.d89100d8.js b/docs/.vuepress/dist/assets/js/303.d89100d8.js deleted file mode 100644 index 837a39c2a..000000000 --- a/docs/.vuepress/dist/assets/js/303.d89100d8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[303],{675:function(t,e,a){"use strict";a.r(e);var r=a(42),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-websocket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-websocket"}},[t._v("#")]),t._v(" oatpp-websocket "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("oatpp-websocket")]),t._v(" - extension of "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),a("br"),t._v("\nIt provides WebSocket server and client functionality."),a("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("API")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Server")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Client")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Simple")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("+")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("+")])]),t._v(" "),a("tr",[a("td",[t._v("Async")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("+")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("+")])])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/304.f76b3241.js b/docs/.vuepress/dist/assets/js/304.f76b3241.js deleted file mode 100644 index 17593e0e0..000000000 --- a/docs/.vuepress/dist/assets/js/304.f76b3241.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[304],{676:function(t,s,a){"use strict";a.r(s);var e=a(42),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"oatpp-zlib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oatpp-zlib"}},[t._v("#")]),t._v(" oatpp-zlib "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("oatpp-zlib")]),t._v(" - extension of "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" module."),a("br"),t._v("\nIt provides functionality for compressing/decompressing content with "),a("code",[t._v("deflate")]),t._v(" and "),a("code",[t._v("gzip")]),t._v("."),a("br"),t._v('\nSupports both "Simple" and "Async" oatpp APIs.')],1),t._v(" "),a("h2",{attrs:{id:"how-to-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-build"}},[t._v("#")]),t._v(" How To Build")]),t._v(" "),a("h3",{attrs:{id:"requires"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),a("ul",[a("li",[t._v("ZLib installed.")])]),t._v(" "),a("h4",{attrs:{id:"install-zlib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-zlib"}},[t._v("#")]),t._v(" Install ZLib")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt-get")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" zlib1g-dev\n")])])]),a("h3",{attrs:{id:"install-oatpp-zlib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-oatpp-zlib"}},[t._v("#")]),t._v(" Install oatpp-zlib")]),t._v(" "),a("p",[t._v("Clone this repository. In the root of the repository run:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\ncmake "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),a("h2",{attrs:{id:"apis"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apis"}},[t._v("#")]),t._v(" APIs")]),t._v(" "),a("h3",{attrs:{id:"automatically-compress-served-content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#automatically-compress-served-content"}},[t._v("#")]),t._v(" Automatically Compress Served Content")]),t._v(" "),a("p",[t._v("Configure "),a("code",[t._v("server::ConnectionHandler")]),t._v(" in "),a("code",[t._v("AppComponent.hpp")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-zlib/EncoderProvider.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create HttpProcessor::Components */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" components "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Add content encoders */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" encoders "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProviderCollection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n encoders"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("zlib"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DeflateEncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n encoders"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("zlib"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("GzipEncoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Set content encoders */")]),t._v("\n components"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("contentEncodingProviders "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" encoders"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* return HttpConnectionHandler */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("components"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n")])])]),a("p",[t._v("Now served content will be automatically compressed and streamed to the client if the client sets "),a("code",[t._v("Accept-Encoding")]),t._v(" header appropriately.")]),t._v(" "),a("h3",{attrs:{id:"automatically-decompress-uploaded-content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#automatically-decompress-uploaded-content"}},[t._v("#")]),t._v(" Automatically Decompress Uploaded Content")]),t._v(" "),a("p",[t._v("Configure "),a("code",[t._v("server::ConnectionHandler")]),t._v(" in "),a("code",[t._v("AppComponent.hpp")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-zlib/EncoderProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create HttpProcessor::Components */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" components "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Add content decoders */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" decoders "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("encoding"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ProviderCollection"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n decoders"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("zlib"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DeflateDecoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n decoders"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("zlib"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("GzipDecoderProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Set Body Decoder */")]),t._v("\n components"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("bodyDecoder "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("protocol"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("http"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("incoming"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SimpleBodyDecoder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("decoders"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* return HttpConnectionHandler */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("components"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n")])])]),a("p",[t._v("Now uploaded content will be automatically decompressed if the client sets "),a("code",[t._v("Content-Encoding")]),t._v(" header properly.")])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/305.66f18528.js b/docs/.vuepress/dist/assets/js/305.66f18528.js deleted file mode 100644 index dd8b2d1d1..000000000 --- a/docs/.vuepress/dist/assets/js/305.66f18528.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[305],{678:function(e,t,a){"use strict";a.r(t);var r=a(42),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"module-oatpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#module-oatpp"}},[e._v("#")]),e._v(" Module oatpp "),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("oatpp")]),e._v(" - Main module. Other modules depend on it.")]),e._v(" "),a("h2",{attrs:{id:"inside"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inside"}},[e._v("#")]),e._v(" Inside")]),e._v(" "),a("ul",[a("li",[e._v("Rest framework ("),a("code",[e._v("ApiController")]),e._v(", "),a("code",[e._v("ApiClient")]),e._v(")")]),e._v(" "),a("li",[e._v("Simple DI framework")]),e._v(" "),a("li",[e._v("Object Mapping framework")]),e._v(" "),a("li",[e._v("Simple Test framework ("),a("code",[e._v("oatpp-test")]),e._v(" library)")]),e._v(" "),a("li",[e._v("Asynchronous Server")]),e._v(" "),a("li",[e._v("Multithreaded Server")]),e._v(" "),a("li",[e._v("HTTP 1.1")])]),e._v(" "),a("h2",{attrs:{id:"examples-using-standalone-oatpp-module"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#examples-using-standalone-oatpp-module"}},[e._v("#")]),e._v(" Examples using standalone "),a("code",[e._v("oatpp")]),e._v(" module")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/examples/hls-media-stream/"}},[e._v("HTTP Live Streaming Server")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/examples/async-api/"}},[e._v("Asynchronous API")])],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/306.dcea9ec2.js b/docs/.vuepress/dist/assets/js/306.dcea9ec2.js deleted file mode 100644 index 767916d9c..000000000 --- a/docs/.vuepress/dist/assets/js/306.dcea9ec2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[306],{677:function(t,e,i){"use strict";i.r(e);var s=i(42),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"monolithization"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#monolithization"}},[t._v("#")]),t._v(" Monolithization "),i("seo")],1),t._v(" "),i("p",[t._v("Monolithization is the technique that enables you to scale your microservices better.\nYou can develop regular microservices in Oat++, and when there is a little to no load in your system,\nyou can consolidate your services in a single monolith. Also, consolidated services perform better and consume less memory.\nThus you can reduce your infrastructure costs by reducing network overhead and minimizing the number of running instances.")]),t._v(" "),i("p",[t._v("The best way to understand Monolithization and how it works is through example.")]),t._v(" "),i("p"),i("div",{staticClass:"table-of-contents"},[i("ul",[i("li",[i("a",{attrs:{href:"#example"}},[t._v("Example")])]),i("li",[i("a",{attrs:{href:"#the-problem"}},[t._v("The Problem")])]),i("li",[i("a",{attrs:{href:"#the-concept-of-monolithization"}},[t._v("The Concept of Monolithization")]),i("ul",[i("li",[i("a",{attrs:{href:"#service-interfaces"}},[t._v("Service Interfaces")])]),i("li",[i("a",{attrs:{href:"#build-pipeline"}},[t._v("Build Pipeline")])]),i("li",[i("a",{attrs:{href:"#scaling"}},[t._v("Scaling")])])])]),i("li",[i("a",{attrs:{href:"#performance"}},[t._v("Performance")]),i("ul",[i("li",[i("a",{attrs:{href:"#requests-per-second"}},[t._v("Requests Per Second")])]),i("li",[i("a",{attrs:{href:"#memory-usage-mb"}},[t._v("Memory Usage (Mb)")])])])]),i("li",[i("a",{attrs:{href:"#links"}},[t._v("Links")])])])]),i("p"),t._v(" "),i("h2",{attrs:{id:"example"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),i("p",[t._v("Consider the following system consisting of three trivial microservices:")]),t._v(" "),i("ul",[i("li",[t._v("User Service")]),t._v(" "),i("li",[t._v("Book Service")]),t._v(" "),i("li",[t._v("Facade")])]),t._v(" "),i("img",{attrs:{alt:"Example microservices system",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/load-setup.svg?sanitize=true",width:"650px"}}),t._v(" "),i("p",[t._v("Facade requests user information from User-Service, book information from Book-Service. Then merges the data and returns to the client.")]),t._v(" "),i("h2",{attrs:{id:"the-problem"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#the-problem"}},[t._v("#")]),t._v(" The Problem")]),t._v(" "),i("p",[t._v("When there is a little load in this system, there is no need to scale its parts.\nThus it would be better to have this system as a monolith in order not to spawn multiple instances or containers.\nBut you want to keep microservices architecture, in order to be flexible in the future when there is a load.")]),t._v(" "),i("p",[t._v("You could probably deploy all services on a single instance running in separate processes.\nBut in this case, it's additional dev-ops effort. Plus, you still have the network overhead, as communicating through localhost decreases performance.")]),t._v(" "),i("h2",{attrs:{id:"the-concept-of-monolithization"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#the-concept-of-monolithization"}},[t._v("#")]),t._v(" The Concept of Monolithization")]),t._v(" "),i("p",[t._v("The concept is simple. - We are going to put all the services in a single process.\nAnd we are going to make services communicate through the Oat++ "),i("strong",[t._v("virtual connections")]),t._v(".")]),t._v(" "),i("img",{attrs:{alt:"Monolithization concept",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/microservices-monolithizated.svg?sanitize=true",width:"500px"}}),t._v(" "),i("p",[t._v("The Oat++ virtual connections substitute the network transport layer, so that your application logic can stay isolated.\nAnd they utilize internal buffers so that there is no network overhead as in case of communicating through the localhost.")]),t._v(" "),i("h3",{attrs:{id:"service-interfaces"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#service-interfaces"}},[t._v("#")]),t._v(" Service Interfaces")]),t._v(" "),i("p",[t._v("Consolidated services can keep their network interfaces, to be available for remote services.\nAnd they have to expose the virtual interface to communicate with consolidated services via virtual connections.")]),t._v(" "),i("img",{attrs:{alt:"Service interfaces",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/monolithization-interfaces.svg?sanitize=true",width:"600px"}}),t._v(" "),i("h3",{attrs:{id:"build-pipeline"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#build-pipeline"}},[t._v("#")]),t._v(" Build Pipeline")]),t._v(" "),i("p",[t._v("The good thing is that you don't have to change your build pipeline. Each team can develop its microservices independently from others."),i("br"),t._v("\nAll you need to do is to create a monolithic configuration for each set of microservices you want to consolidate.")]),t._v(" "),i("img",{attrs:{alt:"Build pipeline",src:"https://storage.googleapis.com/website-res/building-monolith.svg",width:"600px"}}),t._v(" "),i("h3",{attrs:{id:"scaling"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#scaling"}},[t._v("#")]),t._v(" Scaling")]),t._v(" "),i("p",[t._v("With Monolithization, you can scale gradually.\nStep by step, adding new monolithic deployments and decoupling your monolith into smaller pieces so that you can achieve the best configuration for your cloud.")]),t._v(" "),i("table",{staticStyle:{width:"100%"}},[i("tr",[i("th",[t._v("Step 1")]),t._v(" "),i("th",[t._v("Step 2")]),t._v(" "),i("th",[t._v("Step 3")])]),t._v(" "),i("tr",[i("td",[i("img",{attrs:{alt:"Scaling step 1",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/decoupling-1.svg?sanitize=true",width:"180px"}})]),t._v(" "),i("td",[i("img",{attrs:{alt:"Scaling step 2",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/decoupling-2.svg?sanitize=true",width:"300px"}})]),t._v(" "),i("td",[i("img",{attrs:{alt:"Scaling step 3",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/decoupling-3.svg?sanitize=true",width:"400px"}})])])]),t._v(" "),i("h2",{attrs:{id:"performance"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#performance"}},[t._v("#")]),t._v(" Performance")]),t._v(" "),i("p",[t._v("Below is the performance comparison of Oat++ microservices(deployed on the same instance) versus same microservices consolidated via Monolithization.")]),t._v(" "),i("img",{attrs:{alt:"Performance test setup",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/load-monolithizated.svg?sanitize=true",width:"650px"}}),t._v(" "),i("h3",{attrs:{id:"requests-per-second"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#requests-per-second"}},[t._v("#")]),t._v(" Requests Per Second")]),t._v(" "),i("img",{attrs:{alt:"Requests per second",src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/website/monolithization/svg/micro-vs-monolith.svg?sanitize=true",width:"800px"}}),t._v(" "),i("h3",{attrs:{id:"memory-usage-mb"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#memory-usage-mb"}},[t._v("#")]),t._v(" Memory Usage (Mb)")]),t._v(" "),i("table",[i("thead",[i("tr",[i("th"),t._v(" "),i("th",[t._v("Facade")]),t._v(" "),i("th",[t._v("User Service")]),t._v(" "),i("th",[t._v("Book Service")]),t._v(" "),i("th",[t._v("Total")])])]),t._v(" "),i("tbody",[i("tr",[i("td",[t._v("Oat++ (micro-svc) idle")]),t._v(" "),i("td",[t._v("25")]),t._v(" "),i("td",[t._v("3")]),t._v(" "),i("td",[t._v("3")]),t._v(" "),i("td",[t._v("31")])]),t._v(" "),i("tr",[i("td",[t._v("Oat++ (micro-svc) load")]),t._v(" "),i("td",[t._v("45")]),t._v(" "),i("td",[t._v("3.2")]),t._v(" "),i("td",[t._v("3.2")]),t._v(" "),i("td",[t._v("49.4")])]),t._v(" "),i("tr",[i("td",[t._v("Oat++ (monolith) idle")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("26.7")])]),t._v(" "),i("tr",[i("td",[t._v("Oat++ (monolith) load")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("-")]),t._v(" "),i("td",[t._v("37.7")])])])]),t._v(" "),i("h2",{attrs:{id:"links"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[t._v("#")]),t._v(" Links")]),t._v(" "),i("p",[i("a",{attrs:{href:"https://github.com/oatpp/example-microservices",target:"_blank",rel:"noopener noreferrer"}},[t._v("Example Project Repository"),i("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/307.ec9a8bbc.js b/docs/.vuepress/dist/assets/js/307.ec9a8bbc.js deleted file mode 100644 index 8daff89b2..000000000 --- a/docs/.vuepress/dist/assets/js/307.ec9a8bbc.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[307],{680:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"coroutines-in-oat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coroutines-in-oat"}},[t._v("#")]),t._v(" Coroutines in Oat++ "),a("seo")],1),t._v(" "),a("p",[t._v("Coroutines in Oat++ are not regular coroutines."),a("br"),t._v("\nOat++ implements custom stateless coroutines with scheduling. Scheduling gives additional space for optimization and better CPU utilization.")]),t._v(" "),a("p",[t._v("Coroutines in Oat++ are executed via "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/"}},[t._v("oatpp::async::Executor")]),t._v(". On each iteration, coroutine returns an\n"),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(" which tells executor what to do next.\nBased on the Action, the Oat++ async processor reschedules coroutines to the corresponding worker.")],1),t._v(" "),a("h2",{attrs:{id:"async-executor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#async-executor"}},[t._v("#")]),t._v(" Async Executor")]),t._v(" "),a("p",[t._v("The "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/"}},[t._v("oatpp::async::Executor")]),t._v(" allocates three groups of workers with the specified number of threads for each group.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* data-processing workers */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* I/O workers */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* timer workers */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v('All coroutines initially are placed to the "data-processing" worker-group and may be rescheduled to the I/O or Timer workers - depending on the\n'),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action"}},[t._v("oatpp::async::Action")]),t._v(" returned in Coroutine iteration.")],1),t._v(" "),a("img",{attrs:{src:"https://raw.githubusercontent.com/lganzzzo/oatpp-website-res/master/diagram/oatpp_async_executor.svg?sanitize=true",width:"700px"}}),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Even though the Oat++ async processor may reschedule coroutine to a different thread - coroutine is guaranteed to be destroyed on the same thread as it was created.")])]),t._v(" "),a("h3",{attrs:{id:"i-o-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#i-o-worker"}},[t._v("#")]),t._v(" I/O Worker")]),t._v(" "),a("p",[t._v("For I/O "),a("code",[t._v("oatpp::async::Executor")]),t._v(" uses "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/worker/IOEventWorker/"}},[t._v("IOEventWorker")]),t._v("\nwith event-based I/O implementations:")],1),t._v(" "),a("ul",[a("li",[t._v("kqueue based implementation - for Mac/BSD systems.")]),t._v(" "),a("li",[t._v("epoll based implementation - for Linux systems.")])]),t._v(" "),a("p",[t._v("When coroutine returns Action of type "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-io-wait"}},[t._v("TYPE_IO_WAIT")]),t._v(",\nit gets rescheduled to I/O worker placing file-descriptor provided in Action to kqueue/epoll."),a("br"),t._v(" "),a("strong",[t._v("Thus oatpp-coroutines are not wasting CPU resources spinning and polling long-waiting connections.")])],1),t._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),a("p",[t._v("In oatpp, Coroutine is the class extended from "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutine"}},[t._v("oatpp::async::Coroutine")]),t._v(" or from\n"),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#coroutinewithresult"}},[t._v("oatpp::async::CoroutineWithResult")]),t._v("."),a("br"),t._v("\nCoroutines are processed in the "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Executor/"}},[t._v("oatpp::async::Executor")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyCoroutine")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/*\n * act() - entrypoint of Coroutine\n * returns Action - what to do next\n */")]),t._v("\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"act()"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("step2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("step2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"step2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yieldTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("step3"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("step3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"step3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitTasksFinished")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Output:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("MyCoroutine:act()\nMyCoroutine:step2\nMyCoroutine:step3\n")])])]),a("h2",{attrs:{id:"call-coroutine-from-coroutine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-coroutine-from-coroutine"}},[t._v("#")]),t._v(" Call Coroutine from Coroutine")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OtherCoroutine")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OtherCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OtherCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"act()"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyCoroutine")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"act()"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" OtherCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("start")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Action to do after OtherCoroutine finished */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitTasksFinished")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Output:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("MyCoroutine:act()\nOtherCoroutine:act()\n")])])]),a("h2",{attrs:{id:"call-coroutine-and-return-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-coroutine-and-return-result"}},[t._v("#")]),t._v(" Call Coroutine and return Result")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CoroutineWithResult")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineWithResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CoroutineWithResult"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* result type */")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CoroutineWithResult"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"act()"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyCoroutine")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"act()"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" CoroutineWithResult"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("startForResult")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onResult"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onResult")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" result"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyCoroutine"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"result='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" result"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitTasksFinished")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Output:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("MyCoroutine:act()\nCoroutineWithResult:act()\nMyCoroutine:result=''\n")])])]),a("h2",{attrs:{id:"counter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#counter"}},[t._v("#")]),t._v(" Counter")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyCoroutineCounter")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutineCounter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" m_name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n v_int32 m_counter "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyCoroutineCounter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("m_name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"counter=%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_counter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("m_counter "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n m_counter "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("repeat")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\noatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("executor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutineCounter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutineCounter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("execute"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyCoroutineCounter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"C"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("waitTasksFinished")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("join")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Possible Output:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("A:counter=0\nB:counter=0\nC:counter=0\nA:counter=1\nB:counter=1\nC:counter=1\nA:counter=2\nB:counter=2\nC:counter=2\nA:counter=3\nB:counter=3\nC:counter=3\nA:counter=4\nB:counter=4\nC:counter=4\nA:counter=5\nB:counter=5\nC:counter=5\nA:counter=6\nB:counter=6\nC:counter=6\nA:counter=7\nB:counter=7\nC:counter=7\nA:counter=8\nB:counter=8\nC:counter=8\nA:counter=9\nB:counter=9\nC:counter=9\nA:counter=10\nB:counter=10\nC:counter=10\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/308.1aba5b3b.js b/docs/.vuepress/dist/assets/js/308.1aba5b3b.js deleted file mode 100644 index 6eef995d3..000000000 --- a/docs/.vuepress/dist/assets/js/308.1aba5b3b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[308],{679:function(t,s,a){"use strict";a.r(s);var n=a(42),r=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"api-simple-vs-async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-simple-vs-async"}},[t._v("#")]),t._v(" API - Simple vs Async "),a("seo")],1),t._v(" "),a("h2",{attrs:{id:"brief"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#brief"}},[t._v("#")]),t._v(" Brief")]),t._v(" "),a("p",[a("strong",[t._v("Simple")]),t._v(" - (multithreading plus blocking-IO approach) smaller latency, simple API, less coding. Disadvantages - comparable smaller limit of max simultaneous connections."),a("br"),t._v(" "),a("strong",[t._v("Async")]),t._v(" - (oatpp-coroutines plus non-blocking-IO approach) High performance, ability to handle tens of thousand simultaneous connections, less resources needed. Disadvantages - comparable higher latency, more complex API, more coding.")]),t._v(" "),a("h2",{attrs:{id:"thread-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#thread-usage"}},[t._v("#")]),t._v(" Thread Usage")]),t._v(" "),a("p",[a("strong",[t._v("Simple")]),t._v(" - (1 thread) / (1 connection) + (1 thread for accepting connections)"),a("br"),t._v(" "),a("strong",[t._v("Async")]),t._v(" - (1 thread) / (1 AsyncProcessor) + (1 thread for accepting connections)")]),t._v(" "),a("h2",{attrs:{id:"api-difference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-difference"}},[t._v("#")]),t._v(" Api Difference")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Simple")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("ConnectionHandler = HttpConnectionHandler")])]),t._v(" "),a("li",[t._v("In "),a("code",[t._v("ApiController")]),t._v(" - use "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-specifics"}},[t._v("ENDPOINT")])],1)])]),t._v(" "),a("li",[a("p",[t._v("Async")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("ConnectionHandler = AsyncHttpConnectionHandler")])]),t._v(" "),a("li",[t._v("In "),a("code",[t._v("ApiController")]),t._v(" - use "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-async-specifics"}},[t._v("ENDPOINT_ASYNC")])],1)])])]),t._v(" "),a("h3",{attrs:{id:"simple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#simple"}},[t._v("#")]),t._v(" Simple")]),t._v(" "),a("h4",{attrs:{id:"config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config"}},[t._v("#")]),t._v(" Config")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpRouter.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/component.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionProvider component which listens on the port\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create Router component\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" httpRouter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionHandler component which uses Router component to route requests\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h4",{attrs:{id:"controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#controller"}},[t._v("#")]),t._v(" Controller")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" postJson"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dtoMessage "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dtoMessage: "')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" dtoMessage"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#async"}},[t._v("#")]),t._v(" Async")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/AsyncHttpConnectionHandler.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpRouter.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/component.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionProvider component which listens on the port\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create Router component\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" httpRouter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionHandler component which uses Router component to route requests\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsyncHttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h4",{attrs:{id:"controller-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#controller-2"}},[t._v("#")]),t._v(" Controller")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"demo/api_async/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" PostJSONAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("PostJSONAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("readBodyToDtoAsync"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDefaultObjectMapper")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("PostJSONAsync"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onBodyObtained"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onBodyObtained")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dtoMessage: "')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/309.4e4d8802.js b/docs/.vuepress/dist/assets/js/309.4e4d8802.js deleted file mode 100644 index 9679ff589..000000000 --- a/docs/.vuepress/dist/assets/js/309.4e4d8802.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[309],{681:function(e,t,r){"use strict";r.r(t);var a=r(42),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"getting-started"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started "),r("seo")],1),e._v(" "),r("p",[e._v("Welcome to 🌱Oat++")]),e._v(" "),r("h2",{attrs:{id:"the-recommended-way-to-go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#the-recommended-way-to-go"}},[e._v("#")]),e._v(" The recommended way to go")]),e._v(" "),r("ol",[r("li",[r("p",[e._v("Install "),r("strong",[e._v("oatpp")]),e._v(":")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/docs/installation/unix-linux/"}},[e._v("Unix/Linux")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/docs/installation/windows/"}},[e._v("Windows")])],1),e._v(" "),r("li",[e._v("For exotic platforms look for stories on the "),r("RouterLink",{attrs:{to:"/supported-platforms/"}},[e._v("Supported Platforms")]),e._v(" page.")],1)])]),e._v(" "),r("li",[r("p",[e._v("Take a look at:")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/docs/start/high-level-overview/"}},[e._v("High Level Overview")]),e._v(" - Learn about the main components and features of Oat++.")],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/docs/start/step-by-step/"}},[e._v("Step By Step Guide")]),e._v(" - How to create an Oat++ project from scratch. Get more low-level details.")],1)])]),e._v(" "),r("li",[r("p",[e._v("Check out "),r("RouterLink",{attrs:{to:"/docs/start/#examples"}},[e._v("examples")]),e._v(" and starter-projects:")],1),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/docs/start/project/"}},[e._v("Starter Project - Simple API")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/docs/start/project-async-api/"}},[e._v("Starter project - Async API")])],1)])]),e._v(" "),r("li",[r("p",[e._v("👉Join dev community and don't hesitate to ask questions - "),r("a",{attrs:{href:"https://gitter.im/oatpp-framework/Lobby",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chat On Gitter"),r("OutboundLink")],1),e._v("👈✌️")])])]),e._v(" "),r("h2",{attrs:{id:"examples"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[e._v("#")]),e._v(" Examples")]),e._v(" "),r("h3",{attrs:{id:"rest-api"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[e._v("#")]),e._v(" REST-API")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/examples/crud/"}},[e._v("REST Service")]),e._v(' - A complete example of a "CRUD" service (UserService) built with Oat++. REST + Swagger-UI + SQLite.')],1),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-api-client",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Client"),r("OutboundLink")],1),e._v(" - Example project of how-to use Retrofit-like client wrapper (ApiClient) and how it works.")])]),e._v(" "),r("h3",{attrs:{id:"websocket"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#websocket"}},[e._v("#")]),e._v(" WebSocket")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/lganzzzo/canchat",target:"_blank",rel:"noopener noreferrer"}},[e._v("Can Chat"),r("OutboundLink")],1),e._v(" - Feature-complete rooms-based chat for tens of thousands users. Client plus Server.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebSocket"),r("OutboundLink")],1),e._v(" - Collection of oatpp WebSocket examples.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-yuv-websocket-stream",target:"_blank",rel:"noopener noreferrer"}},[e._v("YUV Websocket Stream"),r("OutboundLink")],1),e._v(" - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets.")])]),e._v(" "),r("h3",{attrs:{id:"databases"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#databases"}},[e._v("#")]),e._v(" Databases")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/examples/crud/"}},[e._v("SQLite")]),e._v(' - A complete example of a "CRUD" service. REST + Swagger-UI + SQLite.')],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/examples/postgresql/"}},[e._v("PostgreSQL")]),e._v(" - Example of a production-grade entity service storing information in PostgreSQL. With Swagger-UI and configuration profiles.")],1),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[e._v("MongoDB"),r("OutboundLink")],1),e._v(" - Example project how to work with MongoDB using "),r("strong",[e._v("oatpp-mongo")]),e._v(" mondule. Project is a web-service with basic CRUD and Swagger-UI.")])]),e._v(" "),r("h3",{attrs:{id:"iot"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#iot"}},[e._v("#")]),e._v(" IoT")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-iot-hue-ssdp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example-IoT-Hue"),r("OutboundLink")],1),e._v(" - Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo.")])]),e._v(" "),r("h3",{attrs:{id:"streaming"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#streaming"}},[e._v("#")]),e._v(" Streaming")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/examples/hls-media-stream/"}},[e._v("HTTP Live Streaming Server")]),e._v(" - Example project on how to build an HLS-streaming server using Oat++ asynchronous API.")],1),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-yuv-websocket-stream",target:"_blank",rel:"noopener noreferrer"}},[e._v("YUV Websocket Stream"),r("OutboundLink")],1),e._v(" - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets.")])]),e._v(" "),r("h3",{attrs:{id:"tls"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tls"}},[e._v("#")]),e._v(" TLS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-libressl",target:"_blank",rel:"noopener noreferrer"}},[e._v("TLS With Libressl"),r("OutboundLink")],1),e._v(" - Example project how-to setup secure connection and serve via HTTPS.")])]),e._v(" "),r("h3",{attrs:{id:"microservices"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#microservices"}},[e._v("#")]),e._v(" Microservices")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-consul",target:"_blank",rel:"noopener noreferrer"}},[e._v("Consul Integration"),r("OutboundLink")],1),e._v(" - Example project on how to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-consul/rest/Client/"}},[e._v("oatpp::consul::Client")]),e._v(". Consul integration.")],1),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-microservices",target:"_blank",rel:"noopener noreferrer"}},[e._v("Microservices"),r("OutboundLink")],1),e._v(" - Example project on how to build microservices with Oat++,\nand example on how to consolidate those microservices using "),r("RouterLink",{attrs:{to:"/docs/monolithization/"}},[e._v("monolithization")]),e._v(" technique.")],1)]),e._v(" "),r("h3",{attrs:{id:"asynchronous-api"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#asynchronous-api"}},[e._v("#")]),e._v(" Asynchronous API")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-async-api",target:"_blank",rel:"noopener noreferrer"}},[e._v("Async Service"),r("OutboundLink")],1),e._v(" - Example project on how to use asynchronous API to handle a large number of simultaneous connections.")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/31.a2dcdd79.js b/docs/.vuepress/dist/assets/js/31.a2dcdd79.js deleted file mode 100644 index e8c0c441d..000000000 --- a/docs/.vuepress/dist/assets/js/31.a2dcdd79.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{403:function(t,a,e){"use strict";e.r(a);var s=e(42),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connection-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/blob/master/src/oatpp-mbedtls/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/issues/new?title=API%20question&body=In%20file:%20oatpp-mbedtls/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mbedtls")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mbedtls/Connection.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),e("p",[t._v("TLS Connection implementation based on Mbed TLS. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(" and "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mbedtls "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-connection"}},[t._v("Connection")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-~connection"}},[t._v("~Connection")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Write operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read operation callback.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get output stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get input stream context. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-closetls"}},[t._v("closeTLS")])]),t._v(" "),e("td",[t._v("Close TLS handles.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("mbedtls_ssl_context*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gettlshandle"}},[t._v("getTlsHandle")])]),t._v(" "),e("td",[t._v("Get TLS handle.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("provider::ResourceHandle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gettransportstream"}},[t._v("getTransportStream")])]),t._v(" "),e("td",[t._v("Get the underlying transport stream.")])])])]),t._v(" "),e("h3",{attrs:{id:"connection-connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection"}},[t._v("#")]),t._v(" Connection::Connection")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" tlsHandle - "),e("code",[t._v("mbedtls_ssl_context*")]),t._v(". ")]),e("li",[e("strong",[t._v("@param")]),t._v(" stream - underlying transport stream. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" initialized - is stream initialized (do we have handshake already). ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mbedtls_ssl_context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" tlsHandle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" initialized"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-connection-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection-2"}},[t._v("#")]),t._v(" Connection::~Connection")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-write"}},[t._v("#")]),t._v(" Connection::write")]),t._v(" "),e("p",[t._v("Write operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the data in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-read"}},[t._v("#")]),t._v(" Connection::read")]),t._v(" "),e("p",[t._v("Read operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("#")]),t._v(" Connection::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setinputstreamiomode"}},[t._v("#")]),t._v(" Connection::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamiomode"}},[t._v("#")]),t._v(" Connection::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamcontext"}},[t._v("#")]),t._v(" Connection::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-closetls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-closetls"}},[t._v("#")]),t._v(" Connection::closeTLS")]),t._v(" "),e("p",[t._v("Close TLS handles.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("closeTLS")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-gettlshandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gettlshandle"}},[t._v("#")]),t._v(" Connection::getTlsHandle")]),t._v(" "),e("p",[t._v("Get TLS handle. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("mbedtls_ssl_context*")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("mbedtls_ssl_context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTlsHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-gettransportstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gettransportstream"}},[t._v("#")]),t._v(" Connection::getTransportStream")]),t._v(" "),e("p",[t._v("Get the underlying transport stream. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - underlying transport stream. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTransportStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/310.7343a5c4.js b/docs/.vuepress/dist/assets/js/310.7343a5c4.js deleted file mode 100644 index 6a89d4470..000000000 --- a/docs/.vuepress/dist/assets/js/310.7343a5c4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[310],{682:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"high-level-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#high-level-overview"}},[t._v("#")]),t._v(" High Level Overview "),a("seo")],1),t._v(" "),a("p",[t._v("This is the high level overview of Oat++ API.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#api-controller-request-mapping"}},[t._v("API Controller - Request Mapping")]),a("ul",[a("li",[a("a",{attrs:{href:"#declare-endpoint"}},[t._v("Declare Endpoint")])]),a("li",[a("a",{attrs:{href:"#add-cors-for-endpoint"}},[t._v("Add CORS for Endpoint")])]),a("li",[a("a",{attrs:{href:"#endpoint-with-authorization"}},[t._v("Endpoint with Authorization")])])])]),a("li",[a("a",{attrs:{href:"#api-client-retrofit-feign-like-client"}},[t._v("API Client - Retrofit / Feign Like Client")]),a("ul",[a("li",[a("a",{attrs:{href:"#declare-client"}},[t._v("Declare Client")])]),a("li",[a("a",{attrs:{href:"#using-api-client"}},[t._v("Using API Client")])])])]),a("li",[a("a",{attrs:{href:"#object-mapping"}},[t._v("Object Mapping")]),a("ul",[a("li",[a("a",{attrs:{href:"#declare-dto"}},[t._v("Declare DTO")])]),a("li",[a("a",{attrs:{href:"#serialize-dto-using-objectmapper"}},[t._v("Serialize DTO Using ObjectMapper")])])])]),a("li",[a("a",{attrs:{href:"#swagger-ui-annotations"}},[t._v("Swagger-UI Annotations")]),a("ul",[a("li",[a("a",{attrs:{href:"#additional-endpoint-info"}},[t._v("Additional Endpoint Info")])])])]),a("li",[a("a",{attrs:{href:"#orm-framework"}},[t._v("ORM Framework")]),a("ul",[a("li",[a("a",{attrs:{href:"#declare-dbclient"}},[t._v("Declare DbClient")])]),a("li",[a("a",{attrs:{href:"#dbclient-usage-example"}},[t._v("DbClient Usage Example")])])])]),a("li",[a("a",{attrs:{href:"#modules-and-build-status"}},[t._v("Modules And Build Status")])]),a("li",[a("a",{attrs:{href:"#read-next"}},[t._v("Read Next")])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"api-controller-request-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-controller-request-mapping"}},[t._v("#")]),t._v(" API Controller - Request Mapping")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/"}},[t._v("Api Controller")])],1),t._v(" "),a("h3",{attrs:{id:"declare-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declare-endpoint"}},[t._v("#")]),t._v(" Declare Endpoint")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n userDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("updateUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-cors-for-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-cors-for-endpoint"}},[t._v("#")]),t._v(" Add CORS for Endpoint")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#cors"}},[t._v("Api Controller / CORS")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ADD_CORS")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n userDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("updateUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"endpoint-with-authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoint-with-authorization"}},[t._v("#")]),t._v(" Endpoint with Authorization")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#authorization-basic"}},[t._v("Api Controller / Authorization")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AUTHORIZATION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DefaultBasicAuthorizationObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT_HTTP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" authObject"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("password "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_401"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Unauthorized"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n userDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("updateUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"api-client-retrofit-feign-like-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-client-retrofit-feign-like-client"}},[t._v("#")]),t._v(" API Client - Retrofit / Feign Like Client")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("Api Client")])],1),t._v(" "),a("h3",{attrs:{id:"declare-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declare-client"}},[t._v("#")]),t._v(" Declare Client")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("UserService")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CLIENT_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("UserService"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUsers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getUserById"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"using-api-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-api-client"}},[t._v("#")]),t._v(" Using API Client")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" userService"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserById")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" user "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("readBodyToDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"object-mapping"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object-mapping"}},[t._v("#")]),t._v(" Object Mapping")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/dto/"}},[t._v("Data Transfer Object (DTO)")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"declare-dto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declare-dto"}},[t._v("#")]),t._v(" Declare DTO")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("UserDto")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Object"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"serialize-dto-using-objectmapper"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#serialize-dto-using-objectmapper"}},[t._v("#")]),t._v(" Serialize DTO Using ObjectMapper")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create JSON object mapper */")]),t._v("\nObjectMapper objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" user "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nuser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Serialize DTO to JSON */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Output:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ivan"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"swagger-ui-annotations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#swagger-ui-annotations"}},[t._v("#")]),t._v(" Swagger-UI Annotations")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-annotation-and-api-documentation"}},[t._v("Endpoint Annotation And API Documentation")])],1),t._v(" "),a("h3",{attrs:{id:"additional-endpoint-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-endpoint-info"}},[t._v("#")]),t._v(" Additional Endpoint Info")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_INFO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// general")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("summary "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Update User by userId"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addConsumes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("addResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_404"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"text/plain"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// params specific")]),t._v("\n info"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("pathParams"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"userId"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"User Identifier"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/{userId}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" putUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n userDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" userId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_database"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("updateUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("userDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"orm-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#orm-framework"}},[t._v("#")]),t._v(" ORM Framework")]),t._v(" "),a("p",[t._v("For more info see "),a("RouterLink",{attrs:{to:"/docs/components/orm/"}},[t._v("Oat++ ORM Framework")])],1),t._v(" "),a("h3",{attrs:{id:"declare-dbclient"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#declare-dbclient"}},[t._v("#")]),t._v(" Declare DbClient")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClient")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DbClient "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("orm"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DbClient")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("createUser"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT INTO users (username, email, role) VALUES (:username, :email, :role);"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" email"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Enum"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserRoles"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AsString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" role"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("QUERY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("getUserByName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SELECT * FROM users WHERE username=:username;"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PARAM")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"dbclient-usage-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dbclient-usage-example"}},[t._v("#")]),t._v(" DbClient Usage Example")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyClient database client */")]),t._v("\nMyClient "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("client")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("executor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create new user in the database */")]),t._v("\nclient"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createUser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" UserRoles"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ADMIN"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Find user by username in the database */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" result "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserByUsername")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Retrieve query result as a vector of UserDto objects */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Of cause, UserDto had to be previously defined */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dataset "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" result"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("fetch"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Vector"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* And we can easily serialize result as a json string using json object mapper */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" json "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" jsonObjectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("writeToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dataset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print the resultant json */")]),t._v("\nstd"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("endl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Output:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@domain.com"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"role"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ROLE_ADMIN"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h2",{attrs:{id:"modules-and-build-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modules-and-build-status"}},[t._v("#")]),t._v(" Modules And Build Status")]),t._v(" "),a("p",[t._v("To get an overview of oatpp modules, their hierarchy, and build status - see "),a("RouterLink",{attrs:{to:"/status/build/"}},[t._v("build status")]),t._v(".")],1),t._v(" "),a("h2",{attrs:{id:"read-next"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#read-next"}},[t._v("#")]),t._v(" Read Next")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/docs/start/step-by-step/#well-structured-project"}},[t._v("Well Structured Project")])],1)])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/311.46b84629.js b/docs/.vuepress/dist/assets/js/311.46b84629.js deleted file mode 100644 index 2aa0e3cbf..000000000 --- a/docs/.vuepress/dist/assets/js/311.46b84629.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[311],{683:function(t,e,r){"use strict";r.r(e);var o=r(42),s=Object(o.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"starter-project-oat-module"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#starter-project-oat-module"}},[this._v("#")]),this._v(" Starter Project - Oat++ Module "),e("seo")],1),this._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-module",target:"_blank",rel:"noopener noreferrer"}},[this._v("Github Repository"),e("OutboundLink")],1)]),this._v(" "),e("p",[this._v("Starter project for oatpp-module")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/312.a1bce297.js b/docs/.vuepress/dist/assets/js/312.a1bce297.js deleted file mode 100644 index e00cb049c..000000000 --- a/docs/.vuepress/dist/assets/js/312.a1bce297.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[312],{684:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"starter-project-async-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#starter-project-async-api"}},[t._v("#")]),t._v(" Starter Project - Async API"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-async",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("Starter project for Oat++ (AKA oatpp) application. Based on oatpp Async API.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Async API suits best for services dedicated to a single type of tasks that run at high concurrency levels."),s("br"),t._v("\nExample:")]),t._v(" "),s("ul",[s("li",[t._v("Simultanious download of multiple files.")]),t._v(" "),s("li",[t._v("Streaming to large number of clients (1K or more).")]),t._v(" "),s("li",[t._v("Chats.")])]),t._v(" "),s("p",[s("strong",[t._v("For all other purposes use simple API")]),t._v(".")])]),t._v(" "),s("h2",{attrs:{id:"before-you-start"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#before-you-start"}},[t._v("#")]),t._v(" Before you start")]),t._v(" "),s("p",[t._v("Read:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/docs/simple-vs-async/"}},[t._v("Simple API vs Async API")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/docs/async/"}},[t._v("Async")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("Oatpp-Coroutines")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-async-specifics"}},[t._v("ENDPOINT_ASYNC")])],1)]),t._v(" "),s("h2",{attrs:{id:"overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),s("h3",{attrs:{id:"project-layout"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing UserController where all endpoints are declared\n| |- dto/ // DTOs are declared here\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n| \n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n")])])]),s("hr"),t._v(" "),s("h3",{attrs:{id:"build-and-run"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),s("h4",{attrs:{id:"using-cmake"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),s("p",[s("strong",[t._v("Requires")])]),t._v(" "),s("ul",[s("li",[s("code",[t._v("oatpp")]),t._v(" module installed. You may run "),s("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n$ cmake "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" \n$ ./my-project-exe "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - run application.")]),t._v("\n\n")])])]),s("h4",{attrs:{id:"in-docker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("$ docker build -t oatpp-starter-async "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v("\n$ docker run -p "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(":8000 -t oatpp-starter-async\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/313.e0f7f2fa.js b/docs/.vuepress/dist/assets/js/313.e0f7f2fa.js deleted file mode 100644 index 3318b489e..000000000 --- a/docs/.vuepress/dist/assets/js/313.e0f7f2fa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[313],{685:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"starter-project"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#starter-project"}},[t._v("#")]),t._v(" Starter Project "),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("Starter project for Oat++ (AKA oatpp) application. Based on oatpp Multithreaded (Simple) API.")]),t._v(" "),e("h2",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("h3",{attrs:{id:"project-layout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing MyController where all endpoints are declared\n| |- dto/ // DTOs are declared here\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. \n")])])]),e("hr"),t._v(" "),e("h3",{attrs:{id:"build-and-run"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),e("h4",{attrs:{id:"using-cmake"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),e("p",[e("strong",[t._v("Requires")])]),t._v(" "),e("ul",[e("li",[e("code",[t._v("oatpp")]),t._v(" module installed. You may run "),e("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n$ cmake "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" \n$ ./my-project-exe "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - run application.")]),t._v("\n\n")])])]),e("h4",{attrs:{id:"in-docker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("$ docker build -t oatpp-starter "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v("\n$ docker run -p "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(":8000 -t oatpp-starter\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/314.1cfbdb8b.js b/docs/.vuepress/dist/assets/js/314.1cfbdb8b.js deleted file mode 100644 index 6e9e33921..000000000 --- a/docs/.vuepress/dist/assets/js/314.1cfbdb8b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[314],{688:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"step-by-step-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-by-step-guide"}},[t._v("#")]),t._v(" Step By Step Guide "),a("seo")],1),t._v(" "),a("p",[t._v("This step-by-step guide will help you start developing using oatpp framework.\nAfter finishing it, you’ll have a well-structured and extendable web-service with basic endpoints.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#simplest-project"}},[t._v("Simplest Project")]),a("ul",[a("li",[a("a",{attrs:{href:"#api-low-level-components-overview"}},[t._v("API - Low Level Components Overview")])]),a("li",[a("a",{attrs:{href:"#add-request-handler"}},[t._v("Add Request Handler")])]),a("li",[a("a",{attrs:{href:"#respond-with-json-object"}},[t._v("Respond With JSON Object")])])])]),a("li",[a("a",{attrs:{href:"#well-structured-project"}},[t._v("Well Structured Project")]),a("ul",[a("li",[a("a",{attrs:{href:"#project-layout"}},[t._v("Project Layout")])]),a("li",[a("a",{attrs:{href:"#application-components-configuration"}},[t._v("Application Components Configuration")])]),a("li",[a("a",{attrs:{href:"#move-dto-definitions-to-a-separate-file"}},[t._v("Move DTO definitions to a separate file")])]),a("li",[a("a",{attrs:{href:"#use-api-controller"}},[t._v("Use API Controller")])]),a("li",[a("a",{attrs:{href:"#add-controller-endpoints-to-router"}},[t._v("Add Controller Endpoints to Router")])])])]),a("li",[a("a",{attrs:{href:"#testing-oat-application"}},[t._v("Testing Oat++ Application")]),a("ul",[a("li",[a("a",{attrs:{href:"#application-test-components-configuration"}},[t._v("Application Test Components Configuration")])]),a("li",[a("a",{attrs:{href:"#api-test-client"}},[t._v("API Test Client")])]),a("li",[a("a",{attrs:{href:"#create-test"}},[t._v("Create Test")])]),a("li",[a("a",{attrs:{href:"#run-tests"}},[t._v("Run Tests")])])])]),a("li",[a("a",{attrs:{href:"#complete-project-code"}},[t._v("Complete Project Code")])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"simplest-project"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#simplest-project"}},[t._v("#")]),t._v(" Simplest Project")]),t._v(" "),a("h3",{attrs:{id:"api-low-level-components-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-low-level-components-overview"}},[t._v("#")]),t._v(" API - Low Level Components Overview")]),t._v(" "),a("p",[t._v("To get basic components overview let's take a look at the simplest oatpp server application first.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/Server.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Router for HTTP requests routing */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" router "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create HTTP connection handler with router */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionHandler "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create TCP connection provider */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided TCP connections and passes them to HTTP connection handler */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print info about server port */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyApp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server running on port %s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\n server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Init oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run App */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Destroy oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),a("p",[t._v("Classes used:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/"}},[t._v("HttpRouter")]),t._v(" -\nRouter of HTTP requests. It maps URLs to endpoint handlers.\nOur app has no endpoints declared so far hence the server will always return "),a("code",[t._v("404 not found")]),t._v(".")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpConnectionHandler/"}},[t._v("HttpConnectionHandler")]),t._v(" - This is a simple HTTP connection handler.\nIt handles incoming connections in a multi threaded manner, creating one thread per each connection.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/server/ConnectionProvider/"}},[t._v("ConnectionProvider")]),t._v(" - Provider of "),a("code",[t._v("TCP")]),t._v(" connections.\nIt binds to a specified port.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Server/"}},[t._v("Server")]),t._v(" - Server runs a loop which takes connections from "),a("code",[t._v("ConnectionProvider")]),t._v("\nand passes them to "),a("code",[t._v("ConnectionHandler")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"add-request-handler"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-request-handler"}},[t._v("#")]),t._v(" Add Request Handler")]),t._v(" "),a("p",[t._v("Application above does nothing but respond "),a("code",[t._v("404")]),t._v(" to all client requests."),a("br"),t._v("\nTo add a custom response we have to add "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRequestHandler/"}},[t._v("HttpRequestHandler")]),t._v(" and route\nrequests to it via "),a("code",[t._v("Router")]),t._v(":")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/Server.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/** \n * Custom Request Handler\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Handler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Handle incoming request and return outgoing response.\n */")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" ResponseFactory"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello World!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Router for HTTP requests routing */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" router "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Route GET - "/hello" requests to Handler */')]),t._v("\n router"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("route")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create HTTP connection handler with router */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionHandler "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create TCP connection provider */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided TCP connections and passes them to HTTP connection handler */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Priny info about server port */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyApp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server running on port %s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\n server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Init oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run App */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Destroy oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),a("p",[t._v("Now if we go to "),a("code",[t._v("http:/localhost:8000/hello")]),t._v(" in browser - we get "),a("code",[t._v("Hello World!")]),t._v(" message.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" http://localhost:8000/hello\nHello World"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n")])])]),a("h3",{attrs:{id:"respond-with-json-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#respond-with-json-object"}},[t._v("#")]),t._v(" Respond With JSON Object")]),t._v(" "),a("p",[t._v("In order to Serialize/Deserialize objects oatpp uses special "),a("RouterLink",{attrs:{to:"/docs/components/dto/"}},[t._v("Data-Transfer-Objects (DTO)")]),t._v(" and\n"),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/"}},[t._v("ObjectMappers")]),t._v(".")],1),t._v(" "),a("p",[t._v("The format in which DTO is serialized is defined by Object Mapper."),a("br"),t._v("\nIn this particular example we are using "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/parser/json/mapping/ObjectMapper/"}},[t._v("JSON ObjectMapper")]),t._v(". So our message\nwill be serialized to JSON.")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/Server.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Begin DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Message Data-Transfer-Object\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MessageDto")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MessageDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Extends */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" statusCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Status code field")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Message field")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* End DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Custom Request Handler\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Handler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Constructor with object mapper.\n * @param objectMapper - object mapper used to serialize objects.\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Handler")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_objectMapper")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Handle incoming request and return outgoing response.\n */")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MessageDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("statusCode "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello DTO!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" ResponseFactory"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create json object mapper */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" objectMapper "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Router for HTTP requests routing */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" router "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Route GET - "/hello" requests to Handler */')]),t._v("\n router"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("route")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* json object mapper */")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create HTTP connection handler with router */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionHandler "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create TCP connection provider */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" connectionProvider "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided TCP connections and passes them to HTTP connection handler */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Priny info about server port */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyApp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server running on port %s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\n server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Init oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run App */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Destroy oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Now if we go to "),a("code",[t._v("http:/localhost:8000/hello")]),t._v(" in browser - we get the JSON response.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" http://localhost:8000/hello\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"statusCode"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),t._v(", "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"message"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello DTO!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"well-structured-project"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#well-structured-project"}},[t._v("#")]),t._v(" Well Structured Project")]),t._v(" "),a("p",[t._v("While creating request handler for each custom endpoint ("),a("em",[t._v("as described above in simplest example")]),t._v(") may be suitable for small projects,\nit is recommended to follow oatpp-project-structure in order to have easily configurable and extandable code.")]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project Layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- dto/ // Folder containing DTOs definitions\n| | |\n| | |- DTOs.hpp // DTOs are declared here\n| | \n| |- controller/ // Folder containing API Controllers where all endpoints are declared\n| | |\n| | |- MyController.hpp // Sample - MyController is declared here\n| | \n| |- AppComponent.hpp // Application Components configuration \n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n |\n |- app/\n | |\n | |- MyApiTestClient.hpp // Api client for test API calls is declared here\n | |- TestComponent.hpp // Test application components configuration\n | \n |- MyControllerTest.cpp // MyController test logic is here\n |- MyControllerTest.hpp // MyController test header\n |- Tests.cpp // tests main() is here\n")])])]),a("h3",{attrs:{id:"application-components-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-components-configuration"}},[t._v("#")]),t._v(" Application Components Configuration")]),t._v(" "),a("p",[t._v("Use oatpp provided dependency injection in order to configure your application.")]),t._v(" "),a("p",[t._v("Create environment component via "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/macro/component/#oatpp-create-component"}},[t._v("OATPP_CREATE_COMPONENT")]),t._v("\nand inject it where needed using "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/macro/component/#oatpp-component"}},[t._v("OATPP_COMPONENT")]),t._v(".")],1),t._v(" "),a("h4",{attrs:{id:"modify-simple-example-to-use-dependency-injection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modify-simple-example-to-use-dependency-injection"}},[t._v("#")]),t._v(" Modify Simple Example to use Dependency Injection")]),t._v(" "),a("p",[t._v("Create file "),a("code",[t._v("AppComponent.hpp")]),t._v(" in you projects "),a("code",[t._v("src")]),t._v(" folder and move there initialization of all application components.")]),t._v(" "),a("p",[a("code",[t._v("AppComponent.hpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" AppComponent_hpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" AppComponent_hpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/tcp/server/ConnectionProvider.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/component.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Class which creates and holds Application components and registers components in oatpp::base::Environment\n * Order of components initialization is from top to bottom\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AppComponent")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionProvider component which listens on the port\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("tcp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IP_4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create Router component\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" httpRouter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionHandler component which uses Router component to route requests\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" apiObjectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* AppComponent_hpp */")]),t._v("\n")])])]),a("p",[t._v("Now all major components are initialized in one place which makes it easy to configure application by substituting components.")]),t._v(" "),a("p",[a("code",[t._v("App.cpp")]),t._v(" (main) can be rewritten as follows:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AppComponent.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/Server.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Begin DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Message Data-Transfer-Object\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MessageDto")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MessageDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Extends */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" statusCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Status code field")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Message field")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* End DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Custom Request Handler\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Handler")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestHandler "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Inject object mapper component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Handle incoming request and return outgoing response.\n */")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OutgoingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("handle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingRequest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MessageDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("statusCode "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello DTO!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" ResponseFactory"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" m_objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Register Components in scope of run() method */")]),t._v("\n AppComponent components"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get router component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Route GET - "/hello" requests to Handler */')]),t._v("\n router"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("route")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Handler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get connection handler component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get connection provider component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided TCP connections and passes them to HTTP connection handler */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Priny info about server port */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyApp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server running on port %s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\n server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Init oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run App */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Destroy oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"move-dto-definitions-to-a-separate-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#move-dto-definitions-to-a-separate-file"}},[t._v("#")]),t._v(" Move DTO definitions to a separate file")]),t._v(" "),a("p",[t._v("In folder "),a("code",[t._v("src/dto/")]),t._v(" create file "),a("code",[t._v("DTOs.hpp")]),t._v("."),a("br"),t._v("\nMove "),a("code",[t._v("MessageDto")]),t._v(" definition to "),a("code",[t._v("DTOs.hpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" DTOs_hpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" DTOs_hpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/data/mapping/type/Object.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Begin DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Message Data-Transfer-Object\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MessageDto")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MessageDto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DTO "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Extends */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" statusCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Status code field")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Message field")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* TODO - Add more DTOs here */")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* End DTO code-generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(DTO)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* DTOs_hpp */")]),t._v("\n")])])]),a("h3",{attrs:{id:"use-api-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-api-controller"}},[t._v("#")]),t._v(" Use API Controller")]),t._v(" "),a("p",[t._v("Instead of using bare HttpRequestHandler creating new Request Handler for every new endpoint, it is recommened to\nuse "),a("RouterLink",{attrs:{to:"/docs/components/api-controller/"}},[t._v("Api Controller")]),t._v(".")],1),t._v(" "),a("p",[t._v("API Controller makes process of adding new endpoints much easier by generating boilerplate code for you. It also helps\nto organize your endpoints grouping them in different API Controllers.")]),t._v(" "),a("h4",{attrs:{id:"create-api-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-api-controller"}},[t._v("#")]),t._v(" Create Api Controller")]),t._v(" "),a("p",[t._v("In folder "),a("code",[t._v("src/controller/")]),t._v(" create file "),a("code",[t._v("MyController.hpp")]),t._v("."),a("br"),t._v("\nAdd the following code to "),a("code",[t._v("MyController.hpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" MyController_hpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" MyController_hpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"dto/DTOs.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/api/ApiController.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/component.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiController) ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< Begin Codegen")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Sample Api Controller.\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyController")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Constructor with object mapper.\n * @param objectMapper - default object mapper used to serialize/deserialize DTOs.\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ApiController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dto "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MessageDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("statusCode "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello World!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO Insert Your endpoints here !!!")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiController) ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("///< End Codegen")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* MyController_hpp */")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-controller-endpoints-to-router"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-controller-endpoints-to-router"}},[t._v("#")]),t._v(" Add Controller Endpoints to Router")]),t._v(" "),a("p",[t._v("In order to serve endpoints declared in Api Controller we have to add those endpoints to the Router."),a("br"),t._v("\nAnd the final look of the App.cpp is as follows:")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"controller/MyController.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AppComponent.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/Server.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Register Components in scope of run() method */")]),t._v("\n AppComponent components"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get router component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create MyController and add all of its endpoints to router */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" myController "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n myController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addEndpointsToRouter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get connection handler component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get connection provider component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create server which takes provided TCP connections and passes them to HTTP connection handler */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("connectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Priny info about server port */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyApp"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Server running on port %s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" connectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getProperty")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"port"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run server */")]),t._v("\n server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" argv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Init oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run App */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Destroy oatpp Environment */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"testing-oat-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing-oat-application"}},[t._v("#")]),t._v(" Testing Oat++ Application")]),t._v(" "),a("p",[t._v("Testing of a oatpp application generally means the following:")]),t._v(" "),a("ul",[a("li",[t._v("Create application test configuration in order to run application in test-mode.")]),t._v(" "),a("li",[t._v("Define "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v(" for Application's API.")],1),t._v(" "),a("li",[t._v("Create test which runs application using test-configuration and makes API calls via test Api Client.")])]),t._v(" "),a("h3",{attrs:{id:"application-test-components-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-test-components-configuration"}},[t._v("#")]),t._v(" Application Test Components Configuration")]),t._v(" "),a("p",[t._v("In folder "),a("code",[t._v("test/app/")]),t._v(" create file "),a("code",[t._v("TestComponent.hpp")]),t._v(" (similar to "),a("code",[t._v("AppComponent")]),t._v("):")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" TestComponent_htpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" TestComponent_htpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/server/HttpConnectionHandler.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/virtual_/client/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/virtual_/server/ConnectionProvider.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/network/virtual_/Interface.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/parser/json/mapping/ObjectMapper.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/component.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Test Components config\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TestComponent")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create oatpp virtual network interface for test networking\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" virtualInterface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"virtualhost"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create server ConnectionProvider of oatpp virtual connections for test\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create client ConnectionProvider of oatpp virtual connections for test\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" clientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("virtual_"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("interface"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create Router component\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" httpRouter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionHandler component which uses Router component to route requests\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionHandler"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// get Router component")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpConnectionHandler"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API\n */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" apiObjectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TestComponent_htpp")]),t._v("\n")])])]),a("p",[t._v("Notice usage of:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/Interface/"}},[t._v("Network Virtual Interface")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/server/ConnectionProvider/"}},[t._v("Server Virtual ConnectionProvider")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/network/virtual_/client/ConnectionProvider/"}},[t._v("Client Virtual ConnectionProvider")])],1)]),t._v(" "),a("p",[t._v('oatpp virtual network stack enables you to run application tests down to low (protocol) level without occupying the "real"\nport of the host.')]),t._v(" "),a("h3",{attrs:{id:"api-test-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-test-client"}},[t._v("#")]),t._v(" API Test Client")]),t._v(" "),a("p",[t._v("Create test "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v(" in order to test application API."),a("br"),t._v("\nIn folder "),a("code",[t._v("test/app/")]),t._v(" create file "),a("code",[t._v("MyApiTestClient.hpp")]),t._v(" with api calls corresponding to application APIs:")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" MyApiTestClient_hpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" MyApiTestClient_hpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/client/ApiClient.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Begin Api Client code generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Test API client.\n * Use this client to call application APIs.\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyApiTestClient")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CLIENT_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyApiTestClient"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/hello"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getHello"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - add more client API calls here")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* End Api Client code generation */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MyApiTestClient_hpp")]),t._v("\n\n")])])]),a("h3",{attrs:{id:"create-test"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-test"}},[t._v("#")]),t._v(" Create Test")]),t._v(" "),a("p",[t._v("In folder "),a("code",[t._v("test/")]),t._v(" create file "),a("code",[t._v("MyControllerTest.hpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("ifndef")]),t._v(" MyControllerTest_hpp")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" MyControllerTest_hpp")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-test/UnitTest.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyControllerTest")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("UnitTest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("MyControllerTest")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("UnitTest")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST[MyControllerTest]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Test TAG for logs */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onRun")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("endif")]),t._v(" ")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MyControllerTest_hpp")]),t._v("\n")])])]),a("p",[t._v("In folder "),a("code",[t._v("test/")]),t._v(" create file "),a("code",[t._v("MyControllerTest.cpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyControllerTest.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"controller/MyController.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app/MyApiTestClient.hpp"')])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app/TestComponent.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/web/client/HttpRequestExecutor.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp-test/web/ClientServerTestRunner.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" MyControllerTest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onRun")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Register test components */")]),t._v("\n TestComponent component"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create client-server test runner */")]),t._v("\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientServerTestRunner runner"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Add MyController endpoints to the router of the test server */")]),t._v("\n runner"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addController")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyController"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Run test */")]),t._v("\n runner"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("runner"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get client connection provider for Api Client */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" clientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Get object mapper component */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create http request executor for Api Client */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRequestExecutor"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("clientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create Test API client */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyApiTestClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Call server API */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Call hello endpoint of MyController */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHello")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert that server responds with 200 */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getStatusCode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Read response body as MessageDto */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("readBodyToDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MessageDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Assert that received message is as expected */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("statusCode"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello World!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("minutes")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* test timeout */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* wait all server threads finished */")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("this_thread"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sleep_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("chrono"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("seconds")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("The test above tests that on API call "),a("code",[t._v("GET /hello")]),t._v(" server responds with expected message."),a("br"),t._v("\nIt uses "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-test/web/ClientServerTestRunner/"}},[t._v("ClientServerTestRunner")]),t._v(" to run test server.")],1),t._v(" "),a("h3",{attrs:{id:"run-tests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#run-tests"}},[t._v("#")]),t._v(" Run Tests")]),t._v(" "),a("p",[t._v("In folder "),a("code",[t._v("test/")]),t._v(" create file "),a("code",[t._v("Tests.cpp")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyControllerTest.hpp"')])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("")])]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("runTests")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_RUN_TEST")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyControllerTest"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// TODO - Add more tests here:")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OATPP_RUN_TEST(MyAnotherTest);")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("runTests")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Print how much objects were created during app running, and what have left-probably leaked */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Disable object counting for release builds using '-D OATPP_DISABLE_ENV_OBJECT_COUNTERS' flag for better performance */")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\nEnvironment:\\n"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"objectsCount = "')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectsCount")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\n"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("cout "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"objectsCreated = "')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectsCreated")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<<")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\n\\n"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_ASSERT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getObjectsCount")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Environment"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("destroy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("At the end of each test (and at the end of all tests) oatpp Environment is checked for leaking objects."),a("br"),t._v("\nTest will fail if objects leaks found (Counts only objects extending "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/"}},[t._v("Countable")]),t._v(").")],1),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Tests binary should NOT link oatpp built with "),a("code",[t._v("-DOATPP_DISABLE_ENV_OBJECT_COUNTERS")]),t._v(" flag.")])]),t._v(" "),a("h2",{attrs:{id:"complete-project-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#complete-project-code"}},[t._v("#")]),t._v(" Complete Project Code")]),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/315.2386c97a.js b/docs/.vuepress/dist/assets/js/315.2386c97a.js deleted file mode 100644 index 8753dae42..000000000 --- a/docs/.vuepress/dist/assets/js/315.2386c97a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[315],{687:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"apiclient-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-example"}},[t._v("#")]),t._v(" ApiClient Example "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-api-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Example project how-to use oatpp "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v(" and how it works")],1),t._v(" "),a("h2",{attrs:{id:"about-apiclient"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-apiclient"}},[t._v("#")]),t._v(" About ApiClient")]),t._v(" "),a("p",[t._v("Oatpp "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v(" is a mechanism which enables you to generate Web Api Clients in declarative manner.\nUnder the hood it uses provided "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/"}},[t._v("RequestExecutor")]),t._v(" to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes.\n"),a("em",[t._v("Roughly you may treat oatpp "),a("RouterLink",{attrs:{to:"/docs/components/api-client/"}},[t._v("ApiClient")]),t._v(" as Java Retrofit for C++.")],1)],1),t._v(" "),a("p",[t._v("In this example you can configure to use such RequestExecutors:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp-curl/RequestExecutor/"}},[t._v("oatpp::curl::RequestExecutor")]),t._v(" - RequestExecutor for oatpp ApiClient based on libcurl.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/HttpRequestExecutor/"}},[t._v("oatpp::web::client::HttpRequestExecutor")]),t._v(" - oatpp out-of-the-box provided "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/client/RequestExecutor/"}},[t._v("RequestExecutor")]),t._v(".")],1)]),t._v(" "),a("h2",{attrs:{id:"example-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-overview"}},[t._v("#")]),t._v(" Example overview")]),t._v(" "),a("p",[t._v("In this example you will find:")]),t._v(" "),a("ul",[a("li",[t._v("ApiClient built for http://httpbin.org/ web service.")]),t._v(" "),a("li",[t._v("Simple (Synchronous) API calls example.")]),t._v(" "),a("li",[t._v("Async API calls example processed with "),a("code",[t._v("oatpp::async::Executor")]),t._v(". See "),a("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("Oatpp Coroutines")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |- DemoApiClient.hpp // ApiClient built for http://httpbin.org/ web service\n| |- DemoApiModels.hpp // DTOs objects for DemoApiClient\n| |- SimpleExample.hpp // Simple (Synchronous) API calls example\n| |- AsyncExample.hpp // Async API calls example\n| |- App.cpp // main is here\n| \n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),a("p",[a("strong",[t._v("Requires")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Curl installed. You may refer to this sh script - how to install curl -\n"),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl/blob/master/utility/install-deps/install-curl.sh",target:"_blank",rel:"noopener noreferrer"}},[t._v("install-curl.sh"),a("OutboundLink")],1),t._v("."),a("br"),t._v("\nOr try something like "),a("code",[t._v("$ apk add curl-dev")])])]),t._v(" "),a("li",[a("p",[a("code",[t._v("oatpp")]),t._v(" and "),a("code",[t._v("oatpp-curl")]),t._v(" modules installed. You may run "),a("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n$ cmake "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" \n$ ./example-api-client-exe "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - run application.")]),t._v("\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ docker build -t example-api-client "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v("\n$ docker run -t example-api-client\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"apiclient-declaration-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apiclient-declaration-overview"}},[t._v("#")]),t._v(" ApiClient declaration overview")]),t._v(" "),a("p",[t._v("Use "),a("code",[t._v("API_CALL")]),t._v(" for simple (synchronous) calls."),a("br"),t._v("\nUse "),a("code",[t._v("API_CALL_ASYNC")]),t._v(" for non-blocking Async calls.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DemoApiClient")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiClient "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_BEGIN(ApiClient)")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CLIENT_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("DemoApiClient"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"get"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" doGet"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"post"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" doPost"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"get"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" doGetAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("API_CALL_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"post"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" doPostAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_STRING")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" OATPP_CODEGEN_END(ApiClient)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"example-calls-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-calls-overview"}},[t._v("#")]),t._v(" Example calls overview")]),t._v(" "),a("h4",{attrs:{id:"simpleexample-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#simpleexample-hpp"}},[t._v("#")]),t._v(" SimpleExample.hpp")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("doGet")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("TAG"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"[doGet] data='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" data "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("doPost")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Some data passed to POST"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("TAG"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"[doPost] data='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"asyncexample-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asyncexample-hpp"}},[t._v("#")]),t._v(" AsyncExample.hpp")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SendCoroutine")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Coroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SendCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("private")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DemoApiClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" m_client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SendCoroutine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DemoApiClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("m_client")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" m_client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("doPostAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("SendDtoCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onResponse"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToStringAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("SendDtoCoroutine"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onBody"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onBody")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_LOGD")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("TAG"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"[SendCoroutine. doPostAsync] data='%s'\"")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("c_str")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("finish")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"request-executor-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-executor-configuration"}},[t._v("#")]),t._v(" Request executor configuration")]),t._v(" "),a("p",[t._v("In "),a("code",[t._v("App.cpp")]),t._v(" method "),a("code",[t._v("run")]),t._v(".\nTry to substitute different "),a("code",[t._v("RequestExecutors")]),t._v(" by switching from Curl to oatpp built-in request executor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("run")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create ObjectMapper for serialization of DTOs */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" objectMapper "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create RequestExecutor which will execute ApiClient's requests */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//auto requestExecutor = createOatppExecutor(); // <-- Uncomment this")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" requestExecutor "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCurlExecutor")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// <-- Comment this")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* DemoApiClient uses DemoRequestExecutor and json::mapping::ObjectMapper */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ObjectMapper passed here is used for serialization of outgoing DTOs */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" client "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" DemoApiClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("requestExecutor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" objectMapper"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n SimpleExample"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("runExample")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n AsyncExample"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("runExample")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/316.8f6d10a1.js b/docs/.vuepress/dist/assets/js/316.8f6d10a1.js deleted file mode 100644 index a63a0214f..000000000 --- a/docs/.vuepress/dist/assets/js/316.8f6d10a1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[316],{686:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"async-api-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#async-api-example"}},[t._v("#")]),t._v(" Async API Example "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-async-api",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Example project how-to use oatpp asynchronous API.")]),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing controller where all endpoints are declared\n| |- dto/ // DTOs are declared here\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),a("p",[a("strong",[t._v("Requires")])]),t._v(" "),a("ul",[a("li",[a("code",[t._v("oatpp")]),t._v(" module installed. You may run "),a("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./example-async-api-exe # - run application.\n\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("$ docker build -t example-async-api .\n$ docker run -p 8000:8000 -t example-async-api\n")])])]),a("h2",{attrs:{id:"read-more"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#read-more"}},[t._v("#")]),t._v(" Read More")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/docs/simple-vs-async/"}},[t._v("Simple API vs Async API")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/docs/async/"}},[t._v("Async")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/docs/oatpp-coroutines/"}},[t._v("Oatpp-Coroutines")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-async-specifics"}},[t._v("ENDPOINT_ASYNC")])],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/317.b11b448f.js b/docs/.vuepress/dist/assets/js/317.b11b448f.js deleted file mode 100644 index db4d77a92..000000000 --- a/docs/.vuepress/dist/assets/js/317.b11b448f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[317],{689:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"consul-integration-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consul-integration-example"}},[t._v("#")]),t._v(" Consul Integration Example "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Example project how-to use "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp-consul/"}},[t._v("oatpp-consul")]),t._v(" module.")],1),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("p",[t._v("This project is using "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp/"}},[t._v("oatpp")]),t._v(" and "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp-consul/"}},[t._v("oatpp-consul")]),t._v(" modules.")],1),t._v(" "),a("p",[t._v("Currently this is trivial example.- Read/Write from/to Consul KV via endpoints declared in Controller.\nMore complex example later.")]),t._v(" "),a("p",[t._v("In this example Consul is expected to run at port 8500.")]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing controller where all endpoints are declared\n| |- dto/ // DTOs are declared here\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),a("p",[a("strong",[t._v("Requires")])]),t._v(" "),a("ul",[a("li",[a("code",[t._v("oatpp")]),t._v(" and "),a("code",[t._v("oatpp-consul")]),t._v(" modules installed. You may run "),a("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n$ cmake "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" \n$ ./example-consul-exe "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - run application.")]),t._v("\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ docker build -t example-consul "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v("\n$ docker run -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(":8000 -t example-consul\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/318.a2a4531f.js b/docs/.vuepress/dist/assets/js/318.a2a4531f.js deleted file mode 100644 index dfe4e6f0a..000000000 --- a/docs/.vuepress/dist/assets/js/318.a2a4531f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[318],{690:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"example-crud"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-crud"}},[t._v("#")]),t._v(" Example-CRUD "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v('A complete example of a "CRUD" service (UserService) built with Oat++.')]),t._v(" "),a("p",[t._v("In this example:")]),t._v(" "),a("ul",[a("li",[t._v("How to create CRUD endpoint.")]),t._v(" "),a("li",[t._v("How to use "),a("RouterLink",{attrs:{to:"/docs/components/orm/"}},[t._v("oatpp ORM")]),t._v(" - SQLite example.")],1),t._v(" "),a("li",[t._v("How to document API with Swagger-UI and OpenApi 3.0.0.")])]),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("p",[t._v("This project is using the following oatpp modules:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-swagger"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-sqlite"),a("OutboundLink")],1)])]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- sql/ // SQL migration scripts for SQLite database\n|- src/\n| |\n| |- controller/ // Folder containing REST Controllers (UserController)\n| |- db/ // Folder containing the database client\n| |- dto/ // DTOs are declared here\n| |- service/ // Service business logic classes (UserService)\n| |- AppComponent.hpp // Service config\n| |- DatabaseComponent.hpp // Database config\n| |- SwaggerComponent.hpp // Swagger-UI config\n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),a("p",[a("strong",[t._v("Requires")])]),t._v(" "),a("ul",[a("li",[a("code",[t._v("oatpp")]),t._v(", "),a("code",[t._v("oatpp-swagger")]),t._v(" and "),a("code",[t._v("oatpp-sqlite")]),t._v(" modules installed. You may run "),a("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./crud-exe # - run application.\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("$ docker build -t example-crud .\n$ docker run -p 8000:8000 -t example-crud\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"endpoints"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoints"}},[t._v("#")]),t._v(" Endpoints")]),t._v(" "),a("h4",{attrs:{id:"html"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#html"}},[t._v("#")]),t._v(" HTML")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("HTTP Method")]),t._v(" "),a("th",[t._v("URL")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("GET")])]),t._v(" "),a("td",[t._v("http://localhost:8000/")]),t._v(" "),a("td",[t._v("Root page")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("GET")])]),t._v(" "),a("td",[t._v("http://localhost:8000/swagger/ui")]),t._v(" "),a("td",[t._v("Swagger UI page")])])])]),t._v(" "),a("h4",{attrs:{id:"user-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#user-service"}},[t._v("#")]),t._v(" User Service")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("HTTP Method")]),t._v(" "),a("th",[t._v("URL")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("POST")])]),t._v(" "),a("td",[t._v("http://localhost:8000/users")]),t._v(" "),a("td",[t._v("Create new User")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("PUT")])]),t._v(" "),a("td",[t._v("http://localhost:8000/users/{userId}")]),t._v(" "),a("td",[t._v("Update User by ID")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("GET")])]),t._v(" "),a("td",[t._v("http://localhost:8000/users/{userId}")]),t._v(" "),a("td",[t._v("Get User by ID")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("DELETE")])]),t._v(" "),a("td",[t._v("http://localhost:8000/users/{userId}")]),t._v(" "),a("td",[t._v("Delete User by ID")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("GET")])]),t._v(" "),a("td",[t._v("http://localhost:8000/users/offset/{offset}/limit/{limit}")]),t._v(" "),a("td",[t._v("Get All Users with Paging")])])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/319.f9e50f61.js b/docs/.vuepress/dist/assets/js/319.f9e50f61.js deleted file mode 100644 index 80edd8757..000000000 --- a/docs/.vuepress/dist/assets/js/319.f9e50f61.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[319],{691:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"example-hls-media-stream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-hls-media-stream"}},[e._v("#")]),e._v(" Example-HLS-Media-Stream "),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-hls-media-stream",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Example project how-to build HLS-streaming server using oat++ Async-API.\n"),a("em",[e._v("Live stream tested with Safari-Browser and VLC-player.")])]),e._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),a("p",[e._v("Server generates infinite .m3u8 playlist from the pre-generated\n"),a("code",[e._v("playlist_live.m3u8")]),e._v(" file in the "),a("code",[e._v("video")]),e._v(" folder."),a("br"),e._v("\nFile "),a("code",[e._v("video/playlist_live.m3u8")]),e._v(" together with video chunks is generated using "),a("code",[e._v("ffmpeg")]),e._v(".")]),e._v(" "),a("p",[e._v("Server is built using oat++ Async-Api and has following endpoints:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v('("GET", "/", Root)')]),e._v(" - Starting html-page aka index.html")]),e._v(" "),a("li",[a("code",[e._v('("GET", "video/*", Video)')]),e._v(" - Embedded video html-page")]),e._v(" "),a("li",[a("code",[e._v('("GET", "media/live", Live)')]),e._v(" - Infinite HLS playlist for live-stream describing video chunks")]),e._v(" "),a("li",[a("code",[e._v('("GET", "media/*", Static)')]),e._v(" - Endpoint serving media files with range requests support")])]),e._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[e._v("#")]),e._v(" Project layout")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n|- CMakeLists.txt // projects CMakeLists.txt\n|- src/ // source folder\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n|\n|- video/ // media files and playlists here\n |- generate_pls.sh // example how to use ```ffmpeg``` to generate initial playlist and video chunks\n |- playlist_live.m3u8 // playlist used to generate infinite playlist for http-live-streaming\n\n")])])]),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("- src/\n |\n |- controller/ // Folder containing UserController where all endpoints are declared\n |- hls/ // Playlist generator is here\n |- Utils.hpp // Utils\n |- AppComponent.hpp // Service config\n |- App.cpp // main() is here\n \n")])])]),a("hr"),e._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[e._v("#")]),e._v(" Build and Run")]),e._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[e._v("#")]),e._v(" Using CMake")]),e._v(" "),a("p",[a("strong",[e._v("Requires")])]),e._v(" "),a("ul",[a("li",[a("code",[e._v("oatpp")]),e._v(" module installed. You may run "),a("code",[e._v("utility/install-oatpp-modules.sh")]),e._v("\nscript to install required oatpp modules.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./hls-example-exe # - run application.\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[e._v("#")]),e._v(" In Docker")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ docker build -t example-hls .\n$ docker run -p 8000:8000 -t example-hls\n")])])]),a("hr"),e._v(" "),a("h3",{attrs:{id:"screenshots"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#screenshots"}},[e._v("#")]),e._v(" Screenshots")]),e._v(" "),a("div",[a("img",{attrs:{src:"https://raw.githubusercontent.com/oatpp/example-hls-media-stream/master/screenshots/screen-2.png",width:"33%"}}),e._v(" "),a("img",{attrs:{src:"https://raw.githubusercontent.com/oatpp/example-hls-media-stream/master/screenshots/screen-3.png",width:"33%"}}),e._v(" "),a("img",{attrs:{src:"https://raw.githubusercontent.com/oatpp/example-hls-media-stream/master/screenshots/screen-4.png",width:"33%"}})]),e._v(" "),a("hr"),e._v(" "),a("h2",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("h3",{attrs:{id:"urls"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#urls"}},[e._v("#")]),e._v(" Urls")]),e._v(" "),a("ul",[a("li",[e._v("localhost:8000 - Index page")]),e._v(" "),a("li",[e._v("localhost:8000/media/live - Live stream made from {repo}/video/video1.mp4 and {repo}/video/video2.mp4 played in the loop")])]),e._v(" "),a("h3",{attrs:{id:"files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#files"}},[e._v("#")]),e._v(" Files")]),e._v(" "),a("ul",[a("li",[e._v("{repo}/video/playlist_live.m3u8 - playlist used for live HLS streaming")]),e._v(" "),a("li",[e._v("{repo}/video/generate_pls.sh - example script used to generate sub-playlists and video fragmets using ffmpeg tool. #EXTINF sections of sub-playlists then have to be manualy moved to playlist_live.m3u8.")])]),e._v(" "),a("h3",{attrs:{id:"note"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#note"}},[e._v("#")]),e._v(" Note")]),e._v(" "),a("p",[e._v("If app can't find playlist of video files then specify full-file-paths for {repo}/video/playlist_live.m3u8 file and {repo}/video folder in AppComponent.hpp")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/32.391d14e5.js b/docs/.vuepress/dist/assets/js/32.391d14e5.js deleted file mode 100644 index 3aa005fee..000000000 --- a/docs/.vuepress/dist/assets/js/32.391d14e5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{404:function(t,e,r){"use strict";r.r(e);var a=r(42),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/blob/master/src/oatpp-mbedtls/client/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/issues/new?title=API%20question&body=In%20file:%20oatpp-mbedtls/client/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-mbedtls")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-mbedtls/client/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("MbedTLS client connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mbedtls "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Implements oatpp::network::ConnectionProvider::close. Here does nothing.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("Get connection in asynchronous manner.")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Implements oatpp::network::ConnectionProvider::close. Here does nothing.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("Get connection in asynchronous manner. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/320.3387cf4c.js b/docs/.vuepress/dist/assets/js/320.3387cf4c.js deleted file mode 100644 index 3d5269557..000000000 --- a/docs/.vuepress/dist/assets/js/320.3387cf4c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[320],{692:function(t,a,s){"use strict";s.r(a);var e=s(42),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"example-iot-hue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-iot-hue"}},[t._v("#")]),t._v(" Example-IoT-Hue "),s("seo")],1),t._v(" "),s("p",[t._v("Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo.")]),t._v(" "),s("p",[t._v('It demonstrates how Oat++ can be used to develop an Amazon Alexa or Google Home compatible REST-API which emulates Philips Hue bulbs.\nOat++ answers to search requests of you favorite SmartHome hub and you can register your fake bulbs to it.\nAfter the registration of your fake bulbs to your Hub/Alexa/Google Home, you can control your Oat++ application\nwith 🗣️"Alexa, turn on "!')]),t._v(" "),s("p",[t._v("For this discoverability, the "),s("code",[t._v("oatpp-ssdp")]),t._v(" module is used to receive and answer SSDP searches.")]),t._v(" "),s("p",[t._v("This REST-API was implemented with the help of the "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Hue API unofficial reference documentation by burgestrand.se"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),s("p",[t._v("This project is using "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),s("OutboundLink")],1),t._v(", "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-swagger"),s("OutboundLink")],1),t._v(" and "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-ssdp"),s("OutboundLink")],1),t._v(" modules.")]),t._v(" "),s("h3",{attrs:{id:"project-layout"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing HueDeviceController and SsdpController where all endpoints are declared\n| |- db/ // Folder with database mock\n| |- dto/ // DTOs are declared here\n| |- SwaggerComponent.hpp // Swagger-UI config\n| |- DeviceDescriptorComponent.hpp // Component describing your "Hue Hub" (YOU HAVE TO CONFIGURE THIS FILE TO FIT YOUR ENVIRONMENT)\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n|\n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n')])])]),s("hr"),t._v(" "),s("h3",{attrs:{id:"build-and-run"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),s("p",[t._v("Before you run this example you have to edit "),s("code",[t._v("src/DeviceDescriptorComponent.hpp")]),t._v(" to match your IP address.\nSince this is only an example and to keep it simple this is not automated or parameterised!\nYou have to come up with your own implementation that fits your environment.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DeviceDescriptor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" deviceDescriptor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deviceDescriptor"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" desc "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DeviceDescriptor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ToDo: Add your machines Address and Port here! You have to come up with your own way to automate this...")]),t._v("\ndesc"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("ipPort "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"192.168.100.100:80"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// your real IP and Port your HTTP-Controller is running on")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// assignable")]),t._v("\ndesc"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("mac "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"be5t0a70cafe"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// can be a fake one")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// fixed")]),t._v("\ndesc"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("sn "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1000000471337"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\ndesc"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("uuid "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2f402f80-da50-11e1-9b23-"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" desc"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("mac"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" desc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"using-cmake"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),s("p",[s("strong",[t._v("Requires")])]),t._v(" "),s("ul",[s("li",[s("code",[t._v("oatpp")]),t._v(", "),s("code",[t._v("oatpp-ssdp")]),t._v(" and "),s("code",[t._v("oatpp-swagger")]),t._v(" modules installed. You may run "),s("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./example-iot-hue-ssdp-exe # - run application.\n")])])]),s("h4",{attrs:{id:"in-docker"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("$ docker build -t example-iot-hue-ssdp .\n$ docker run -p 8000:8000 -t example-iot-hue-ssdp\n")])])]),s("h4",{attrs:{id:"usage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[t._v("#")]),t._v(" Usage")]),t._v(" "),s("p",[t._v("Configure the example ("),s("code",[t._v("src/DeviceDescriptorComponent.hpp")]),t._v(") and run it. Now tell your Alexa or Echo to search for new devices.\nThey should come up with two new Devices "),s("code",[t._v("Oat")]),t._v(" and "),s("code",[t._v("Grain")]),t._v('.\nAfter you configured them in your Smart-Home App just say something like "Alexa, turn on Oat" and you should see the correspoding '),s("code",[t._v("PUT")]),t._v(" request in the console.")]),t._v(" "),s("hr"),t._v(" "),s("h3",{attrs:{id:"endpoints-declaration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endpoints-declaration"}},[t._v("#")]),t._v(" Endpoints declaration")]),t._v(" "),s("p",[t._v("All implemented endpoints are compatible to a Philips Hue bridge (V1 and V3).\n"),s("strong",[t._v("Their path and structure are fixed!")])]),t._v(" "),s("h4",{attrs:{id:"ssdp-search-responder"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdp-search-responder"}},[t._v("#")]),t._v(" SSDP: Search Responder")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"M-SEARCH"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"*"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" star"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("This Endpoint accepts and answers to "),s("code",[t._v("M-SEARCH")]),t._v(" SSDP packets like a Philips Hue hub would do.")]),t._v(" "),s("h4",{attrs:{id:"http-description-xml"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-description-xml"}},[t._v("#")]),t._v(" HTTP: description.xml")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/description.xml"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("In the discovery answer, a reference to this endpoint is send back.\nThis endpoints emulates a static "),s("code",[t._v("desciption.xml")]),t._v(" which includes all necessary information required to act as an Philips Hue hub.")]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/api/discovery/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Bridge discovery (burgestrand.se)"),s("OutboundLink")],1)]),t._v(" "),s("h4",{attrs:{id:"http-one-shot-user-registration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-one-shot-user-registration"}},[t._v("#")]),t._v(" HTTP: One-Shot 'user' registration")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"POST"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/api"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" appRegister"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UserRegisterDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" userRegister"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("This endpoint just emulates a valid user-registration on a Philips Hue hub.")]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/api/auth/registration/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Application registration (burgestrand.se)"),s("OutboundLink")],1)]),t._v(" "),s("h4",{attrs:{id:"http-get-all-lights"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-get-all-lights"}},[t._v("#")]),t._v(" HTTP: Get all 'lights'")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/api/{username}/lights"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getLights"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("This endpoint returns a "),s("strong",[t._v("object")]),t._v(" of all devices in a Philips Hue compatible fashion.\nHowever, formally this endpoint should just return the names. But returning the full list is fine too.")]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/api/lights/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lights (burgestrand.se)"),s("OutboundLink")],1)]),t._v(" "),s("h4",{attrs:{id:"http-get-state-of-a-specific-light"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-get-state-of-a-specific-light"}},[t._v("#")]),t._v(" HTTP: Get state of a specific light")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/api/{username}/lights/{hueId}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" getLight"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" hueId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("This endpoint returns the state of the light given in "),s("code",[t._v("{hueId}")]),t._v(" in a Philips Hue compatible fashion.")]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/api/lights/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lights (burgestrand.se)"),s("OutboundLink")],1)]),t._v(" "),s("h4",{attrs:{id:"http-set-state-of-a-specific-light"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-set-state-of-a-specific-light"}},[t._v("#")]),t._v(" HTTP: Set state of a specific light")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PUT"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/api/{username}/lights/{hueId}/state"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" updateState"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PATH")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int32"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" hueId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("BODY_DTO")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("HueDeviceStateDto"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" state"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v('This endpoint accepts a Philips Hue compatible state-object and sets the state in the internal database accordingly.\nIt is called e.g. by Alexa if you tell it 🗣️"Alexa, turn on ".\nFinally it returns a "success" or "error" object.')]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"http://www.burgestrand.se/hue-api/api/lights/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lights (burgestrand.se)"),s("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/321.cc3ab086.js b/docs/.vuepress/dist/assets/js/321.cc3ab086.js deleted file mode 100644 index 5c7876445..000000000 --- a/docs/.vuepress/dist/assets/js/321.cc3ab086.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[321],{693:function(t,s,a){"use strict";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"tls-libressl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tls-libressl-example"}},[t._v("#")]),t._v(" TLS-LibreSSL Example "),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Repository"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Example project how-to use "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp-libressl/"}},[t._v("oatpp-libressl")]),t._v(" module.")],1),t._v(" "),a("ul",[a("li",[t._v("Serve via HTTPS")]),t._v(" "),a("li",[t._v("Make client calls via HTTPS.")]),t._v(" "),a("li",[t._v("Using oatpp Async API.")])]),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("p",[t._v("This project is using "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-libressl"),a("OutboundLink")],1),t._v(" modules.")]),t._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[t._v("#")]),t._v(" Project layout")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing Controller where all endpoints are declared\n| |- client/ // HTTP client is here. Used in "proxy" endpoint /api/get\n| |- dto/ // DTOs are declared here\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n| \n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n|- cert/ // folder with test certificates \n')])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[t._v("#")]),t._v(" Build and Run")]),t._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[t._v("#")]),t._v(" Using CMake")]),t._v(" "),a("p",[a("strong",[t._v("Requires")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("LibreSSL installed. You may refer to this sh script - how to install libressl -\n"),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl/blob/master/utility/install-deps/install-libressl.sh",target:"_blank",rel:"noopener noreferrer"}},[t._v("install-libressl.sh"),a("OutboundLink")],1),t._v("."),a("br"),t._v("\nOr try something like "),a("code",[t._v("$ apk add libressl-dev")])])]),t._v(" "),a("li",[a("p",[a("code",[t._v("oatpp")]),t._v(" and "),a("code",[t._v("oatpp-libressl")]),t._v(" modules installed. You may run "),a("code",[t._v("utility/install-oatpp-modules.sh")]),t._v("\nscript to install required oatpp modules.")])])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" build "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" build\n$ cmake "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\n$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" \n$ ././example-libressl-exe "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - run application.")]),t._v("\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[t._v("#")]),t._v(" In Docker")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ docker build -t example-libressl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v("\n$ docker run -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8443")]),t._v(":8443 -t example-libressl\n")])])]),a("hr"),t._v(" "),a("h3",{attrs:{id:"configure-appcomponent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-appcomponent"}},[t._v("#")]),t._v(" Configure AppComponent")]),t._v(" "),a("p",[t._v("Configure server secure connection provider")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/**\n * Create ConnectionProvider component which listens on the port\n */")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* non_blocking connections should be used with AsyncHttpConnectionHandler for AsyncIO */")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cert/test_key.pem"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cert/test_cert.crt"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8443")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* true for non_blocking */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),a("p",[t._v("Configure client secure connection provider")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_CREATE_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" sslClientConnectionProvider"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tls_config_insecure_noverifycert")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTLSConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tls_config_insecure_noverifyname")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTLSConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("libressl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("client"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionProvider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"endpoints"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endpoints"}},[t._v("#")]),t._v(" Endpoints")]),t._v(" "),a("hr"),t._v(" "),a("p",[t._v('"Hello Async" root endpoint with json response')]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("auto")]),t._v(" dto "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" HelloDto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("message "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello Async!"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("server "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("SERVER"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dto"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("userAgent "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" request"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHeader")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("USER_AGENT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDtoResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" dto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("result:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -X GET "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://localhost:8443/"')]),t._v(" --insecure\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user-agent"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"curl\\/7.54.0"')]),t._v(", "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"message"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hello Async!"')]),t._v(", "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"server"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp\\/0.19.1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("hr"),t._v(" "),a("p",[t._v("Async proxy endpoint to "),a("code",[t._v("https://httpbin.org/get")])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/api/get"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" TestApiGet"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ENDPOINT_ASYNC_INIT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("TestApiGet"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("act")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),t._v("myApiClient"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apiGetAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("TestApiGet"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("onResponse"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("IncomingResponse"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("readBodyToStringAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("callbackTo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("TestApiGet"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("returnResult"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n Action "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("returnResult")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_return")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createResponse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Status"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CODE_200"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" body"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("result:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -X GET "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://localhost:8443/api/get"')]),t._v(" --insecure\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"args"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"headers"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Connection"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"close"')]),t._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Host"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"httpbin.org"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"origin"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"176.37.47.230"')]),t._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://httpbin.org/get"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/322.3dbb666f.js b/docs/.vuepress/dist/assets/js/322.3dbb666f.js deleted file mode 100644 index c943eab0c..000000000 --- a/docs/.vuepress/dist/assets/js/322.3dbb666f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[322],{694:function(e,a,t){"use strict";t.r(a);var s=t(42),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"microservices-example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#microservices-example"}},[e._v("#")]),e._v(" Microservices Example "),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/example-microservices",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("This is an example project on how to build microservices with Oat++ Web Framework, and how to utilize the "),t("RouterLink",{attrs:{to:"/docs/monolithization/"}},[e._v("Monolithization")]),e._v(" feature.")],1),e._v(" "),t("h2",{attrs:{id:"note"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#note"}},[e._v("#")]),e._v(" Note")]),e._v(" "),t("p",[e._v("For more information about this example, see the "),t("RouterLink",{attrs:{to:"/docs/monolithization/"}},[e._v("Monolithization")]),e._v(" article.")],1),e._v(" "),t("h2",{attrs:{id:"inside-this-repository"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inside-this-repository"}},[e._v("#")]),e._v(" Inside This Repository")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("|- user-service/ // User-Service source code\n|- book-service/ // Book-Service source code\n|- facade/ // Facade source code\n|- monolith/all-services/ // Monolithic config to build all services as a Monolith\n|- build_all.sh // Utility script. Build all services\n|- run_all_microservices.sh // Utility script. Run all services as separate applications\n")])])]),t("h2",{attrs:{id:"build-and-run"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[e._v("#")]),e._v(" Build And Run")]),e._v(" "),t("h3",{attrs:{id:"pre-requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pre-requirements"}},[e._v("#")]),e._v(" Pre Requirements")]),e._v(" "),t("ul",[t("li",[e._v("Install the "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Install the "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-swagger"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"build-all"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#build-all"}},[e._v("#")]),e._v(" Build all")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("$ ./build_all.sh \n")])])]),t("h3",{attrs:{id:"run-as-microservices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#run-as-microservices"}},[e._v("#")]),e._v(" Run as microservices")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("$ ./run_all_microservices.sh \n")])])]),t("h3",{attrs:{id:"run-as-monolith"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#run-as-monolith"}},[e._v("#")]),e._v(" Run as monolith")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("$ ./monolith/all-services/build/all-services-exe\n")])])]),t("h2",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("img",{attrs:{src:"https://raw.githubusercontent.com/oatpp/example-microservices/master/diagram.svg?sanitize=true"}}),e._v(" "),t("p",[e._v("Facade takes book info from book-service, user info from user-service, merges data, and returns to the client.")]),e._v(" "),t("h3",{attrs:{id:"service-ports"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#service-ports"}},[e._v("#")]),e._v(" Service ports")]),e._v(" "),t("ul",[t("li",[e._v("Facade - 8000")]),e._v(" "),t("li",[e._v("User - 8001")]),e._v(" "),t("li",[e._v("Book - 8002")])]),e._v(" "),t("h3",{attrs:{id:"example-curl"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-curl"}},[e._v("#")]),e._v(" Example curl")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('$ curl http://localhost:8000/books/4\n{"id": 4, "title": "1984", "author": {"id": 4, "name": "George Orwell"}}\n')])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/323.a7aeac6c.js b/docs/.vuepress/dist/assets/js/323.a7aeac6c.js deleted file mode 100644 index 0babbe00c..000000000 --- a/docs/.vuepress/dist/assets/js/323.a7aeac6c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[323],{695:function(e,t,a){"use strict";a.r(t);var r=a(42),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"mongodb-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mongodb-example"}},[e._v("#")]),e._v(" MongoDB Example "),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Example project how to work with MongoDB using "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-mongo"),a("OutboundLink")],1),e._v(" mondule."),a("br"),e._v("\nProject is a web-service with basic CRUD and Swagger-UI."),a("br"),e._v(" "),a("em",[e._v("Dockerfile and docker-compose.yaml files included.")])]),e._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),a("h3",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[e._v("#")]),e._v(" Dependencies")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-swagger"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-mongo"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"http://mongocxx.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("mongocxx"),a("OutboundLink")],1),e._v(" - Temporary dependency. Until the oatpp-mongo driver will be ready-to-use*")])]),e._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[e._v("#")]),e._v(" Project layout")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing Controller where all endpoints are declared\n| |- db/ // Database class is here \n| |- dto/ // DTOs are declared here\n| |- App.cpp // main() is here\n| |- AppComponent.hpp // Service configuration is loaded here\n| |- SwaggerComponent.hpp // Configuration for swagger-ui\n| \n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n|- Dockerfile // Dockerfile\n|- docker-compose.yaml // Docker-compose with this service and postgresql\n")])])]),a("h2",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[e._v("#")]),e._v(" Build and Run")]),e._v(" "),a("h3",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[e._v("#")]),e._v(" Using CMake")]),e._v(" "),a("p",[a("strong",[e._v("Requires")])]),e._v(" "),a("ul",[a("li",[a("p",[e._v("mongocxx installed. To install mongocxx:")]),e._v(" "),a("ul",[a("li",[e._v("On Mac "),a("code",[e._v("$ brew install mongo-cxx-driver")])]),e._v(" "),a("li",[e._v("On Linux - See "),a("a",{attrs:{href:"#installing-mongocxx-on-linux"}},[e._v("installing mongocxx on Linux")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("oatpp")]),e._v(", "),a("code",[e._v("oatpp-swagger")]),e._v(", "),a("code",[e._v("oatpp-mongo")]),e._v(" modules installed. You may run "),a("code",[e._v("utility/install-oatpp-modules.sh")]),e._v("\nscript to install required oatpp modules.")])])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./example-mongodb # - run application.\n")])])]),a("h3",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[e._v("#")]),e._v(" In Docker")]),e._v(" "),a("h4",{attrs:{id:"dockerfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dockerfile"}},[e._v("#")]),e._v(" Dockerfile")]),e._v(" "),a("p",[e._v("To run the web-service only:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ docker build -t example-mongodb .\n$ docker run -p 8000:8000 -e DEMO_MONGO_CONN_STR='mongodb://localhost/UserDB' -t example-mongodb\n")])])]),a("h4",{attrs:{id:"docker-compose"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#docker-compose"}},[e._v("#")]),e._v(" docker-compose")]),e._v(" "),a("p",[e._v("To run both web-service and mongodb:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ docker-compose up\n")])])]),a("h3",{attrs:{id:"after-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#after-run"}},[e._v("#")]),e._v(" After run")]),e._v(" "),a("p",[e._v("Go to "),a("a",{attrs:{href:"http://localhost:8000/swagger/ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://localhost:8000/swagger/ui"),a("OutboundLink")],1),e._v(" to try endpoints.")]),e._v(" "),a("h2",{attrs:{id:"installing-mongocxx-on-linux"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-mongocxx-on-linux"}},[e._v("#")]),e._v(" Installing mongocxx on Linux")]),e._v(" "),a("p",[e._v("Installing mongocxx on Linux is an unclear and painful process.\nSee "),a("a",{attrs:{href:"https://github.com/oatpp/dockerfiles/blob/master/ci/ubuntu-cmake-mongocxx/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("ubuntu-cmake-mongocxx/Dockerfile"),a("OutboundLink")],1),e._v("\nfor instructions that worked for us.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/324.0f180d67.js b/docs/.vuepress/dist/assets/js/324.0f180d67.js deleted file mode 100644 index 3a4843e57..000000000 --- a/docs/.vuepress/dist/assets/js/324.0f180d67.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[324],{696:function(e,t,r){"use strict";r.r(t);var a=r(42),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"postgresql-example"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#postgresql-example"}},[e._v("#")]),e._v(" PostgreSQL Example "),r("seo")],1),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/example-postgresql",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v('A complete example of a "CRUD" service (UserService) built with Oat++ and using oatpp ORM with PostgreSQL.')]),e._v(" "),r("p",[e._v("In this example:")]),e._v(" "),r("ul",[r("li",[e._v("How to create CRUD endpoints.")]),e._v(" "),r("li",[e._v("How to use "),r("RouterLink",{attrs:{to:"/docs/components/orm/"}},[e._v("oatpp ORM")]),e._v(" - PostgreSQL example.")],1),e._v(" "),r("li",[e._v("How to document API with Swagger-UI and OpenApi 3.0.0.")])]),e._v(" "),r("h2",{attrs:{id:"overview"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),r("p",[e._v("This project is using the following oatpp modules:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-swagger"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-postgresql"),r("OutboundLink")],1)])]),e._v(" "),r("h3",{attrs:{id:"project-layout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[e._v("#")]),e._v(" Project layout")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing Controller where all endpoints are declared\n| |- db/ // Folder containing the database client\n| |- dto/ // DTOs are declared here\n| |- service/ // Service business logic classes (UserService)\n| |- ServiceComponent.hpp // Service configuration (port, ObjectMapper, Database)\n| |- SwaggerComponent.hpp // Configuration for swagger-ui\n| |- AppComponent.hpp // Service configuration is loaded here\n| |- DatabaseComponent.hpp // Database config\n| |- App.cpp // main() is here\n| \n|- test/ // test folder\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n|- resources/config.json // configuration file with configuration profiles\n|- Dockerfile // Dockerfile\n|- docker-compose.yaml // Docker-compose with this service and postgresql\n")])])]),r("hr"),e._v(" "),r("h2",{attrs:{id:"build-and-run"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[e._v("#")]),e._v(" Build and Run")]),e._v(" "),r("h3",{attrs:{id:"using-cmake"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[e._v("#")]),e._v(" Using CMake")]),e._v(" "),r("p",[r("strong",[e._v("Requires")])]),e._v(" "),r("ul",[r("li",[r("p",[e._v("This example also requires the PostgreSQL package installed.")]),e._v(" "),r("ul",[r("li",[e._v("On Alpine "),r("code",[e._v("$ apk add postgresql-dev")])]),e._v(" "),r("li",[e._v("On Ubuntu "),r("code",[e._v("$ apt-get install postgresql-server-dev-all")])])]),e._v(" "),r("p",[e._v("For more info see "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-postgresql/README.md"),r("OutboundLink")],1)])]),e._v(" "),r("li",[r("p",[r("code",[e._v("oatpp")]),e._v(", "),r("code",[e._v("oatpp-swagger")]),e._v(" and "),r("code",[e._v("oatpp-postgresql")]),e._v(" modules installed. You may run "),r("code",[e._v("utility/install-oatpp-modules.sh")]),e._v("\nscript to install required oatpp modules.")])])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./example-postgresql-exe # - run application.\n")])])]),r("p",[r("em",[e._v("PostgreSQL is expected running as for "),r("code",[e._v("dev")]),e._v(" config profile")])]),e._v(" "),r("h3",{attrs:{id:"in-docker"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[e._v("#")]),e._v(" In Docker")]),e._v(" "),r("h4",{attrs:{id:"dockerfile"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dockerfile"}},[e._v("#")]),e._v(" Dockerfile")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("$ docker build -t example-postgresql .\n$ docker run -p 8000:8000 -e CONFIG_PROFILE='dev' -t example-postgresql\n")])])]),r("h4",{attrs:{id:"docker-compose"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#docker-compose"}},[e._v("#")]),e._v(" docker-compose")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("$ docker-compose up\n")])])]),r("p",[r("em",[e._v("docker-compose will run service with "),r("code",[e._v("local-docker")]),e._v(" config profile")])]),e._v(" "),r("h3",{attrs:{id:"after-run"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#after-run"}},[e._v("#")]),e._v(" After run")]),e._v(" "),r("p",[e._v("Go to "),r("a",{attrs:{href:"http://localhost:8000/swagger/ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://localhost:8000/swagger/ui"),r("OutboundLink")],1),e._v(" to try endpoints.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/325.2eefe7c8.js b/docs/.vuepress/dist/assets/js/325.2eefe7c8.js deleted file mode 100644 index 96077f4dc..000000000 --- a/docs/.vuepress/dist/assets/js/325.2eefe7c8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[325],{697:function(e,t,r){"use strict";r.r(t);var o=r(42),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"example-websocket"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#example-websocket"}},[e._v("#")]),e._v(" example-websocket "),r("seo")],1),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("Collection of oatpp WebSocket examples.")]),e._v(" "),r("p",[e._v("In the box:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/async-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("async-server"),r("OutboundLink")],1),e._v(" - Asynchronous WebSocket server example.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/async-server-rooms",target:"_blank",rel:"noopener noreferrer"}},[e._v("async-server-rooms"),r("OutboundLink")],1),e._v(" - Asynchronous Room-Based chat server.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/server",target:"_blank",rel:"noopener noreferrer"}},[e._v("server"),r("OutboundLink")],1),e._v(" - Multithreaded WebSocket server example.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/client",target:"_blank",rel:"noopener noreferrer"}},[e._v("client"),r("OutboundLink")],1),e._v(" - Simple WebSocket client example.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/client-binance.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("client-binance.com"),r("OutboundLink")],1),e._v(" - Example client for reading crypto trading event stream from binance.com.")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/oatpp/example-websocket/tree/master/client-mbedtls",target:"_blank",rel:"noopener noreferrer"}},[e._v("client-mbedtls"),r("OutboundLink")],1),e._v(" - Secure WebSocket client example. TLS backend - MbedTLS.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/326.c8bb8cc8.js b/docs/.vuepress/dist/assets/js/326.c8bb8cc8.js deleted file mode 100644 index f07e61b2f..000000000 --- a/docs/.vuepress/dist/assets/js/326.c8bb8cc8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[326],{698:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"example-yuv-websocket-stream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-yuv-websocket-stream"}},[e._v("#")]),e._v(" Example-YUV-Websocket-Stream "),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/example-yuv-websocket-stream",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Repository"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets.\nThe raw YUV image stream is send via a websocket connection. In the example Webpage, this YUV stream is converted to an HTML5 Canvas using JavaScript.\nIf you experience lag in the video its either your PC not being fast enough for the JavaScript conversion or the V4L2 stack.\nThe example webpage also runs fine on newer Smartphones!")]),e._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),a("p",[e._v("This project is using "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp"),a("OutboundLink")],1),e._v(", "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-websocket"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[e._v("oatpp-swagger"),a("OutboundLink")],1),e._v(" modules.")]),e._v(" "),a("h3",{attrs:{id:"project-layout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-layout"}},[e._v("#")]),e._v(" Project layout")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('|- CMakeLists.txt // projects CMakeLists.txt\n|- src/\n| |\n| |- controller/ // Folder containing CamAPIController where all endpoints are declared\n| |- backend/ // Folder with "business logic"\n| |- dto/ // DTOs are declared here\n| |- SwaggerComponent.hpp // Swagger-UI config\n| |- AppComponent.hpp // Service config\n| |- App.cpp // main() is here\n|\n|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.\n')])])]),a("hr"),e._v(" "),a("h3",{attrs:{id:"usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[e._v("#")]),e._v(" Usage")]),e._v(" "),a("p",[e._v("When running this example, a Oat++ REST-API is launched and a demo webpage is accessible under "),a("code",[e._v(":8000/v0/cam/stream")]),e._v(".\nThe raw data is send out on the websocket ("),a("code",[e._v(":8000/v0/cam/stream/ws")]),e._v(") as soon as one client is connected and stops if all clients have disconnected.\nEach websocket frame contains a whole image as received from V4L2.")]),e._v(" "),a("h3",{attrs:{id:"quirks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#quirks"}},[e._v("#")]),e._v(" Quirks")]),e._v(" "),a("h4",{attrs:{id:"hardcoded-dimensions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hardcoded-dimensions"}},[e._v("#")]),e._v(" Hardcoded Dimensions")]),e._v(" "),a("p",[e._v("The dimensions are Hardcoded to "),a("em",[e._v("640x480")]),e._v(" interlaced YUYV. Thus each image "),a("em",[e._v("complete")]),e._v(" image is 614400 bytes.\nYou can change the dimensions in "),a("code",[e._v("src/backend/V4LGrabber.cpp:589")]),e._v(" and have to update them in "),a("code",[e._v("res/cam/wsImageView.html:31-32")])]),e._v(" "),a("p",[a("strong",[e._v("src/backend/V4LGrabber.cpp:589")])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("fmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("fmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("pix"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("width "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("640")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\nfmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("fmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("pix"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("height "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("480")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\nfmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("fmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("pix"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("pixelformat "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" V4L2_PIX_FMT_YUYV"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\nfmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("fmt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("pix"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("field "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" V4L2_FIELD_INTERLACED"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("p",[a("strong",[e._v("res/cam/wsImageView.html:31-32")])]),e._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" imgData "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" ctx"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("createImageData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("640")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("480")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" grayScale "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("new")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Uint8Array")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("640")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("480")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h4",{attrs:{id:"partial-images"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#partial-images"}},[e._v("#")]),e._v(" Partial Images")]),e._v(" "),a("p",[e._v("Some webcams or V4L2 implementations are buggy and (sometimes) transfer partial images (only).\nWhen you know your image size, you must come up with your own stiching mechanism.")]),e._v(" "),a("h4",{attrs:{id:"video-lags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#video-lags"}},[e._v("#")]),e._v(" Video Lags")]),e._v(" "),a("p",[e._v("Depending on the used IO method ("),a("code",[e._v("read")]),e._v(", "),a("code",[e._v("mmap")]),e._v(" or "),a("code",[e._v("userptr")]),e._v(") between V4L2<->Oat++ some lag can occur or the stream does not work at all.\nThe example is programmed to use "),a("code",[e._v("mmap")]),e._v(" in "),a("code",[e._v("src/controller/CamAPIController.cpp:31")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("m_grabber "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("V4LGrabber"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("device"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&")]),e._v("CamAPIController"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("handle_frame"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" m_imageReceivers"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" V4LGrabber"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("IO_METHOD_MMAP"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("p",[e._v("The methods can roughly be described by:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("read:")]),e._v(" Simple "),a("code",[e._v("read")]),e._v(" calls on "),a("code",[e._v("/dev/videoX")]),e._v(" (most simple, widely supported)")]),e._v(" "),a("li",[a("strong",[e._v("mmap:")]),e._v(" Memory mapping the data to the user-memory (should be a lot faster, memory efficient)")]),e._v(" "),a("li",[a("strong",[e._v("userptr:")]),e._v(" User created memory region is given to kernel and the kernel uses this region as buffer (potentially dangerous, memory efficient)")])]),e._v(" "),a("h3",{attrs:{id:"build-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-run"}},[e._v("#")]),e._v(" Build and Run")]),e._v(" "),a("h4",{attrs:{id:"using-cmake"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-cmake"}},[e._v("#")]),e._v(" Using CMake")]),e._v(" "),a("p",[a("strong",[e._v("Requires")])]),e._v(" "),a("ul",[a("li",[a("code",[e._v("oatpp")]),e._v(", "),a("code",[e._v("oatpp-websocket")]),e._v(" and "),a("code",[e._v("oatpp-swagger")]),e._v(" modules installed. You may run "),a("code",[e._v("utility/install-oatpp-modules.sh")]),e._v("\nscript to install required oatpp modules.")]),e._v(" "),a("li",[e._v("Linux with "),a("code",[e._v("V4L2")]),e._v(" development libraries installed")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ mkdir build && cd build\n$ cmake ..\n$ make \n$ ./example-yuv-websocket-stream-exe # - run application.\n")])])]),a("h4",{attrs:{id:"in-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#in-docker"}},[e._v("#")]),e._v(" In Docker")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ docker build -t example-yuv-websocket-stream .\n$ docker run -p 8000:8000 -t example-yuv-websocket-stream-exe\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/327.6c1a4328.js b/docs/.vuepress/dist/assets/js/327.6c1a4328.js deleted file mode 100644 index c16ee8c69..000000000 --- a/docs/.vuepress/dist/assets/js/327.6c1a4328.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[327],{699:function(t,e,a){"use strict";a.r(e);var r=a(42),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"project-build-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-build-status"}},[t._v("#")]),t._v(" Project Build Status "),a("seo")],1),t._v(" "),a("h2",{attrs:{id:"modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modules"}},[t._v("#")]),t._v(" Modules")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[t._v("Module")]),t._v(" "),a("th",[t._v("Status")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Dependencies")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("3rd party libs")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=1&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp",alt:"oatpp build status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}}),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-consul"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=7&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-consul?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-curl",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-curl"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=5&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-curl?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Curl")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-libressl"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=3&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-libressl",alt:"oatpp build status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("LibreSSL")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-mbedtls"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=18&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-mbedtls?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("MbedTLS")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-mongo"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=26&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-mongo?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("libmongoxcc")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-openssl"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=32&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-openssl?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("OpenSSL")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-postgresql"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=31&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-postgresql?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-protobuf"),a("OutboundLink")],1)]),t._v(" "),a("td"),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("protobuf")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-sqlite"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=30&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-sqlite?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("SQLite")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-ssdp"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=28&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-ssdp?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-swagger"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=2&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-swagger",alt:"oatpp build status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-websocket",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-websocket"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=6&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-websocket?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-zlib",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-zlib"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=23&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-zlib?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("zlib")])])])]),t._v(" "),a("h2",{attrs:{id:"starters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#starters"}},[t._v("#")]),t._v(" Starters")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[t._v("Starter")]),t._v(" "),a("th",[t._v("Status")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Dependencies")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("3rd party libs")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-starter"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=10&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-async",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-starter-async"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=11&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter-async?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-starter-module",target:"_blank",rel:"noopener noreferrer"}},[t._v("oatpp-starter-module"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=4&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter-module",alt:"oatpp build status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})])])]),t._v(" "),a("h2",{attrs:{id:"examples"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[t._v("Example")]),t._v(" "),a("th",[t._v("Status")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Dependencies")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("3rd party libs")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-api-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-api-client"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=14&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-api-client?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Curl")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-async-api",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-async-api"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=16&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-async-api?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-consul",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-consul"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=15&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-consul?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-consul")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-crud",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-crud"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=9&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-crud?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-swagger, oatpp-sqlite")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("SQLite")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-hls-media-stream",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-hls-media-stream"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=12&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-hls-media-stream?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-iot-hue-ssdp",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-iot-hue-ssdp"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=29&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-iot-hue-ssdp?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-ssdp")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-libressl",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-libressl"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=13&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-libressl?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-libressl")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("LibreSSL")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-microservices",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-microservices"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=22&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-microservices?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-swagger")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-mongodb",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-mongodb"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=27&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-mongodb?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-swagger, oatpp-mongo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("libmongoxcc")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-postgresql",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-postgresql"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=17&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-postgresql?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-swagger, oatpp-postgresql")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-websocket",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-websocket"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=20&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-websocket?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-websocket, oatpp-mbedtls")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("MbedTLS")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/example-yuv-websocket-stream",target:"_blank",rel:"noopener noreferrer"}},[t._v("example-yuv-websocket-stream"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=25&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-yuv-websocket-stream?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-swagger, oatpp-websocket")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})])])]),t._v(" "),a("h2",{attrs:{id:"benchmark-projects"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#benchmark-projects"}},[t._v("#")]),t._v(" Benchmark Projects")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[t._v("Project")]),t._v(" "),a("th",[t._v("Status")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Dependencies")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("3rd party libs")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("a",{attrs:{href:"https://github.com/oatpp/benchmark-websocket",target:"_blank",rel:"noopener noreferrer"}},[t._v("benchmark-websocket"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=19&branchName=master",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.benchmark-websocket?branchName=master",alt:"Build Status"}}),a("OutboundLink")],1)]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("oatpp, oatpp-websocket")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}})])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/328.da69ec74.js b/docs/.vuepress/dist/assets/js/328.da69ec74.js deleted file mode 100644 index 895f89c23..000000000 --- a/docs/.vuepress/dist/assets/js/328.da69ec74.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[328],{700:function(t,a,e){"use strict";e.r(a);var i=e(42),M=Object(i.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[t._v("#")]),t._v(" Support "),e("seo")],1),t._v(" "),e("p",[t._v("Oat++ community is always willing to help!")]),t._v(" "),e("p",[t._v("Connect with Oat++ developers and Oat++ users on the following public channels:")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://gitter.im/oatpp-framework/Lobby"}},[e("img",{staticClass:"icon",attrs:{src:"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA1MSA3NSIgd2lkdGg9IjE3MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTAgMGg2djQ4aC02em0xNSAxM2g2djYyaC02em0xNSAwaDZ2NjJoLTZ6bTE1IDBoNnYzNGgtNnoiLz48L3N2Zz4="}}),t._v("Gitter")]),t._v(" - Talk to Oat++ developers and to other Oat++ users (Preferred Channel).")]),t._v(" "),e("li",[e("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://github.com/oatpp/oatpp/issues"}},[e("img",{staticClass:"icon",attrs:{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyQTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyQjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTI4OTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTI5OTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+m4QGuQAAAyRJREFUeNrEl21ojWEYx895TDPbMNlBK46IUiNmPvHBSUjaqc0H8pF5+aDUKPEBqU2NhRQpX5Rv5jWlDIWlMCv7MMSWsWwmb3tpXub4XXWdPHvc9/Gc41nu+nedc7/8r/99PffLdYdDPsvkwsgkTBwsA/PADJCnzX2gHTwBt8Hl7p537/3whn04XoDZDcpBlk+9P8AFcAghzRkJwPF4zGGw0Y9QS0mAM2AnQj77FqCzrtcwB1Hk81SYojHK4DyGuQ6mhIIrBWB9Xm7ug/6B/nZrBHBegrkFxoVGpnwBMSLR9EcEcC4qb8pP14BWcBcUgewMnF3T34VqhWMFkThLJAalwnENOAKiHpJq1FZgI2AT6HZtuxZwR9GidSHtI30jOrbawxlVX78/AbNfhHlomEUJJI89O2MqeE79T8/nk8nMBm/dK576hZgmA3cp/R4l9/UeSxiHLVIlNm4nFfT0bxyuIj7LHRTKai+zdJobwMKzcZSJb0ePV5PKN+BqAAKE47UlMnERELMM3EdYP/yrd+XYb2mOiYBiQ8OQnoRBlXrl9JZix7D1pHTazu4MoyBcnYamqAjIMTR8G4FT8LuhLsexXYYjICBiqhQBvYb6fLZIJCjPypVvaOoVAW2WcasCnL2Nq82xHJNSqlCeFcDshaPK0twkAhosjZL31QYw+1rlMpWGMArl23SBsZZO58F2tlJXmjOXS+s4WGvpMiBJT/I2PInZ6lIs9/hBsNS1hS6BG0DSqmYEDRlCXQrmy50P1oDRKTSegmNbUsA0zDMwRhPJXeCE3vWLPQMvan6X8AgIa1vcR4AkGZkDR4ejJ1UHpsaVI0g2LInpOsNFUud1rhxSV+fzC9Woz2EZkWQuja7/B+jUrgtIMpy9YCW4n4K41YfzRneW5E1KJTe4B2Zq1Q5EHEtj4U3AfEzR5SVY4l7QYQPJdN2as7RKBF0BPZqqH4VgMAMBL8Byxr7y8zCZiDlnOcEKIPmUpgB5Z2ww5RdOiiRiNajUmWda5IG6WbhsyY2fx6m8gLcoJDJFkH219M3We1+cnda93pfycZpIJEL/s/wSYADmOAwAQgdpBAAAAABJRU5ErkJggg=="}}),t._v("Github")]),t._v(" - Open an Issue on Github.")]),t._v(" "),e("li",[e("a",{attrs:{target:"_blank",rel:"noopener noreferrer",href:"https://stackoverflow.com/questions/tagged/oat%2b%2b"}},[e("img",{staticClass:"icon",attrs:{src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzMzMzMgMzMzMzMzIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiIgdGV4dC1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiIgaW1hZ2UtcmVuZGVyaW5nPSJvcHRpbWl6ZVF1YWxpdHkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMzIyODMxIDExNzY2OWwtMjUzNzYgMzMwNTktMi0yLTE3NTk2IDM3NzU2LTQtMi05MDIwIDQwNjY3LTIwMzM5MS00NTA5Mi0yIDIgOTAyMC00MDY4MSAyMDMzMDggNDUwNjUtMTg4NzI0LTg4MDAwdi0ybDE3NjA2LTM3NzcyIDE4ODcxNCA4Nzk5MkwxMzIxNjAgMjM4OTQgMTUwNDkzIDBoMTg5NjdsMTUzMzcyIDExNzY2OXpNNjI1MDEgMjI5MTczaDIwODMzMHY0MTY2NWwtMjA4MzMwLTR2LTQxNjYxeiIgZmlsbD0iI2Y0ODAyNCIvPjxwYXRoIGZpbGw9IiNiY2JiYmIiIGQ9Ik0zMzMzMzMgMjA4MzM4djEyNDk5NUgwVjIwODMzOGg0MTY2NXY4MzMzMGgyNTAwMDN2LTgzMzMweiIvPjwvc3ZnPg=="}}),t._v("StackOverflow (New)")]),t._v(" - Post a Question.")])]),t._v(" "),e("h2",{attrs:{id:"paid-professional-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#paid-professional-support"}},[t._v("#")]),t._v(" Paid Professional Support")]),t._v(" "),e("p",[t._v("Our services:")]),t._v(" "),e("ul",[e("li",[t._v("Private email support from Oat++ developers.")]),t._v(" "),e("li",[t._v("Tailored modifications of oatpp and its modules.")]),t._v(" "),e("li",[t._v("Custom software development.")])]),t._v(" "),e("p",[t._v("For more information contact us - 📬 "),e("a",{attrs:{href:"mailto:consultancy@oatpp.io"}},[t._v("consultancy@oatpp.io")])])])}),[],!1,null,null,null);a.default=M.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/329.3c37af2f.js b/docs/.vuepress/dist/assets/js/329.3c37af2f.js deleted file mode 100644 index ef2603bef..000000000 --- a/docs/.vuepress/dist/assets/js/329.3c37af2f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[329],{701:function(t,e,r){"use strict";r.r(e);var a=r(42),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"supported-platforms"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#supported-platforms"}},[t._v("#")]),t._v(" Supported Platforms "),r("seo")],1),t._v(" "),r("h2",{attrs:{id:"maintained-on-regular-basis"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maintained-on-regular-basis"}},[t._v("#")]),t._v(" Maintained on regular basis")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("Linux")])]),t._v(" "),r("li",[r("strong",[t._v("BSD")])]),t._v(" "),r("li",[r("strong",[t._v("MacOS")])]),t._v(" "),r("li",[r("strong",[t._v("Windows")]),t._v(" - special thanks to Benedikt-Alexander Mokroß - "),r("a",{attrs:{href:"https://github.com/bamkrs",target:"_blank",rel:"noopener noreferrer"}},[t._v("bamkrs"),r("OutboundLink")],1)])]),t._v(" "),r("h2",{attrs:{id:"special-support"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#special-support"}},[t._v("#")]),t._v(" Special Support")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("OpenWRT")]),t._v(" - see "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openwrt-feed",target:"_blank",rel:"noopener noreferrer"}},[t._v("Oat++ OpenWRT feed"),r("OutboundLink")],1),t._v("\ncontaining build-scripts, options and patches for applications, modules and libraries provided by Oat++.")])]),t._v(" "),r("h2",{attrs:{id:"known-builds"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#known-builds"}},[t._v("#")]),t._v(" Known Builds")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("NixOS")]),t._v(" - see "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-nixos-feed",target:"_blank",rel:"noopener noreferrer"}},[t._v("Oat++ NixOS feed"),r("OutboundLink")],1),t._v(" - collection of patches to properly install\noatpp on NixOS. Special thanks to David Ibbitson - "),r("a",{attrs:{href:"https://github.com/dibbitson",target:"_blank",rel:"noopener noreferrer"}},[t._v("dibbitson"),r("OutboundLink")],1),t._v(".")]),t._v(" "),r("li",[r("strong",[t._v("Android")]),t._v(" - see story on Github - "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/9",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp/issues/9"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("strong",[t._v("iOS")]),t._v(" - see story on Github - "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/9",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp/issues/9"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("strong",[t._v("iOS 8 and earlier")]),t._v(" - with special "),r("code",[t._v("-DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL")]),t._v(" flag."),r("br"),t._v("\nSee story on Github - "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/81",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp/issues/81"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("strong",[t._v("Nvidia Jetson Xavier")]),t._v(" - see story on Github - "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/83",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/oatpp/oatpp/issues/83"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("strong",[t._v("Odroid XU4(Ubuntu)")])]),t._v(" "),r("li",[r("strong",[t._v("Onion Omega2S+ (600mhz RAMIPS with 128mb RAM) running OpenWRT")]),t._v(" - with "),r("code",[t._v("-DOATPP_DISABLE_POOL_ALLOCATIONS")]),t._v(" flag."),r("br"),t._v("\nMakefile - "),r("a",{attrs:{href:"https://gist.github.com/bamkrs/c6a5825734fb3eb51c23a33d0f8c83f4",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://gist.github.com/bamkrs/c6a5825734fb3eb51c23a33d0f8c83f4"),r("OutboundLink")],1),t._v(".")]),t._v(" "),r("li",[r("strong",[t._v("Allwinner V3s (cortexa7, 64mb RAM, 1.2GHz) running OpenWRT")]),t._v(" - with "),r("code",[t._v("-DOATPP_DISABLE_POOL_ALLOCATIONS")]),t._v(" flag."),r("br"),t._v("\nMakefile - "),r("a",{attrs:{href:"https://gist.github.com/bamkrs/c6a5825734fb3eb51c23a33d0f8c83f4",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://gist.github.com/bamkrs/c6a5825734fb3eb51c23a33d0f8c83f4"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/33.7a077396.js b/docs/.vuepress/dist/assets/js/33.7a077396.js deleted file mode 100644 index 21a71f809..000000000 --- a/docs/.vuepress/dist/assets/js/33.7a077396.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{405:function(t,e,r){"use strict";r.r(e);var a=r(42),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/blob/master/src/oatpp-mbedtls/server/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-mbedtls/issues/new?title=API%20question&body=In%20file:%20oatpp-mbedtls/server/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-mbedtls")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-mbedtls/server/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("MbedTLS server connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mbedtls "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-~connectionprovider"}},[t._v("~ConnectionProvider")])]),t._v(" "),r("td",[t._v("Virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Close all handles.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get incoming connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("No need to implement this."),r("br")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-mbedtls/Config/#config"}},[t._v("oatpp::mbedtls::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" useExtendedConnections "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider::~ConnectionProvider")]),t._v(" "),r("p",[t._v("Virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Close all handles.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get incoming connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("No need to implement this."),r("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),r("br"),t._v(" "),r("em",[t._v("It may be implemented later")])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/34.0fe15197.js b/docs/.vuepress/dist/assets/js/34.0fe15197.js deleted file mode 100644 index a1b9ac282..000000000 --- a/docs/.vuepress/dist/assets/js/34.0fe15197.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{406:function(a,e,t){"use strict";t.r(e);var s=t(42),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"types-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#types-hpp"}},[a._v("#")]),a._v(" Types.hpp"),t("seo")],1),a._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/Types.hpp",target:"_blank",rel:"noopener noreferrer"}},[a._v("This File On Github"),t("OutboundLink")],1),t("br"),a._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/Types.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[a._v("Ask A Question"),t("OutboundLink")],1)]),a._v(" "),t("p",[t("code",[a._v("API: latest")]),t("br"),a._v(" "),t("code",[a._v("module: oatpp-mongo")]),t("br"),a._v(" "),t("code",[a._v('#include "oatpp-mongo/bson/Types.hpp"')])]),a._v(" "),t("h2",{attrs:{id:"typecode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode"}},[a._v("#")]),a._v(" TypeCode")]),a._v(" "),t("p",[a._v("Enum with bson data-type codes.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" mongo "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("namespace")]),a._v(" bson "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("enum")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("TypeCode")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" v_char8"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-document-root"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-document-root"}},[a._v("#")]),a._v(" TypeCode::DOCUMENT_ROOT")]),a._v(" "),t("p",[a._v("Not from BSON specification. This code is added to designate the entrypoint for parser.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DOCUMENT_ROOT "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x00")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-double"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-double"}},[a._v("#")]),a._v(" TypeCode::DOUBLE")]),a._v(" "),t("p",[a._v("64-bit binary floating point.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DOUBLE "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x01")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-string"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-string"}},[a._v("#")]),a._v(" TypeCode::STRING")]),a._v(" "),t("p",[a._v("UTF-8 string.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("STRING "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x02")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-document-embedded"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-document-embedded"}},[a._v("#")]),a._v(" TypeCode::DOCUMENT_EMBEDDED")]),a._v(" "),t("p",[a._v("Embedded document.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DOCUMENT_EMBEDDED "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x03")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-document-array"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-document-array"}},[a._v("#")]),a._v(" TypeCode::DOCUMENT_ARRAY")]),a._v(" "),t("p",[a._v("Array.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DOCUMENT_ARRAY "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x04")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-binary"}},[a._v("#")]),a._v(" TypeCode::BINARY")]),a._v(" "),t("p",[a._v("Binary data.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("BINARY "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x05")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-undefined"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-undefined"}},[a._v("#")]),a._v(" TypeCode::UNDEFINED")]),a._v(" "),t("p",[a._v("Undefined (value) — Deprecated.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("UNDEFINED "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x06")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-object-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-object-id"}},[a._v("#")]),a._v(" TypeCode::OBJECT_ID")]),a._v(" "),t("p",[a._v("ObjectId")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("OBJECT_ID "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x07")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-boolean"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-boolean"}},[a._v("#")]),a._v(" TypeCode::BOOLEAN")]),a._v(" "),t("p",[a._v("Boolean value.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("BOOLEAN "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x08")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-date-time"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-date-time"}},[a._v("#")]),a._v(" TypeCode::DATE_TIME")]),a._v(" "),t("p",[a._v("Int64 UTC datetime.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DATE_TIME "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x09")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-null-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-null-value"}},[a._v("#")]),a._v(" TypeCode::NULL_VALUE")]),a._v(" "),t("p",[a._v("Null value.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("NULL_VALUE "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0A")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-regexp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-regexp"}},[a._v("#")]),a._v(" TypeCode::REGEXP")]),a._v(" "),t("p",[a._v("Regular expression.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("REGEXP "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0B")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-bd-pointer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-bd-pointer"}},[a._v("#")]),a._v(" TypeCode::BD_POINTER")]),a._v(" "),t("p",[a._v("DBPointer — Deprecated.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("BD_POINTER "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0C")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-javascript-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-javascript-code"}},[a._v("#")]),a._v(" TypeCode::JAVASCRIPT_CODE")]),a._v(" "),t("p",[a._v("JavaScript code.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("JAVASCRIPT_CODE "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0D")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-symbol"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-symbol"}},[a._v("#")]),a._v(" TypeCode::SYMBOL")]),a._v(" "),t("p",[a._v("Symbol. Deprecated.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("SYMBOL "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0E")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-javascript-code-ws"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-javascript-code-ws"}},[a._v("#")]),a._v(" TypeCode::JAVASCRIPT_CODE_WS")]),a._v(" "),t("p",[a._v("JavaScript code w/ scope.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("JAVASCRIPT_CODE_WS "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x0F")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-int-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-int-32"}},[a._v("#")]),a._v(" TypeCode::INT_32")]),a._v(" "),t("p",[a._v("32-bit integer.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("INT_32 "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x10")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-timestamp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-timestamp"}},[a._v("#")]),a._v(" TypeCode::TIMESTAMP")]),a._v(" "),t("p",[a._v("Timestamp (uint64).")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("TIMESTAMP "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x11")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-int-64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-int-64"}},[a._v("#")]),a._v(" TypeCode::INT_64")]),a._v(" "),t("p",[a._v("64-bit integer.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("INT_64 "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x12")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-decimal-128"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-decimal-128"}},[a._v("#")]),a._v(" TypeCode::DECIMAL_128")]),a._v(" "),t("p",[a._v("128-bit decimal floating point.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("DECIMAL_128 "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x13")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-min-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-min-key"}},[a._v("#")]),a._v(" TypeCode::MIN_KEY")]),a._v(" "),t("p",[a._v("Min key.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("MIN_KEY "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0xFF")]),a._v("\n")])])]),t("h3",{attrs:{id:"typecode-max-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#typecode-max-key"}},[a._v("#")]),a._v(" TypeCode::MAX_KEY")]),a._v(" "),t("p",[a._v("Max key")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[a._v("MAX_KEY "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0x7F")]),a._v("\n")])])]),t("h2",{attrs:{id:"inlinedocument"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inlinedocument"}},[a._v("#")]),a._v(" InlineDocument")]),a._v(" "),t("p",[t("strong",[a._v("Namespace:")]),a._v(" "),t("code",[a._v("oatpp::mongo::bson")])]),a._v(" "),t("p",[a._v("Inline Document - is a binary buffer containing a valid BSON document. "),t("br"),a._v(" May be useful in some cases.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectWrapper"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("string"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("InlineDocument"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" InlineDocument\n")])])]),t("h2",{attrs:{id:"inlinearray"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inlinearray"}},[a._v("#")]),a._v(" InlineArray")]),a._v(" "),t("p",[t("strong",[a._v("Namespace:")]),a._v(" "),t("code",[a._v("oatpp::mongo::bson")])]),a._v(" "),t("p",[a._v("Inline Array - is a binary buffer containing a valid BSON Array. "),t("br"),a._v(" May be useful in some cases.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectWrapper"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("string"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("InlineArray"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" InlineArray\n")])])]),t("h2",{attrs:{id:"objectid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objectid"}},[a._v("#")]),a._v(" ObjectId")]),a._v(" "),t("p",[t("strong",[a._v("Namespace:")]),a._v(" "),t("code",[a._v("oatpp::mongo::bson")])]),a._v(" "),t("p",[a._v("ObjectId as oatpp primitive type.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Primitive"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("type"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectId"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("ObjectId"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" ObjectId\n")])])]),t("h2",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[a._v("#")]),a._v(" DateTime")]),a._v(" "),t("p",[t("strong",[a._v("Namespace:")]),a._v(" "),t("code",[a._v("oatpp::mongo::bson")])]),a._v(" "),t("p",[a._v("DateTime is an ObjectWrapper over "),t("code",[a._v("v_int64")]),a._v(" and __class::DateTime.")]),a._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("typedef")]),a._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("data"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("mapping"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("type"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("Primitive"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("v_int64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" __class"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("::")]),a._v("DateTime"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" DateTime\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/35.0565050b.js b/docs/.vuepress/dist/assets/js/35.0565050b.js deleted file mode 100644 index b8baf7b1c..000000000 --- a/docs/.vuepress/dist/assets/js/35.0565050b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{407:function(t,s,a){"use strict";a.r(s);var e=a(42),n=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"utils-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils-hpp"}},[t._v("#")]),t._v(" Utils.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/Utils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/Utils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mongo")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mongo/bson/Utils.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[t._v("#")]),t._v(" Utils")]),t._v(" "),a("p",[t._v("Utils for BSON serialization/deserialization.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Utils")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/36.a73f0155.js b/docs/.vuepress/dist/assets/js/36.a73f0155.js deleted file mode 100644 index 90ea75799..000000000 --- a/docs/.vuepress/dist/assets/js/36.a73f0155.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{408:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"deserializer-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-hpp"}},[t._v("#")]),t._v(" Deserializer.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/mapping/Deserializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/mapping/Deserializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mongo")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mongo/bson/mapping/Deserializer.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"deserializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer"}},[t._v("#")]),t._v(" Deserializer")]),t._v(" "),a("p",[t._v("BSON Deserializer. Deserialize oatpp DTO object from bson. See "),a("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Deserializer")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-deserializer"}},[t._v("Deserializer")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-setdeserializermethod"}},[t._v("setDeserializerMethod")])]),t._v(" "),a("td",[t._v("Set deserializer method for type.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::Void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-deserialize"}},[t._v("deserialize")])]),t._v(" "),a("td",[t._v("Deserialize text.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("const std::shared_ptr&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-getconfig"}},[t._v("getConfig")])]),t._v(" "),a("td",[t._v("Get deserializer config.")])])])]),t._v(" "),a("h3",{attrs:{id:"deserializer-deserializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-deserializer"}},[t._v("#")]),t._v(" Deserializer::Deserializer")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" config ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Deserializer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-setdeserializermethod"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-setdeserializermethod"}},[t._v("#")]),t._v(" Deserializer::setDeserializerMethod")]),t._v(" "),a("p",[t._v("Set deserializer method for type. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" classId - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#classid"}},[t._v("oatpp::data::mapping::type::ClassId")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" method - "),a("code",[t._v("typedef oatpp::Void (*DeserializerMethod)(Deserializer*, parser::Caret, const Type* const)")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDeserializerMethod")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" DeserializerMethod method"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-deserialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-deserialize"}},[t._v("#")]),t._v(" Deserializer::deserialize")]),t._v(" "),a("p",[t._v("Deserialize text. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" caret - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" type - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")])],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("oatpp::Void")]),t._v(" over deserialized object. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("deserialize")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("parser"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_char8 bsonTypeCode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-getconfig"}},[t._v("#")]),t._v(" Deserializer::getConfig")]),t._v(" "),a("p",[t._v("Get deserializer config. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"deserializer-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config"}},[t._v("#")]),t._v(" Deserializer::Config")]),t._v(" "),a("p",[t._v("Deserializer config.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Deserializer")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("bool")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-allowunknownfields"}},[t._v("allowUnknownFields")])]),t._v(" "),a("td",[t._v('Do not fail if unknown field is found in bson. "unknown field" is the one which is not present in DTO object class.')])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::vector")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-enableinterpretations"}},[t._v("enableInterpretations")])]),t._v(" "),a("td",[t._v("Enable type interpretations.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-config"}},[t._v("Config")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#deserializer-config-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Config.")])])])]),t._v(" "),a("h3",{attrs:{id:"deserializer-config-allowunknownfields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-allowunknownfields"}},[t._v("#")]),t._v(" Deserializer::Config::allowUnknownFields")]),t._v(" "),a("p",[t._v('Do not fail if unknown field is found in bson. "unknown field" is the one which is not present in DTO object class.')]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" allowUnknownFields "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-enableinterpretations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-enableinterpretations"}},[t._v("#")]),t._v(" Deserializer::Config::enableInterpretations")]),t._v(" "),a("p",[t._v("Enable type interpretations.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" enableInterpretations "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-config"}},[t._v("#")]),t._v(" Deserializer::Config::Config")]),t._v(" "),a("p",[t._v("Constructor.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"deserializer-config-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-config-createshared"}},[t._v("#")]),t._v(" Deserializer::Config::createShared")]),t._v(" "),a("p",[t._v("Create shared Config. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/37.14b0a466.js b/docs/.vuepress/dist/assets/js/37.14b0a466.js deleted file mode 100644 index 563e6f884..000000000 --- a/docs/.vuepress/dist/assets/js/37.14b0a466.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{409:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"objectmapper-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-hpp"}},[t._v("#")]),t._v(" ObjectMapper.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/mapping/ObjectMapper.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/mapping/ObjectMapper.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/bson/mapping/ObjectMapper.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper"}},[t._v("#")]),t._v(" ObjectMapper")]),t._v(" "),e("p",[t._v("BSON ObjectMapper. Serialized/Deserializes oatpp DTO objects to/from BSON. See "),e("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),e("OutboundLink")],1),t._v(". "),e("br"),t._v(" Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper"}},[t._v("oatpp::data::mapping::ObjectMapper")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectMapper "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-objectmapper"}},[t._v("ObjectMapper")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. ")]),e("li",[t._v("Constructor. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Create shared ObjectMapper. ")]),e("li",[t._v("Create shared ObjectMapper. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-write"}},[t._v("oatpp::data::mapping::ObjectMapper::write()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-read"}},[t._v("oatpp::data::mapping::ObjectMapper::read()")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-getserializer"}},[t._v("getSerializer")])]),t._v(" "),e("td",[t._v("Get serializer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectmapper-getdeserializer"}},[t._v("getDeserializer")])]),t._v(" "),e("td",[t._v("Get deserializer.")])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-objectmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-objectmapper"}},[t._v("#")]),t._v(" ObjectMapper::ObjectMapper")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializerConfig - oatpp::parser::bson::mapping::Serializer::Config. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializerConfig - oatpp::parser::bson::mapping::Deserializer::Config. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializer ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-createshared"}},[t._v("#")]),t._v(" ObjectMapper::createShared")]),t._v(" "),e("ol",[e("li",[t._v("Create shared ObjectMapper. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializerConfig - oatpp::parser::bson::mapping::Serializer::Config. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializerConfig - oatpp::parser::bson::mapping::Deserializer::Config. ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to ObjectMapper. ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializerConfig"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Create shared ObjectMapper. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" serializer ")]),e("li",[e("strong",[t._v("@param")]),t._v(" deserializer ")]),e("li",[e("strong",[t._v("@return")])])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ObjectMapper"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" serializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" deserializer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"objectmapper-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-write"}},[t._v("#")]),t._v(" ObjectMapper::write")]),t._v(" "),e("p",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-write"}},[t._v("oatpp::data::mapping::ObjectMapper::write()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - stream to write serializerd data to "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#consistentoutputstream"}},[t._v("oatpp::data::stream::ConsistentOutputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" variant - object to serialize "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" variant"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"objectmapper-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-read"}},[t._v("#")]),t._v(" ObjectMapper::read")]),t._v(" "),e("p",[t._v("Implementation of "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/ObjectMapper/#objectmapper-read"}},[t._v("oatpp::data::mapping::ObjectMapper::read()")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" caret - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/parser/Caret/#caret"}},[t._v("oatpp::parser::Caret")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" type - type of resultant object "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(" holding resultant object. ")],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("parser"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Caret"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" caret"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"objectmapper-getserializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-getserializer"}},[t._v("#")]),t._v(" ObjectMapper::getSerializer")]),t._v(" "),e("p",[t._v("Get serializer. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Serializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSerializer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectmapper-getdeserializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectmapper-getdeserializer"}},[t._v("#")]),t._v(" ObjectMapper::getDeserializer")]),t._v(" "),e("p",[t._v("Get deserializer. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Deserializer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDeserializer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/38.8b7c370b.js b/docs/.vuepress/dist/assets/js/38.8b7c370b.js deleted file mode 100644 index 1b61db9d7..000000000 --- a/docs/.vuepress/dist/assets/js/38.8b7c370b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{410:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"serializer-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-hpp"}},[t._v("#")]),t._v(" Serializer.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/mapping/Serializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/mapping/Serializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/bson/mapping/Serializer.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"serializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer"}},[t._v("#")]),t._v(" Serializer")]),t._v(" "),e("p",[t._v("BSON Serializer. Serializes oatpp DTO object to bson. See "),e("a",{attrs:{href:"https://oatpp.io/docs/components/dto/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Transfer Object(DTO) component"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Serializer")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-serializer"}},[t._v("Serializer")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-setserializermethod"}},[t._v("setSerializerMethod")])]),t._v(" "),e("td",[t._v("Set serializer method for type.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-serializetostream"}},[t._v("serializeToStream")])]),t._v(" "),e("td",[t._v("Serialize object to stream.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const std::shared_ptr&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-getconfig"}},[t._v("getConfig")])]),t._v(" "),e("td",[t._v("Get serializer config.")])])])]),t._v(" "),e("h3",{attrs:{id:"serializer-serializer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-serializer"}},[t._v("#")]),t._v(" Serializer::Serializer")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" config - serializer config. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Serializer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-setserializermethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-setserializermethod"}},[t._v("#")]),t._v(" Serializer::setSerializerMethod")]),t._v(" "),e("p",[t._v("Set serializer method for type. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" classId - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#classid"}},[t._v("oatpp::data::mapping::type::ClassId")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" method - "),e("code",[t._v("typedef void (*SerializerMethod)(Serializer*, data::stream::ConsistentOutputStream*, const oatpp::Void)")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSerializerMethod")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" SerializerMethod method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-serializetostream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-serializetostream"}},[t._v("#")]),t._v(" Serializer::serializeToStream")]),t._v(" "),e("p",[t._v("Serialize object to stream. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" stream - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#consistentoutputstream"}},[t._v("oatpp::data::stream::ConsistentOutputStream")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" polymorph - DTO as "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#void"}},[t._v("oatpp::Void")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("serializeToStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConsistentOutputStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" polymorph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-getconfig"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-getconfig"}},[t._v("#")]),t._v(" Serializer::getConfig")]),t._v(" "),e("p",[t._v("Get serializer config. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getConfig")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"serializer-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config"}},[t._v("#")]),t._v(" Serializer::Config")]),t._v(" "),e("p",[t._v("Serializer config.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Serializer")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-config-includenullfields"}},[t._v("includeNullFields")])]),t._v(" "),e("td",[t._v("Include fields with value == nullptr into serialized bson.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-config-throwonunknowntypes"}},[t._v("throwOnUnknownTypes")])]),t._v(" "),e("td",[t._v("If "),e("code",[t._v("true")]),t._v(" - insert string "),e("code",[t._v('""')]),t._v(" in bson field value in case unknown field found. Fail if "),e("code",[t._v("false")]),t._v(". Known types for this serializer are:"),e("br"),t._v(" (String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::vector")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-config-enableinterpretations"}},[t._v("enableInterpretations")])]),t._v(" "),e("td",[t._v("Enable type interpretations.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-config-config"}},[t._v("Config")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#serializer-config-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared config.")])])])]),t._v(" "),e("h3",{attrs:{id:"serializer-config-includenullfields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-includenullfields"}},[t._v("#")]),t._v(" Serializer::Config::includeNullFields")]),t._v(" "),e("p",[t._v("Include fields with value == nullptr into serialized bson.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" includeNullFields "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-config-throwonunknowntypes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-throwonunknowntypes"}},[t._v("#")]),t._v(" Serializer::Config::throwOnUnknownTypes")]),t._v(" "),e("p",[t._v("If "),e("code",[t._v("true")]),t._v(" - insert string "),e("code",[t._v('""')]),t._v(" in bson field value in case unknown field found. Fail if "),e("code",[t._v("false")]),t._v(". Known types for this serializer are:"),e("br"),t._v(" (String, Int8, Int16, Int32, Int64, Float32, Float64, Boolean, DTOs, List, Fields).")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" throwOnUnknownTypes "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-config-enableinterpretations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-enableinterpretations"}},[t._v("#")]),t._v(" Serializer::Config::enableInterpretations")]),t._v(" "),e("p",[t._v("Enable type interpretations.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" enableInterpretations "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-config-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-config"}},[t._v("#")]),t._v(" Serializer::Config::Config")]),t._v(" "),e("p",[t._v("Constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"serializer-config-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#serializer-config-createshared"}},[t._v("#")]),t._v(" Serializer::Config::createShared")]),t._v(" "),e("p",[t._v("Create shared config. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("code",[t._v("std::shared_ptr")]),t._v(" to Config. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/39.51941110.js b/docs/.vuepress/dist/assets/js/39.51941110.js deleted file mode 100644 index d658da5b4..000000000 --- a/docs/.vuepress/dist/assets/js/39.51941110.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{411:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"objectid-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-hpp"}},[t._v("#")]),t._v(" ObjectId.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/bson/type/ObjectId.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/bson/type/ObjectId.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/bson/type/ObjectId.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"objectid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid"}},[t._v("#")]),t._v(" ObjectId")]),t._v(" "),e("p",[t._v("BSON ObjectId implementation.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" bson "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" type "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ObjectId")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-data-size"}},[t._v("DATA_SIZE")])]),t._v(" "),e("td",[t._v("Size of ObjectId data.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-objectid"}},[t._v("ObjectId")])]),t._v(" "),e("td",[t._v("Multiple implementations: "),e("br"),e("ol",[e("li",[t._v("Constructor. Creates new ObjectId. ")]),e("li",[t._v("Constructor. Creates ObjectId from byte array. ")])])])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("const p_char8")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-getdata"}},[t._v("getData")])]),t._v(" "),e("td",[t._v("Get raw data of ObjectId.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_buff_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-getsize"}},[t._v("getSize")])]),t._v(" "),e("td",[t._v("Get size of ObjectId data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_uint32")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-gettimestamp"}},[t._v("getTimestamp")])]),t._v(" "),e("td",[t._v("Get ObjectId timestamp.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#objectid-tostring"}},[t._v("toString")])]),t._v(" "),e("td",[t._v("To hex string.")])])])]),t._v(" "),e("h3",{attrs:{id:"objectid-data-size"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-data-size"}},[t._v("#")]),t._v(" ObjectId::DATA_SIZE")]),t._v(" "),e("p",[t._v("Size of ObjectId data.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("constexpr")]),t._v(" v_buff_size DATA_SIZE "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectid-objectid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-objectid"}},[t._v("#")]),t._v(" ObjectId::ObjectId")]),t._v(" "),e("ol",[e("li",[t._v("Constructor. Creates new ObjectId."),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("li",[t._v("Constructor. Creates ObjectId from byte array. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" m_data ")])]),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ObjectId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_char8 m_data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("DATA_SIZE"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),e("h3",{attrs:{id:"objectid-getdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-getdata"}},[t._v("#")]),t._v(" ObjectId::getData")]),t._v(" "),e("p",[t._v("Get raw data of ObjectId. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" p_char8 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectid-getsize"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-getsize"}},[t._v("#")]),t._v(" ObjectId::getSize")]),t._v(" "),e("p",[t._v("Get size of ObjectId data. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("a",{attrs:{href:"#objectid-data-size"}},[t._v("ObjectId::DATA_SIZE")]),t._v(". ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_buff_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSize")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectid-gettimestamp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-gettimestamp"}},[t._v("#")]),t._v(" ObjectId::getTimestamp")]),t._v(" "),e("p",[t._v("Get ObjectId timestamp. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_uint32 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTimestamp")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),e("h3",{attrs:{id:"objectid-tostring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#objectid-tostring"}},[t._v("#")]),t._v(" ObjectId::toString")]),t._v(" "),e("p",[t._v("To hex string. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/4.0e06b581.js b/docs/.vuepress/dist/assets/js/4.0e06b581.js deleted file mode 100644 index 580ea4268..000000000 --- a/docs/.vuepress/dist/assets/js/4.0e06b581.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{319:function(t,e,n){},375:function(t,e,n){"use strict";var i=n(319);n.n(i).a},702:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(375),n(42)),a=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/40.0d7e270a.js b/docs/.vuepress/dist/assets/js/40.0d7e270a.js deleted file mode 100644 index 91759248b..000000000 --- a/docs/.vuepress/dist/assets/js/40.0d7e270a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{412:function(t,a,n){"use strict";n.r(a);var s=n(42),e=Object(s.a)({},(function(){var t=this,a=t.$createElement,n=t._self._c||a;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"command-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#command-hpp"}},[t._v("#")]),t._v(" Command.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Command.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Command.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-mongo")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-mongo/driver/command/Command.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"command"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#command"}},[t._v("#")]),t._v(" Command")]),t._v(" "),n("p",[t._v("Superclass of MongoDB commands.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" command "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Command")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/41.33ec57e6.js b/docs/.vuepress/dist/assets/js/41.33ec57e6.js deleted file mode 100644 index 2b66f961e..000000000 --- a/docs/.vuepress/dist/assets/js/41.33ec57e6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{413:function(t,e,a){"use strict";a.r(e);var s=a(42),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"delete-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete-hpp"}},[t._v("#")]),t._v(" Delete.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Delete.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Delete.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mongo")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mongo/driver/command/Delete.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("Delete command.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" command "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Delete")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Command "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/42.6c303ff4.js b/docs/.vuepress/dist/assets/js/42.6c303ff4.js deleted file mode 100644 index 4a0321400..000000000 --- a/docs/.vuepress/dist/assets/js/42.6c303ff4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{414:function(t,a,n){"use strict";n.r(a);var s=n(42),e=Object(s.a)({},(function(){var t=this,a=t.$createElement,n=t._self._c||a;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"find-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#find-hpp"}},[t._v("#")]),t._v(" Find.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Find.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Find.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-mongo")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-mongo/driver/command/Find.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"find"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#find"}},[t._v("#")]),t._v(" Find")]),t._v(" "),n("p",[t._v("Find command.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" command "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Find")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Command "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/43.a8c7c141.js b/docs/.vuepress/dist/assets/js/43.a8c7c141.js deleted file mode 100644 index 60b048687..000000000 --- a/docs/.vuepress/dist/assets/js/43.a8c7c141.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{415:function(t,s,a){"use strict";a.r(s);var e=a(42),n=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"insert-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#insert-hpp"}},[t._v("#")]),t._v(" Insert.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Insert.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Insert.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mongo")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mongo/driver/command/Insert.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"insert"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#insert"}},[t._v("#")]),t._v(" Insert")]),t._v(" "),a("p",[t._v("Insert command.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" command "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Insert")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Command "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/44.0650fc33.js b/docs/.vuepress/dist/assets/js/44.0650fc33.js deleted file mode 100644 index c5704ad5f..000000000 --- a/docs/.vuepress/dist/assets/js/44.0650fc33.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{416:function(e,o,t){"use strict";t.r(o);var n=t(42),r=Object(n.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"miscellaneous-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#miscellaneous-hpp"}},[e._v("#")]),e._v(" Miscellaneous.hpp"),t("seo")],1),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Miscellaneous.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),t("OutboundLink")],1),t("br"),e._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Miscellaneous.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("code",[e._v("API: latest")]),t("br"),e._v(" "),t("code",[e._v("module: oatpp-mongo")]),t("br"),e._v(" "),t("code",[e._v('#include "oatpp-mongo/driver/command/Miscellaneous.hpp"')])])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/45.4f0204bb.js b/docs/.vuepress/dist/assets/js/45.4f0204bb.js deleted file mode 100644 index 160962c68..000000000 --- a/docs/.vuepress/dist/assets/js/45.4f0204bb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{417:function(t,a,e){"use strict";e.r(a);var s=e(42),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"update-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update-hpp"}},[t._v("#")]),t._v(" Update.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/command/Update.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/command/Update.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/driver/command/Update.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"update"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update"}},[t._v("#")]),t._v(" Update")]),t._v(" "),e("p",[t._v("Update command.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" command "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Update")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Command "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/46.a1a6403d.js b/docs/.vuepress/dist/assets/js/46.a1a6403d.js deleted file mode 100644 index f81ae28ec..000000000 --- a/docs/.vuepress/dist/assets/js/46.a1a6403d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{418:function(t,n,e){"use strict";e.r(n);var a=e(42),s=Object(a.a)({},(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"connection-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/wire/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/wire/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/driver/wire/Connection.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),e("p",[t._v("MongoDB connection.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" wire "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);n.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/47.426c85c5.js b/docs/.vuepress/dist/assets/js/47.426c85c5.js deleted file mode 100644 index 6c8bc1557..000000000 --- a/docs/.vuepress/dist/assets/js/47.426c85c5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{419:function(t,s,e){"use strict";e.r(s);var a=e(42),n=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"message-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#message-hpp"}},[t._v("#")]),t._v(" Message.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/wire/Message.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/wire/Message.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-mongo")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-mongo/driver/wire/Message.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"message"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#message"}},[t._v("#")]),t._v(" Message")]),t._v(" "),e("p",[t._v("MongoDB wire message.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" wire "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Message")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/48.298f6c01.js b/docs/.vuepress/dist/assets/js/48.298f6c01.js deleted file mode 100644 index 92177a016..000000000 --- a/docs/.vuepress/dist/assets/js/48.298f6c01.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{420:function(t,s,a){"use strict";a.r(s);var e=a(42),n=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"opmsg-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#opmsg-hpp"}},[t._v("#")]),t._v(" OpMsg.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/blob/master/src/oatpp-mongo/driver/wire/OpMsg.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-mongo/issues/new?title=API%20question&body=In%20file:%20oatpp-mongo/driver/wire/OpMsg.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-mongo")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-mongo/driver/wire/OpMsg.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"section"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#section"}},[t._v("#")]),t._v(" Section")]),t._v(" "),a("p",[t._v("Section of OpMsg.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" wire "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Section")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"opmsg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#opmsg"}},[t._v("#")]),t._v(" OpMsg")]),t._v(" "),a("p",[t._v("OpMsg.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mongo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" driver "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" wire "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OpMsg")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/49.ec327870.js b/docs/.vuepress/dist/assets/js/49.ec327870.js deleted file mode 100644 index b9ec4aa33..000000000 --- a/docs/.vuepress/dist/assets/js/49.ec327870.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{421:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"config-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-hpp"}},[t._v("#")]),t._v(" Config.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/Config.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/Config.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-openssl")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-openssl/Config.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config"}},[t._v("#")]),t._v(" Config")]),t._v(" "),e("p",[t._v("Config.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Config")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-config"}},[t._v("Config")])]),t._v(" "),e("td",[t._v("Constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-~config"}},[t._v("~Config")])]),t._v(" "),e("td",[t._v("Virtual destructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared "),e("code",[t._v("Config")]),t._v(".")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("createDefaultServerConfigShared")])]),t._v(" "),e("td",[t._v("Create default shared "),e("code",[t._v("Config")]),t._v(" for server.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("createDefaultClientConfigShared")])]),t._v(" "),e("td",[t._v("Create default shared "),e("code",[t._v("Config")]),t._v(" for client.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-clearcontextconfigurers"}},[t._v("clearContextConfigurers")])]),t._v(" "),e("td",[t._v("Clear context configurers.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-addcontextconfigurer"}},[t._v("addContextConfigurer")])]),t._v(" "),e("td",[t._v("Add context configurer.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#config-configurecontext"}},[t._v("configureContext")])]),t._v(" "),e("td",[t._v("Configure SSL context.")])])])]),t._v(" "),e("h3",{attrs:{id:"config-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-config"}},[t._v("#")]),t._v(" Config::Config")]),t._v(" "),e("p",[t._v("Constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-config-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-config-2"}},[t._v("#")]),t._v(" Config::~Config")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Config")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-createshared"}},[t._v("#")]),t._v(" Config::createShared")]),t._v(" "),e("p",[t._v("Create shared "),e("code",[t._v("Config")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-createdefaultserverconfigshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultserverconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultServerConfigShared")]),t._v(" "),e("p",[t._v("Create default shared "),e("code",[t._v("Config")]),t._v(" for server. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" certChainFile ")]),e("li",[e("strong",[t._v("@param")]),t._v(" privateKeyFile ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultServerConfigShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" certChainFile"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" privateKeyFile"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-createdefaultclientconfigshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-createdefaultclientconfigshared"}},[t._v("#")]),t._v(" Config::createDefaultClientConfigShared")]),t._v(" "),e("p",[t._v("Create default shared "),e("code",[t._v("Config")]),t._v(" for client. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createDefaultClientConfigShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-clearcontextconfigurers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-clearcontextconfigurers"}},[t._v("#")]),t._v(" Config::clearContextConfigurers")]),t._v(" "),e("p",[t._v("Clear context configurers.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("clearContextConfigurers")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-addcontextconfigurer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-addcontextconfigurer"}},[t._v("#")]),t._v(" Config::addContextConfigurer")]),t._v(" "),e("p",[t._v("Add context configurer. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" contextConfigurer - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/ContextConfigurer/#contextconfigurer"}},[t._v("oatpp::openssl::configurer::ContextConfigurer")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addContextConfigurer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("configurer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ContextConfigurer"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" contextConfigurer"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"config-configurecontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#config-configurecontext"}},[t._v("#")]),t._v(" Config::configureContext")]),t._v(" "),e("p",[t._v("Configure SSL context. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ctx ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("SSL_CTX"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" ctx"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/5.2e5733ab.js b/docs/.vuepress/dist/assets/js/5.2e5733ab.js deleted file mode 100644 index 503642206..000000000 --- a/docs/.vuepress/dist/assets/js/5.2e5733ab.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{356:function(t,n,r){"use strict";var o=r(0),e=r(21),i=r(11),a=r(1),u=r(31),l=[],c=l.sort,s=a((function(){l.sort(void 0)})),f=a((function(){l.sort(null)})),h=u("sort");o({target:"Array",proto:!0,forced:s||!f||!h},{sort:function(t){return void 0===t?c.call(i(this)):c.call(i(this),e(t))}})},377:function(t,n,r){"use strict";r.r(n);r(356),r(44),r(45),r(68),r(92),r(9),r(26),r(30);var o=r(61);var e=r(325),i={data:function(){return{items:[]}},beforeMount:function(){var t=this;e.get("https://api.github.com/repos/oatpp/oatpp/contributors").then((function(n){n.data;var r,e=[],i=function(t,n){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=Object(o.a)(t))||n&&t&&"number"==typeof t.length){r&&(t=r);var e=0,i=function(){};return{s:i,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw a}}}}(n.data);try{for(i.s();!(r=i.n()).done;){var a=r.value;if("Bot"!=a.type){var u={total:a.contributions,login:a.login,url:a.html_url,img:a.html_url+".png"};e.push(u)}}}catch(t){i.e(t)}finally{i.f()}e.sort((function(t,n){return t.total>n.total?-1:t.total")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#connection-gettransportstream"}},[t._v("getTransportStream")])]),t._v(" "),e("td",[t._v("Get the underlying transport stream.")])])])]),t._v(" "),e("h3",{attrs:{id:"connection-connection"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection"}},[t._v("#")]),t._v(" Connection::Connection")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ssl - pointer to OpenSSL ssl object;. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" stream - underlying transport stream. "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("SSL"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" ssl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" stream"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-connection-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-connection-2"}},[t._v("#")]),t._v(" Connection::~Connection")]),t._v(" "),e("p",[t._v("Virtual destructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Connection")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"connection-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-write"}},[t._v("#")]),t._v(" Connection::write")]),t._v(" "),e("p",[t._v("Write operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" data - pointer to data. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the data in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-read"}},[t._v("#")]),t._v(" Connection::read")]),t._v(" "),e("p",[t._v("Read operation callback. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buffer - pointer to buffer. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - size of the buffer in bytes. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual number of bytes written to buffer. 0 - to indicate end-of-file. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamiomode"}},[t._v("#")]),t._v(" Connection::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getoutputstreamcontext"}},[t._v("#")]),t._v(" Connection::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-setinputstreamiomode"}},[t._v("#")]),t._v(" Connection::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamiomode"}},[t._v("#")]),t._v(" Connection::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-getinputstreamcontext"}},[t._v("#")]),t._v(" Connection::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"connection-gettransportstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connection-gettransportstream"}},[t._v("#")]),t._v(" Connection::getTransportStream")]),t._v(" "),e("p",[t._v("Get the underlying transport stream. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getTransportStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/51.50db9f2c.js b/docs/.vuepress/dist/assets/js/51.50db9f2c.js deleted file mode 100644 index d87c7684b..000000000 --- a/docs/.vuepress/dist/assets/js/51.50db9f2c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{423:function(t,e,r){"use strict";r.r(e);var a=r(42),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/client/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/client/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-openssl")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-openssl/client/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Openssl client connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" client "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-~connectionprovider"}},[t._v("~ConnectionProvider")])]),t._v(" "),r("td",[t._v("Virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Close all handles.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("Get connection in asynchronous manner.")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider"}},[t._v("oatpp::network::ClientConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClientConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider::~ConnectionProvider")]),t._v(" "),r("p",[t._v("Virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Close all handles.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("Get connection in asynchronous manner. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult. ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/52.ba28c3e4.js b/docs/.vuepress/dist/assets/js/52.ba28c3e4.js deleted file mode 100644 index 70032937a..000000000 --- a/docs/.vuepress/dist/assets/js/52.ba28c3e4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{424:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"certificatechainfile-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatechainfile-hpp"}},[t._v("#")]),t._v(" CertificateChainFile.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/configurer/CertificateChainFile.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/configurer/CertificateChainFile.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-openssl")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-openssl/configurer/CertificateChainFile.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"certificatechainfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatechainfile"}},[t._v("#")]),t._v(" CertificateChainFile")]),t._v(" "),a("p",[t._v("Context configurer for certificate chain file. extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/ContextConfigurer/#contextconfigurer"}},[t._v("oatpp::openssl::configurer::ContextConfigurer")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" configurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CertificateChainFile")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ContextConfigurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#certificatechainfile-certificatechainfile"}},[t._v("CertificateChainFile")])]),t._v(" "),a("td",[t._v("Constructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"certificatechainfile-certificatechainfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatechainfile-certificatechainfile"}},[t._v("#")]),t._v(" CertificateChainFile::CertificateChainFile")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" filename ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CertificateChainFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/53.5e34c368.js b/docs/.vuepress/dist/assets/js/53.5e34c368.js deleted file mode 100644 index d3946aae1..000000000 --- a/docs/.vuepress/dist/assets/js/53.5e34c368.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{425:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"certificatefile-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatefile-hpp"}},[t._v("#")]),t._v(" CertificateFile.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/configurer/CertificateFile.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/configurer/CertificateFile.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-openssl")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-openssl/configurer/CertificateFile.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"certificatefile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatefile"}},[t._v("#")]),t._v(" CertificateFile")]),t._v(" "),a("p",[t._v("Context configurer for certificate file. extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/ContextConfigurer/#contextconfigurer"}},[t._v("oatpp::openssl::configurer::ContextConfigurer")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" configurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CertificateFile")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ContextConfigurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#certificatefile-certificatefile"}},[t._v("CertificateFile")])]),t._v(" "),a("td",[t._v("Constructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"certificatefile-certificatefile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#certificatefile-certificatefile"}},[t._v("#")]),t._v(" CertificateFile::CertificateFile")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" filename ")]),a("li",[a("strong",[t._v("@param")]),t._v(" filetype ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("CertificateFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" filetype "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" SSL_FILETYPE_PEM"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/54.65ba6dc6.js b/docs/.vuepress/dist/assets/js/54.65ba6dc6.js deleted file mode 100644 index 2608c1332..000000000 --- a/docs/.vuepress/dist/assets/js/54.65ba6dc6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{426:function(t,e,r){"use strict";r.r(e);var s=r(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"contextconfigurer-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contextconfigurer-hpp"}},[t._v("#")]),t._v(" ContextConfigurer.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/configurer/ContextConfigurer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/configurer/ContextConfigurer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-openssl")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-openssl/configurer/ContextConfigurer.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"contextconfigurer"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contextconfigurer"}},[t._v("#")]),t._v(" ContextConfigurer")]),t._v(" "),r("p",[t._v("Context configurer.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" configurer "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ContextConfigurer")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#contextconfigurer-~contextconfigurer"}},[t._v("~ContextConfigurer")])]),t._v(" "),r("td",[t._v("virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#contextconfigurer-configure"}},[t._v("configure")])]),t._v(" "),r("td",[t._v("Configure SSL context.")])])])]),t._v(" "),r("h3",{attrs:{id:"contextconfigurer-contextconfigurer"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contextconfigurer-contextconfigurer"}},[t._v("#")]),t._v(" ContextConfigurer::~ContextConfigurer")]),t._v(" "),r("p",[t._v("virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ContextConfigurer")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),t._v("\n")])])]),r("h3",{attrs:{id:"contextconfigurer-configure"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contextconfigurer-configure"}},[t._v("#")]),t._v(" ContextConfigurer::configure")]),t._v(" "),r("p",[t._v("Configure SSL context. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" ctx ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("configure")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("SSL_CTX"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" ctx"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/55.5941ad74.js b/docs/.vuepress/dist/assets/js/55.5941ad74.js deleted file mode 100644 index 110e2ad1e..000000000 --- a/docs/.vuepress/dist/assets/js/55.5941ad74.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{427:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"privatekeyfile-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#privatekeyfile-hpp"}},[t._v("#")]),t._v(" PrivateKeyFile.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/configurer/PrivateKeyFile.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/configurer/PrivateKeyFile.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-openssl")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-openssl/configurer/PrivateKeyFile.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"privatekeyfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#privatekeyfile"}},[t._v("#")]),t._v(" PrivateKeyFile")]),t._v(" "),a("p",[t._v("Context configurer for private key file. extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/configurer/ContextConfigurer/#contextconfigurer"}},[t._v("oatpp::openssl::configurer::ContextConfigurer")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" configurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PrivateKeyFile")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" ContextConfigurer "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#privatekeyfile-privatekeyfile"}},[t._v("PrivateKeyFile")])]),t._v(" "),a("td",[t._v("Constructor.")])])])]),t._v(" "),a("h3",{attrs:{id:"privatekeyfile-privatekeyfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#privatekeyfile-privatekeyfile"}},[t._v("#")]),t._v(" PrivateKeyFile::PrivateKeyFile")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" filename ")]),a("li",[a("strong",[t._v("@param")]),t._v(" filetype ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("PrivateKeyFile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" filename"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" filetype "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" SSL_FILETYPE_PEM"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/56.fd40c399.js b/docs/.vuepress/dist/assets/js/56.fd40c399.js deleted file mode 100644 index ab54f2ff6..000000000 --- a/docs/.vuepress/dist/assets/js/56.fd40c399.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{428:function(t,e,r){"use strict";r.r(e);var a=r(42),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"connectionprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/blob/master/src/oatpp-openssl/server/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-openssl/issues/new?title=API%20question&body=In%20file:%20oatpp-openssl/server/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-openssl")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-openssl/server/ConnectionProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),r("p",[t._v("Openssl server connection provider. Extends "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[t._v("oatpp::base::Countable")]),t._v(", "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(".")],1),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" openssl "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" server "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("std::shared_ptr")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-createshared"}},[t._v("createShared")])]),t._v(" "),r("td",[t._v("Multiple implementations: "),r("br"),r("ol",[r("li",[t._v("Create shared ConnectionProvider. ")]),r("li",[t._v("Create shared ConnectionProvider. ")])])])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("[none]")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-~connectionprovider"}},[t._v("~ConnectionProvider")])]),t._v(" "),r("td",[t._v("Virtual destructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Close all handles.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get incoming connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("oatpp::async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("No need to implement this."),r("br")])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-createshared"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-createshared"}},[t._v("#")]),t._v(" ConnectionProvider::createShared")]),t._v(" "),r("ol",[r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" streamProvider - provider of underlying transport stream. "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider"}},[t._v("oatpp::network::ServerConnectionProvider")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" streamProvider"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),r("li",[t._v("Create shared ConnectionProvider. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" config - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp-openssl/Config/#config"}},[t._v("oatpp::openssl::Config")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" address - "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/Address/#address"}},[t._v("oatpp::network::Address")]),t._v(". ")],1),r("li",[r("strong",[t._v("@param")]),t._v(" useExtendedConnections - set "),r("code",[t._v("true")]),t._v(" to use "),r("a",{attrs:{href:"#connectionprovider-extendedconnection"}},[t._v("ConnectionProvider::ExtendedConnection")]),t._v(". "),r("code",[t._v("false")]),t._v(" to use "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/network/tcp/Connection/#connection"}},[t._v("oatpp::network::tcp::Connection")]),t._v(". ")],1),r("li",[r("strong",[t._v("@return")]),t._v(" - "),r("code",[t._v("std::shared_ptr")]),t._v(" to ConnectionProvider. ")])]),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ConnectionProvider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Config"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Address"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" address"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" useExtendedConnections "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),r("h3",{attrs:{id:"connectionprovider-connectionprovider-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider-2"}},[t._v("#")]),t._v(" ConnectionProvider::~ConnectionProvider")]),t._v(" "),r("p",[t._v("Virtual destructor.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"connectionprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),r("p",[t._v("Close all handles.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),r("p",[t._v("Get incoming connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"connectionprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),r("p",[t._v("No need to implement this."),r("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),r("br"),t._v(" "),r("em",[t._v("It may be implemented later")])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("oatpp"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/57.181ed1ea.js b/docs/.vuepress/dist/assets/js/57.181ed1ea.js deleted file mode 100644 index c249c266f..000000000 --- a/docs/.vuepress/dist/assets/js/57.181ed1ea.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{429:function(t,e,n){"use strict";n.r(e);var a=n(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connection-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-postgresql")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-postgresql/Connection.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connection"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),n("p",[t._v("Implementation of "),n("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Connection/#connection"}},[t._v("oatpp::orm::Connection")]),t._v(" for PostgreSQL.")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" orm"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Connection "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),n("h3",{attrs:{id:"methods"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),n("table",[n("thead",[n("tr",[n("th",[t._v("Return Type")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Summary")])])]),t._v(" "),n("tbody",[n("tr",[n("td",[n("code",[t._v("PGconn*")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connection-gethandle"}},[t._v("getHandle")])]),t._v(" "),n("td",[t._v("Get PostgreSQL native connection handle.")])])])]),t._v(" "),n("h3",{attrs:{id:"connection-gethandle"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection-gethandle"}},[t._v("#")]),t._v(" Connection::getHandle")]),t._v(" "),n("p",[t._v("Get PostgreSQL native connection handle. "),n("ul",[n("li",[n("strong",[t._v("@return")])])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" PGconn"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHandle")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/58.53c72c67.js b/docs/.vuepress/dist/assets/js/58.53c72c67.js deleted file mode 100644 index c4ee16431..000000000 --- a/docs/.vuepress/dist/assets/js/58.53c72c67.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{432:function(t,e,n){"use strict";n.r(e);var o=n(42),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connectionprovider-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-postgresql")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-postgresql/ConnectionProvider.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connectionprovider"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),n("p",[t._v("Connection provider.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),n("h3",{attrs:{id:"methods"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),n("table",[n("thead",[n("tr",[n("th",[t._v("Return Type")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Summary")])])]),t._v(" "),n("tbody",[n("tr",[n("td",[n("code",[t._v("[none]")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),n("td",[t._v("Constructor.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("provider::ResourceHandle")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),n("td",[t._v("Get Connection.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("async::CoroutineStarterForResult&>")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),n("td",[t._v("Get Connection in Async manner.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("void")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),n("td",[t._v("Stop provider and free associated resources.")])])])]),t._v(" "),n("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),n("p",[t._v("Constructor. "),n("ul",[n("li",[n("strong",[t._v("@param")]),t._v(" connectionString ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionString"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),n("h3",{attrs:{id:"connectionprovider-get"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),n("p",[t._v("Get Connection. "),n("ul",[n("li",[n("strong",[t._v("@return")]),t._v(" - resource. ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[t._v("provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h3",{attrs:{id:"connectionprovider-getasync"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),n("p",[t._v("Get Connection in Async manner. "),n("ul",[n("li",[n("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult of "),n("code",[t._v("Connection")]),t._v(". ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[t._v("async"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h3",{attrs:{id:"connectionprovider-stop"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),n("p",[t._v("Stop provider and free associated resources.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h2",{attrs:{id:"connectionpool"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionpool"}},[t._v("#")]),t._v(" ConnectionPool")]),t._v(" "),n("p",[n("strong",[t._v("Namespace:")]),t._v(" "),n("code",[t._v("oatpp::postgresql")])]),t._v(" "),n("p",[t._v("Connection pool. "),n("br"),t._v(" - "),n("RouterLink",{attrs:{to:"/api/latest/oatpp-postgresql/Connection/#connection"}},[t._v("oatpp::postgresql::Connection")]),t._v(". - oatpp::postgresql::ConnectionAcquisitionProxy.")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Pool"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("\n provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Connection"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ConnectionAcquisitionProxy\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" ConnectionPool\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/59.e7f5b7ff.js b/docs/.vuepress/dist/assets/js/59.e7f5b7ff.js deleted file mode 100644 index 9ee163ecd..000000000 --- a/docs/.vuepress/dist/assets/js/59.e7f5b7ff.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{430:function(t,e,s){"use strict";s.r(e);var r=s(42),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"executor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#executor-hpp"}},[t._v("#")]),t._v(" Executor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/Executor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/Executor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-postgresql")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-postgresql/Executor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"executor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#executor"}},[t._v("#")]),t._v(" Executor")]),t._v(" "),s("p",[t._v("Implementation of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/#executor"}},[t._v("oatpp::orm::Executor")]),t._v(". for PostgreSQL.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Executor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/6.5e3ae59f.js b/docs/.vuepress/dist/assets/js/6.5e3ae59f.js deleted file mode 100644 index ec92a2d0c..000000000 --- a/docs/.vuepress/dist/assets/js/6.5e3ae59f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{381:function(t,a,n){"use strict";n.r(a);var s=n(325),r={data:function(){return{users:[]}},beforeMount:function(){function t(t,a,n){s.get("https://api.github.com/users/"+a).then((function(n){var s=n.data;s.follow_addr="https://ghbtns.com/github-btn.html?user="+a+"&type=follow",t.$data.users.push(s)})).catch((function(t){console.log(t)}))}for(var a=["lganzzzo","bamkrs"],n=0;n")]),t._v(" Uuid\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/62.cdd1c99c.js b/docs/.vuepress/dist/assets/js/62.cdd1c99c.js deleted file mode 100644 index 6e3f2d515..000000000 --- a/docs/.vuepress/dist/assets/js/62.cdd1c99c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{434:function(e,t,s){"use strict";s.r(t);var a=s(42),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"deserializer-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-hpp"}},[e._v("#")]),e._v(" Deserializer.hpp"),s("seo")],1),e._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/Deserializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),s("OutboundLink")],1),s("br"),e._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/Deserializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),s("OutboundLink")],1)]),e._v(" "),s("p",[s("code",[e._v("API: latest")]),s("br"),e._v(" "),s("code",[e._v("module: oatpp-postgresql")]),s("br"),e._v(" "),s("code",[e._v('#include "oatpp-postgresql/mapping/Deserializer.hpp"')])]),e._v(" "),s("h2",{attrs:{id:"deserializer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deserializer"}},[e._v("#")]),e._v(" Deserializer")]),e._v(" "),s("p",[e._v("Mapper from PostgreSQL values to oatpp values.")]),e._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" postgresql "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Deserializer")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/63.dbd40f34.js b/docs/.vuepress/dist/assets/js/63.dbd40f34.js deleted file mode 100644 index 9301e3924..000000000 --- a/docs/.vuepress/dist/assets/js/63.dbd40f34.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{435:function(t,e,p){"use strict";p.r(e);var o=p(42),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,p=t._self._c||e;return p("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[p("h1",{attrs:{id:"oid-hpp"}},[p("a",{staticClass:"header-anchor",attrs:{href:"#oid-hpp"}},[t._v("#")]),t._v(" Oid.hpp"),p("seo")],1),t._v(" "),p("p",[p("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/Oid.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),p("OutboundLink")],1),p("br"),t._v(" "),p("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/Oid.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),p("OutboundLink")],1)]),t._v(" "),p("p",[p("code",[t._v("API: latest")]),p("br"),t._v(" "),p("code",[t._v("module: oatpp-postgresql")]),p("br"),t._v(" "),p("code",[t._v('#include "oatpp-postgresql/mapping/Oid.hpp"')])]),t._v(" "),p("p",[t._v("A copy-pasted table of postgresql OIDs.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/64.cee33c13.js b/docs/.vuepress/dist/assets/js/64.cee33c13.js deleted file mode 100644 index 8c8610a83..000000000 --- a/docs/.vuepress/dist/assets/js/64.cee33c13.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{436:function(t,e,r){"use strict";r.r(e);var p=r(42),o=Object(p.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"pgarray-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pgarray-hpp"}},[t._v("#")]),t._v(" PgArray.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/PgArray.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/PgArray.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-postgresql")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-postgresql/mapping/PgArray.hpp"')])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/65.531f971b.js b/docs/.vuepress/dist/assets/js/65.531f971b.js deleted file mode 100644 index a3224e222..000000000 --- a/docs/.vuepress/dist/assets/js/65.531f971b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{437:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"resultmapper-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-hpp"}},[t._v("#")]),t._v(" ResultMapper.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/ResultMapper.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/ResultMapper.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-postgresql")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-postgresql/mapping/ResultMapper.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"resultmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper"}},[t._v("#")]),t._v(" ResultMapper")]),t._v(" "),e("p",[t._v("Mapper from PostgreSQL result to oatpp objects.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultmapper"}},[t._v("ResultMapper")])]),t._v(" "),e("td",[t._v("Default constructor.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-setreadonerowmethod"}},[t._v("setReadOneRowMethod")])]),t._v(" "),e("td",[t._v('Set "read one row" method for class id.')])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-setreadrowsmethod"}},[t._v("setReadRowsMethod")])]),t._v(" "),e("td",[t._v('Set "read rows" method for class id.')])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-readonerow"}},[t._v("readOneRow")])]),t._v(" "),e("td",[t._v("Read one row to oatpp object or collection. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::Void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-readrows"}},[t._v("readRows")])]),t._v(" "),e("td",[t._v("Read "),e("code",[t._v("count")]),t._v(" of rows to oatpp collection. "),e("br")])])])]),t._v(" "),e("h3",{attrs:{id:"resultmapper-resultmapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultmapper"}},[t._v("#")]),t._v(" ResultMapper::ResultMapper")]),t._v(" "),e("p",[t._v("Default constructor.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResultMapper")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"resultmapper-setreadonerowmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-setreadonerowmethod"}},[t._v("#")]),t._v(" ResultMapper::setReadOneRowMethod")]),t._v(" "),e("p",[t._v('Set "read one row" method for class id. '),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" classId ")]),e("li",[e("strong",[t._v("@param")]),t._v(" method ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setReadOneRowMethod")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ReadOneRowMethod method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"resultmapper-setreadrowsmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-setreadrowsmethod"}},[t._v("#")]),t._v(" ResultMapper::setReadRowsMethod")]),t._v(" "),e("p",[t._v('Set "read rows" method for class id. '),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" classId ")]),e("li",[e("strong",[t._v("@param")]),t._v(" method ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setReadRowsMethod")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ReadRowsMethod method"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"resultmapper-readonerow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-readonerow"}},[t._v("#")]),t._v(" ResultMapper::readOneRow")]),t._v(" "),e("p",[t._v("Read one row to oatpp object or collection. "),e("br"),t._v(" Allowed output type classes are: - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#vector"}},[t._v("oatpp::Vector")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#list"}},[t._v("oatpp::List")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedset"}},[t._v("oatpp::UnorderedSet")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#fields"}},[t._v("oatpp::Fields")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedfields"}},[t._v("oatpp::UnorderedFields")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#object"}},[t._v("oatpp::Object")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" dbData ")]),e("li",[e("strong",[t._v("@param")]),t._v(" type ")]),e("li",[e("strong",[t._v("@return")])])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readOneRow")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ResultData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" dbData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 rowIndex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"resultmapper-readrows"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-readrows"}},[t._v("#")]),t._v(" ResultMapper::readRows")]),t._v(" "),e("p",[t._v("Read "),e("code",[t._v("count")]),t._v(" of rows to oatpp collection. "),e("br"),t._v(" Allowed collections to store rows are: - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#vector"}},[t._v("oatpp::Vector")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#list"}},[t._v("oatpp::List")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedset"}},[t._v("oatpp::UnorderedSet")]),t._v(". "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" dbData ")]),e("li",[e("strong",[t._v("@param")]),t._v(" type ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count ")]),e("li",[e("strong",[t._v("@return")])])])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("readRows")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ResultData"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" dbData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"resultmapper-resultdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata"}},[t._v("#")]),t._v(" ResultMapper::ResultData")]),t._v(" "),e("p",[t._v("Result data.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultMapper")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultData")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("PGresult*")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-dbresult"}},[t._v("dbResult")])]),t._v(" "),e("td",[t._v("PGResult.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-typeresolver"}},[t._v("typeResolver")])]),t._v(" "),e("td",[e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/#typeresolver"}},[t._v("oatpp::data::mapping::TypeResolver")]),t._v(".")],1)]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::vector")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-colnames"}},[t._v("colNames")])]),t._v(" "),e("td",[t._v("Column names.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("std::unordered_map")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-colindices"}},[t._v("colIndices")])]),t._v(" "),e("td",[t._v("Column indices.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-colcount"}},[t._v("colCount")])]),t._v(" "),e("td",[t._v("Column count.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-rowindex"}},[t._v("rowIndex")])]),t._v(" "),e("td",[t._v("Current row index.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-rowcount"}},[t._v("rowCount")])]),t._v(" "),e("td",[t._v("Row count.")])])])]),t._v(" "),e("h3",{attrs:{id:"methods-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#resultmapper-resultdata-resultdata"}},[t._v("ResultData")])]),t._v(" "),e("td",[t._v("Constructor.")])])])]),t._v(" "),e("h3",{attrs:{id:"resultmapper-resultdata-dbresult"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-dbresult"}},[t._v("#")]),t._v(" ResultMapper::ResultData::dbResult")]),t._v(" "),e("p",[t._v("PGResult.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("PGresult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" dbResult\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-typeresolver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-typeresolver"}},[t._v("#")]),t._v(" ResultMapper::ResultData::typeResolver")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/#typeresolver"}},[t._v("oatpp::data::mapping::TypeResolver")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" typeResolver\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-colnames"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colnames"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colNames")]),t._v(" "),e("p",[t._v("Column names.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" colNames\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-colindices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colindices"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colIndices")]),t._v(" "),e("p",[t._v("Column indices.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" colIndices\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-colcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colcount"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colCount")]),t._v(" "),e("p",[t._v("Column count.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 colCount\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-rowindex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-rowindex"}},[t._v("#")]),t._v(" ResultMapper::ResultData::rowIndex")]),t._v(" "),e("p",[t._v("Current row index.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 rowIndex\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-rowcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-rowcount"}},[t._v("#")]),t._v(" ResultMapper::ResultData::rowCount")]),t._v(" "),e("p",[t._v("Row count.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_int64 rowCount\n")])])]),e("h3",{attrs:{id:"resultmapper-resultdata-resultdata"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-resultdata"}},[t._v("#")]),t._v(" ResultMapper::ResultData::ResultData")]),t._v(" "),e("p",[t._v("Constructor. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" pDbResult ")]),e("li",[e("strong",[t._v("@param")]),t._v(" pTypeResolver ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResultData")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("PGresult"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pDbResult"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pTypeResolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/66.5da03a97.js b/docs/.vuepress/dist/assets/js/66.5da03a97.js deleted file mode 100644 index a07512de8..000000000 --- a/docs/.vuepress/dist/assets/js/66.5da03a97.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{438:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"serializer-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#serializer-hpp"}},[t._v("#")]),t._v(" Serializer.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/Serializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/Serializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-postgresql")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-postgresql/mapping/Serializer.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"serializer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#serializer"}},[t._v("#")]),t._v(" Serializer")]),t._v(" "),s("p",[t._v("Mapper of oatpp values to PostgreSQL values.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Serializer")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/67.7f43a2fa.js b/docs/.vuepress/dist/assets/js/67.7f43a2fa.js deleted file mode 100644 index 8d84e5c95..000000000 --- a/docs/.vuepress/dist/assets/js/67.7f43a2fa.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{439:function(t,e,p){"use strict";p.r(e);var s=p(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,p=t._self._c||e;return p("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[p("h1",{attrs:{id:"uuid-hpp"}},[p("a",{staticClass:"header-anchor",attrs:{href:"#uuid-hpp"}},[t._v("#")]),t._v(" Uuid.hpp"),p("seo")],1),t._v(" "),p("p",[p("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/mapping/type/Uuid.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),p("OutboundLink")],1),p("br"),t._v(" "),p("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/mapping/type/Uuid.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),p("OutboundLink")],1)]),t._v(" "),p("p",[p("code",[t._v("API: latest")]),p("br"),t._v(" "),p("code",[t._v("module: oatpp-postgresql")]),p("br"),t._v(" "),p("code",[t._v('#include "oatpp-postgresql/mapping/type/Uuid.hpp"')])]),t._v(" "),p("h2",{attrs:{id:"uuid"}},[p("a",{staticClass:"header-anchor",attrs:{href:"#uuid"}},[t._v("#")]),t._v(" Uuid")]),t._v(" "),p("p",[p("strong",[t._v("Namespace:")]),t._v(" "),p("code",[t._v("oatpp::postgresql::mapping::type")])]),t._v(" "),p("p",[t._v("UUID type to store UUID data.")]),t._v(" "),p("div",{staticClass:"language-cpp extra-class"},[p("pre",{pre:!0,attrs:{class:"language-cpp"}},[p("code",[p("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Primitive"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("UuidObject"),p("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Uuid"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Uuid\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/68.608e4382.js b/docs/.vuepress/dist/assets/js/68.608e4382.js deleted file mode 100644 index 8836b781e..000000000 --- a/docs/.vuepress/dist/assets/js/68.608e4382.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{440:function(t,e,s){"use strict";s.r(e);var r=s(42),p=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"orm-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orm-hpp"}},[t._v("#")]),t._v(" orm.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/orm.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/orm.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-postgresql")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-postgresql/orm.hpp"')])]),t._v(" "),s("p",[t._v("This is just a header file which includes all oatpp-postgresql components:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Executor.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Types.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/SchemaMigration.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/DbClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/69.8133e7c7.js b/docs/.vuepress/dist/assets/js/69.8133e7c7.js deleted file mode 100644 index 9581e0574..000000000 --- a/docs/.vuepress/dist/assets/js/69.8133e7c7.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{441:function(t,a,e){"use strict";e.r(a);var r=e(42),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"parser-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-hpp"}},[t._v("#")]),t._v(" Parser.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/ql_template/Parser.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/ql_template/Parser.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-postgresql")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-postgresql/ql_template/Parser.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"parser"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser"}},[t._v("#")]),t._v(" Parser")]),t._v(" "),e("p",[t._v("Query template parser.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-preprocess"}},[t._v("preprocess")])]),t._v(" "),e("td",[t._v("Preprocess text.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("data::share::StringTemplate")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-parsetemplate"}},[t._v("parseTemplate")])]),t._v(" "),e("td",[t._v("Parse query template.")])])])]),t._v(" "),e("h3",{attrs:{id:"parser-preprocess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-preprocess"}},[t._v("#")]),t._v(" Parser::preprocess")]),t._v(" "),e("p",[t._v("Preprocess text. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" text ")]),e("li",[e("strong",[t._v("@param")]),t._v(" cleanSections - out vector of clean sections. ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("preprocess")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CleanSection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cleanSections"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"parser-parsetemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-parsetemplate"}},[t._v("#")]),t._v(" Parser::parseTemplate")]),t._v(" "),e("p",[t._v("Parse query template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" text ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate"}},[t._v("oatpp::data::share::StringTemplate")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"parser-templateextra"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra"}},[t._v("#")]),t._v(" Parser::TemplateExtra")]),t._v(" "),e("p",[t._v("Query template extra info.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TemplateExtra")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-templatename"}},[t._v("templateName")])]),t._v(" "),e("td",[t._v("Query template name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-preparedtemplate"}},[t._v("preparedTemplate")])]),t._v(" "),e("td",[t._v("Template text with parameters substituted to SQLite parameter placeholders.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("orm::Executor::ParamsTypeMap")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-paramstypemap"}},[t._v("paramsTypeMap")])]),t._v(" "),e("td",[t._v("Parameter type map.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-prepare"}},[t._v("prepare")])]),t._v(" "),e("td",[t._v("Use prepared statement for this query.")])])])]),t._v(" "),e("h3",{attrs:{id:"parser-templateextra-templatename"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-templatename"}},[t._v("#")]),t._v(" Parser::TemplateExtra::templateName")]),t._v(" "),e("p",[t._v("Query template name.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String templateName\n")])])]),e("h3",{attrs:{id:"parser-templateextra-preparedtemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-preparedtemplate"}},[t._v("#")]),t._v(" Parser::TemplateExtra::preparedTemplate")]),t._v(" "),e("p",[t._v("Template text with parameters substituted to SQLite parameter placeholders.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String preparedTemplate\n")])])]),e("h3",{attrs:{id:"parser-templateextra-paramstypemap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-paramstypemap"}},[t._v("#")]),t._v(" Parser::TemplateExtra::paramsTypeMap")]),t._v(" "),e("p",[t._v("Parameter type map.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("orm"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ParamsTypeMap paramsTypeMap\n")])])]),e("h3",{attrs:{id:"parser-templateextra-prepare"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-prepare"}},[t._v("#")]),t._v(" Parser::TemplateExtra::prepare")]),t._v(" "),e("p",[t._v("Use prepared statement for this query.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" prepare\n")])])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/7.a7c042c4.js b/docs/.vuepress/dist/assets/js/7.a7c042c4.js deleted file mode 100644 index 315b9b7b6..000000000 --- a/docs/.vuepress/dist/assets/js/7.a7c042c4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{380:function(t,e,n){"use strict";n.r(e);var s={created:function(){if(void 0!==this.$ssrContext){var t="https://oatpp.io"+"".concat(this.$page.path);this.$ssrContext.userHeadTags+=""}}},a=n(42),i=Object(a.a)(s,(function(){var t=this.$createElement;return(this._self._c||t)("div")}),[],!1,null,"4414e9e8",null);e.default=i.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/70.740e8ffe.js b/docs/.vuepress/dist/assets/js/70.740e8ffe.js deleted file mode 100644 index e22022379..000000000 --- a/docs/.vuepress/dist/assets/js/70.740e8ffe.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{442:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"templatevalueprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#templatevalueprovider-hpp"}},[t._v("#")]),t._v(" TemplateValueProvider.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/blob/master/src/oatpp-postgresql/ql_template/TemplateValueProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-postgresql/issues/new?title=API%20question&body=In%20file:%20oatpp-postgresql/ql_template/TemplateValueProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-postgresql")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-postgresql/ql_template/TemplateValueProvider.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"templatevalueprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#templatevalueprovider"}},[t._v("#")]),t._v(" TemplateValueProvider")]),t._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate-valueprovider"}},[t._v("oatpp::data::share::StringTemplate::ValueProvider")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" postgresql "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TemplateValueProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ValueProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/71.359a2382.js b/docs/.vuepress/dist/assets/js/71.359a2382.js deleted file mode 100644 index 44771f8af..000000000 --- a/docs/.vuepress/dist/assets/js/71.359a2382.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{443:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"object-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object-hpp"}},[t._v("#")]),t._v(" Object.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/blob/master/src/oatpp-protobuf/Object.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/issues/new?title=API%20question&body=In%20file:%20oatpp-protobuf/Object.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-protobuf")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-protobuf/Object.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"abstractobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#abstractobject"}},[t._v("#")]),t._v(" AbstractObject")]),t._v(" "),s("p",[t._v("Abstract proto object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protobuf "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AbstractObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"object"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#object"}},[t._v("#")]),t._v(" Object")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::protobuf")])]),t._v(" "),s("p",[t._v("Proto object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" Object "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("T"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/72.f8c8a0e8.js b/docs/.vuepress/dist/assets/js/72.f8c8a0e8.js deleted file mode 100644 index 697b1edab..000000000 --- a/docs/.vuepress/dist/assets/js/72.f8c8a0e8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{444:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"dynamicobject-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicobject-hpp"}},[t._v("#")]),t._v(" DynamicObject.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/blob/master/src/oatpp-protobuf/reflection/DynamicObject.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/issues/new?title=API%20question&body=In%20file:%20oatpp-protobuf/reflection/DynamicObject.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-protobuf")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-protobuf/reflection/DynamicObject.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"dynamicclass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass"}},[t._v("#")]),t._v(" DynamicClass")]),t._v(" "),s("p",[t._v("A dynamic class that will be automatically generated for the proto object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protobuf "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" reflection "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DynamicClass")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("DynamicClass*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicclass-registrygetclass"}},[t._v("registryGetClass")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Get class by name of the proto object type. ")]),s("li",[t._v("Get class for proto object type. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const std::string")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicclass-getname"}},[t._v("getName")])]),t._v(" "),s("td",[t._v("Get class name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicclass-createproto"}},[t._v("createProto")])]),t._v(" "),s("td",[t._v("Instantiate shared proto object.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const oatpp::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicclass-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(" of this class.")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("const oatpp::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicclass-getvectortype"}},[t._v("getVectorType")])]),t._v(" "),s("td",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(" of "),s("code",[t._v("oatpp::Vector")])],1)])])]),t._v(" "),s("h3",{attrs:{id:"dynamicclass-registrygetclass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-registrygetclass"}},[t._v("#")]),t._v(" DynamicClass::registryGetClass")]),t._v(" "),s("ol",[s("li",[t._v("Get class by name of the proto object type. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" name ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" DynamicClass"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("registryGetClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Get class for proto object type. "),s("ul",[s("li",[s("strong",[t._v("@tparam")]),t._v(" T ")]),s("li",[s("strong",[t._v("@return")])])]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("T")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" DynamicClass"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("registryGetClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"dynamicclass-getname"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-getname"}},[t._v("#")]),t._v(" DynamicClass::getName")]),t._v(" "),s("p",[t._v("Get class name. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"dynamicclass-createproto"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-createproto"}},[t._v("#")]),t._v(" DynamicClass::createProto")]),t._v(" "),s("p",[t._v("Instantiate shared proto object. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Message"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createProto")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])]),s("h3",{attrs:{id:"dynamicclass-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-gettype"}},[t._v("#")]),t._v(" DynamicClass::getType")]),t._v(" "),s("p",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(" of this class. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"dynamicclass-getvectortype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-getvectortype"}},[t._v("#")]),t._v(" DynamicClass::getVectorType")]),t._v(" "),s("p",[t._v("Get "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#type"}},[t._v("oatpp::Type")]),t._v(" of "),s("code",[t._v("oatpp::Vector")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@return")])])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getVectorType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"dynamicclass-polymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-polymorphicdispatcher"}},[t._v("#")]),t._v(" DynamicClass::PolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Polymorphic Dispatcher")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protobuf "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" reflection "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DynamicClass")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PolymorphicDispatcher")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("__class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AbstractObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PolymorphicDispatcher "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"dynamicclass-vectorpolymorphicdispatcher"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicclass-vectorpolymorphicdispatcher"}},[t._v("#")]),t._v(" DynamicClass::VectorPolymorphicDispatcher")]),t._v(" "),s("p",[t._v("Vector Polymorphic Dispatcher")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protobuf "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" reflection "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DynamicClass")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("VectorPolymorphicDispatcher")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("__class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("AbstractVector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("PolymorphicDispatcher "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"dynamicobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicobject"}},[t._v("#")]),t._v(" DynamicObject")]),t._v(" "),s("p",[t._v("A dynamic oatpp object that will be created from the proto object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" protobuf "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" reflection "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DynamicObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("BaseObject "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicobject-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("DynamicClass*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#dynamicobject-getclass"}},[t._v("getClass")])]),t._v(" "),s("td",[t._v("Get a "),s("a",{attrs:{href:"#dynamicclass"}},[t._v("DynamicClass")]),t._v(" of this object.")])])])]),t._v(" "),s("h3",{attrs:{id:"dynamicobject-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicobject-createshared"}},[t._v("#")]),t._v(" DynamicObject::createShared")]),t._v(" "),s("p",[t._v("Create shared. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" proto ")]),s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DynamicObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Message"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" proto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"dynamicobject-getclass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicobject-getclass"}},[t._v("#")]),t._v(" DynamicObject::getClass")]),t._v(" "),s("p",[t._v("Get a "),s("a",{attrs:{href:"#dynamicclass"}},[t._v("DynamicClass")]),t._v(" of this object. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("DynamicClass"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/73.35664005.js b/docs/.vuepress/dist/assets/js/73.35664005.js deleted file mode 100644 index 7127d2912..000000000 --- a/docs/.vuepress/dist/assets/js/73.35664005.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{445:function(t,e,o){"use strict";o.r(e);var r=o(42),p=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"utils-hpp"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#utils-hpp"}},[t._v("#")]),t._v(" Utils.hpp"),o("seo")],1),t._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/blob/master/src/oatpp-protobuf/reflection/Utils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),o("OutboundLink")],1),o("br"),t._v(" "),o("a",{attrs:{href:"https://github.com/oatpp/oatpp-protobuf/issues/new?title=API%20question&body=In%20file:%20oatpp-protobuf/reflection/Utils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),o("OutboundLink")],1)]),t._v(" "),o("p",[o("code",[t._v("API: latest")]),o("br"),t._v(" "),o("code",[t._v("module: oatpp-protobuf")]),o("br"),t._v(" "),o("code",[t._v('#include "oatpp-protobuf/reflection/Utils.hpp"')])])])}),[],!1,null,null,null);e.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/74.baa84873.js b/docs/.vuepress/dist/assets/js/74.baa84873.js deleted file mode 100644 index 7d94c2622..000000000 --- a/docs/.vuepress/dist/assets/js/74.baa84873.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{446:function(t,e,n){"use strict";n.r(e);var a=n(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connection-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection-hpp"}},[t._v("#")]),t._v(" Connection.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/Connection.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/Connection.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-sqlite")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-sqlite/Connection.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connection"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection"}},[t._v("#")]),t._v(" Connection")]),t._v(" "),n("p",[t._v("Implementation of "),n("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Connection/#connection"}},[t._v("oatpp::orm::Connection")]),t._v(" for SQLite.")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Connection")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" orm"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Connection "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),n("h3",{attrs:{id:"methods"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),n("table",[n("thead",[n("tr",[n("th",[t._v("Return Type")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Summary")])])]),t._v(" "),n("tbody",[n("tr",[n("td",[n("code",[t._v("sqlite3*")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connection-gethandle"}},[t._v("getHandle")])]),t._v(" "),n("td",[t._v("Get SQLite native connection handle.")])])])]),t._v(" "),n("h3",{attrs:{id:"connection-gethandle"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connection-gethandle"}},[t._v("#")]),t._v(" Connection::getHandle")]),t._v(" "),n("p",[t._v("Get SQLite native connection handle. "),n("ul",[n("li",[n("strong",[t._v("@return")])])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("virtual")]),t._v(" sqlite3"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHandle")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/75.f7d31c83.js b/docs/.vuepress/dist/assets/js/75.f7d31c83.js deleted file mode 100644 index 9496ba189..000000000 --- a/docs/.vuepress/dist/assets/js/75.f7d31c83.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{447:function(t,e,n){"use strict";n.r(e);var o=n(42),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"connectionprovider-hpp"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-hpp"}},[t._v("#")]),t._v(" ConnectionProvider.hpp"),n("seo")],1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/ConnectionProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),n("OutboundLink")],1),n("br"),t._v(" "),n("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/ConnectionProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),n("OutboundLink")],1)]),t._v(" "),n("p",[n("code",[t._v("API: latest")]),n("br"),t._v(" "),n("code",[t._v("module: oatpp-sqlite")]),n("br"),t._v(" "),n("code",[t._v('#include "oatpp-sqlite/ConnectionProvider.hpp"')])]),t._v(" "),n("h2",{attrs:{id:"connectionprovider"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider")]),t._v(" "),n("p",[t._v("Connection provider.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ConnectionProvider")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),n("h3",{attrs:{id:"methods"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),n("table",[n("thead",[n("tr",[n("th",[t._v("Return Type")]),t._v(" "),n("th",[t._v("Name")]),t._v(" "),n("th",[t._v("Summary")])])]),t._v(" "),n("tbody",[n("tr",[n("td",[n("code",[t._v("[none]")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("ConnectionProvider")])]),t._v(" "),n("td",[t._v("Constructor.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("provider::ResourceHandle")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-get"}},[t._v("get")])]),t._v(" "),n("td",[t._v("Get Connection.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("async::CoroutineStarterForResult&>")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),n("td",[t._v("Get Connection in Async manner.")])]),t._v(" "),n("tr",[n("td",[n("code",[t._v("void")])]),t._v(" "),n("td",[n("a",{attrs:{href:"#connectionprovider-stop"}},[t._v("stop")])]),t._v(" "),n("td",[t._v("Stop provider and free associated resources.")])])])]),t._v(" "),n("h3",{attrs:{id:"connectionprovider-connectionprovider"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-connectionprovider"}},[t._v("#")]),t._v(" ConnectionProvider::ConnectionProvider")]),t._v(" "),n("p",[t._v("Constructor. "),n("ul",[n("li",[n("strong",[t._v("@param")]),t._v(" connectionString ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConnectionProvider")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connectionString"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),n("h3",{attrs:{id:"connectionprovider-get"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-get"}},[t._v("#")]),t._v(" ConnectionProvider::get")]),t._v(" "),n("p",[t._v("Get Connection. "),n("ul",[n("li",[n("strong",[t._v("@return")]),t._v(" - resource. ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[t._v("provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h3",{attrs:{id:"connectionprovider-getasync"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-getasync"}},[t._v("#")]),t._v(" ConnectionProvider::getAsync")]),t._v(" "),n("p",[t._v("Get Connection in Async manner. "),n("ul",[n("li",[n("strong",[t._v("@return")]),t._v(" - oatpp::async::CoroutineStarterForResult of "),n("code",[t._v("Connection")]),t._v(". ")])])]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[t._v("async"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h3",{attrs:{id:"connectionprovider-stop"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionprovider-stop"}},[t._v("#")]),t._v(" ConnectionProvider::stop")]),t._v(" "),n("p",[t._v("Stop provider and free associated resources.")]),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),n("h2",{attrs:{id:"connectionpool"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#connectionpool"}},[t._v("#")]),t._v(" ConnectionPool")]),t._v(" "),n("p",[n("strong",[t._v("Namespace:")]),t._v(" "),n("code",[t._v("oatpp::sqlite")])]),t._v(" "),n("p",[t._v("Connection pool. "),n("br"),t._v(" - "),n("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Connection/#connection"}},[t._v("oatpp::sqlite::Connection")]),t._v(". - oatpp::sqlite::ConnectionAcquisitionProxy.")],1),t._v(" "),n("div",{staticClass:"language-cpp extra-class"},[n("pre",{pre:!0,attrs:{class:"language-cpp"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Pool"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("\n provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Provider"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Connection"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Connection"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ConnectionAcquisitionProxy\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" ConnectionPool\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/76.0760c053.js b/docs/.vuepress/dist/assets/js/76.0760c053.js deleted file mode 100644 index 59e59bd7d..000000000 --- a/docs/.vuepress/dist/assets/js/76.0760c053.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{448:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"executor-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#executor-hpp"}},[t._v("#")]),t._v(" Executor.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/Executor.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/Executor.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-sqlite")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-sqlite/Executor.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"executor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#executor"}},[t._v("#")]),t._v(" Executor")]),t._v(" "),s("p",[t._v("Implementation of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/Executor/#executor"}},[t._v("oatpp::orm::Executor")]),t._v(". for SQLite.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Executor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Executor "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/77.a03b71bd.js b/docs/.vuepress/dist/assets/js/77.a03b71bd.js deleted file mode 100644 index b1cc5fbef..000000000 --- a/docs/.vuepress/dist/assets/js/77.a03b71bd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{449:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"queryresult-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queryresult-hpp"}},[t._v("#")]),t._v(" QueryResult.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/QueryResult.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/QueryResult.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-sqlite")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-sqlite/QueryResult.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"queryresult"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queryresult"}},[t._v("#")]),t._v(" QueryResult")]),t._v(" "),s("p",[t._v("Implementation of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/orm/QueryResult/#queryresult"}},[t._v("oatpp::orm::QueryResult")]),t._v(". for SQLite.")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("QueryResult")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" orm"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("QueryResult "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/78.6ce094f7.js b/docs/.vuepress/dist/assets/js/78.6ce094f7.js deleted file mode 100644 index 2fa71da07..000000000 --- a/docs/.vuepress/dist/assets/js/78.6ce094f7.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{450:function(t,e,p){"use strict";p.r(e);var s=p(42),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,p=t._self._c||e;return p("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[p("h1",{attrs:{id:"types-hpp"}},[p("a",{staticClass:"header-anchor",attrs:{href:"#types-hpp"}},[t._v("#")]),t._v(" Types.hpp"),p("seo")],1),t._v(" "),p("p",[p("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/Types.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),p("OutboundLink")],1),p("br"),t._v(" "),p("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/Types.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),p("OutboundLink")],1)]),t._v(" "),p("p",[p("code",[t._v("API: latest")]),p("br"),t._v(" "),p("code",[t._v("module: oatpp-sqlite")]),p("br"),t._v(" "),p("code",[t._v('#include "oatpp-sqlite/Types.hpp"')])]),t._v(" "),p("h2",{attrs:{id:"blob"}},[p("a",{staticClass:"header-anchor",attrs:{href:"#blob"}},[t._v("#")]),t._v(" Blob")]),t._v(" "),p("p",[p("strong",[t._v("Namespace:")]),t._v(" "),p("code",[t._v("oatpp::sqlite")])]),t._v(" "),p("p",[t._v("Convenience typedef for "),p("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/mapping/type/Blob/#blob"}},[t._v("oatpp::sqlite::mapping::type::Blob")]),t._v(".")],1),t._v(" "),p("div",{staticClass:"language-cpp extra-class"},[p("pre",{pre:!0,attrs:{class:"language-cpp"}},[p("code",[p("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" mapping"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),p("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Blob Blob\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/79.12c31010.js b/docs/.vuepress/dist/assets/js/79.12c31010.js deleted file mode 100644 index 244d35e92..000000000 --- a/docs/.vuepress/dist/assets/js/79.12c31010.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{451:function(t,s,e){"use strict";e.r(s);var a=e(42),n=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"utils-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#utils-hpp"}},[t._v("#")]),t._v(" Utils.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/Utils.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/Utils.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-sqlite")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-sqlite/Utils.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"utils"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[t._v("#")]),t._v(" Utils")]),t._v(" "),e("p",[t._v("Util methods.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Utils")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("v_int64")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#utils-getlastinsertrowid"}},[t._v("getLastInsertRowId")])]),t._v(" "),e("td",[t._v("Get row id following the last insert operation on the connection.")])])])]),t._v(" "),e("h3",{attrs:{id:"utils-getlastinsertrowid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#utils-getlastinsertrowid"}},[t._v("#")]),t._v(" Utils::getLastInsertRowId")]),t._v(" "),e("p",[t._v("Get row id following the last insert operation on the connection. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" connection - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-sqlite/Connection/#connection"}},[t._v("oatpp::sqlite::Connection")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" v_int64 "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getLastInsertRowId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("orm"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Connection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/8.04b8a29e.js b/docs/.vuepress/dist/assets/js/8.04b8a29e.js deleted file mode 100644 index 8a8b02464..000000000 --- a/docs/.vuepress/dist/assets/js/8.04b8a29e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{379:function(T,M,N){"use strict";N.r(M);var R={data:function(){return{users:[{name:"OpenEye Scientific Software",logo:"https://www.eyesopen.com/hubfs/2016/07/openeye-logo.svg",website:"https://www.eyesopen.com/"},{name:"Legrand",logo:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNjFweCIgaGVpZ2h0PSI4MXB4IiB2aWV3Qm94PSItMC41IC0wLjUgMTYxIDgxIj48ZGVmcy8+PGc+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4MCIgZmlsbD0iI2VkNDEzZCIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGltYWdlIHg9IjE2LjUiIHk9IjIzLjUiIHdpZHRoPSIxMzIiIGhlaWdodD0iMzMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T21OalBTSm9kSFJ3T2k4dlkzSmxZWFJwZG1WamIyMXRiMjV6TG05eVp5OXVjeU1pSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQnBaRDBpYzNabk9EUWlJSFpsY25OcGIyNDlJakV1TVNJZ2RtbGxkMEp2ZUQwaU1DQXdJRE14TGpVNE5URTJOU0EzTGpjeU56TTNNekVpSUdobGFXZG9kRDBpTnk0M01qY3pOek14YlcwaUlIZHBaSFJvUFNJek1TNDFPRFV4TmpWdGJTSStKaU40WVRzZ0lEeGtaV1p6SUdsa1BTSmtaV1p6TnpnaUx6NG1JM2hoT3lBZ1BHMWxkR0ZrWVhSaElHbGtQU0p0WlhSaFpHRjBZVGd4SWo0bUkzaGhPeUFnSUNBOGNtUm1PbEpFUmo0bUkzaGhPeUFnSUNBZ0lEeGpZenBYYjNKcklISmtaanBoWW05MWREMGlJajRtSTNoaE95QWdJQ0FnSUNBZ1BHUmpPbVp2Y20xaGRENXBiV0ZuWlM5emRtY3JlRzFzUEM5a1l6cG1iM0p0WVhRK0ppTjRZVHNnSUNBZ0lDQWdJRHhrWXpwMGVYQmxJSEprWmpweVpYTnZkWEpqWlQwaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyUmpiV2wwZVhCbEwxTjBhV3hzU1cxaFoyVWlMejRtSTNoaE95QWdJQ0FnSUNBZ1BHUmpPblJwZEd4bEx6NG1JM2hoT3lBZ0lDQWdJRHd2WTJNNlYyOXlhejRtSTNoaE95QWdJQ0E4TDNKa1pqcFNSRVkrSmlONFlUc2dJRHd2YldWMFlXUmhkR0UrSmlONFlUc2dJRHhuSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtDMDJOQzR6TXpnek55d3ROVE11TlRnNE5qZzJLU0lnYVdROUlteGhlV1Z5TVNJK0ppTjRZVHNnSUNBZ1BIQmhkR2dnYzNSNWJHVTlJbk4wY205clpTMTNhV1IwYURvd0xqSTJORFU0TXlJZ1ptbHNiRDBpSTBZM1JqZEdOeUlnWkQwaWJTQTRNQzQ0TXpFME16Y3NOVFV1TXprd01qVXhJSFlnTkM0MU1EZzNOalFnWXlBdE1DNHhOekF4TWpjc01TNDVOVFUxTXpZZ0xUTXVPREE0T1RReUxERXVPRGMwTlRjMElDMDBMakV4TnpRME5pd3RNQzR4TmpVek5qUWdhQ0F4TGpRNE1qY3lOU0JqSURBc01DQXdMakV5TkRNMU5Dd3dMak0zTURrME5pQXdMamN4TWpJMU9Dd3dMak01TmpNME5pQm9JREF1TURFNU1EVWdZeUF3TGpFd09UZ3dNaXd0TUM0d01ERXpJREF1TmpVNU5qQTJMQzB3TGpBek1qVTBJREF1TmpZeU5URTNMQzB3TGpVeE9UTTNOeUIySUMwd0xqUTRNVGd3TnlCaklDMHdMamM0TXpZNU5pd3dMalk1TkRVek1pQXRNaTQzTVRBeE1qY3NNQzR4TlRVek1URWdMVEl1Tnpjek9Ea3lMQzB4TGpZek16Z3dNaUF0TUM0d05qZzNPU3d0TVM0NU1UUXlOaUF4TGpreU1qazVNaXd0TWk0MU1qZ3pOVGdnTWk0M056TTRPVElzTFRFdU5qYzVOVGMxSUZZZ05UVXVNemt3TWpVeElGb2dUU0EyTnk0M09UQXhNalFzTlRjdU56ZzBOek1nZGlBeExqZzRNemd6TXlCSUlEWTNMalExTVRrNE55QldJRFUzTGpjNE5EY3pJR2dnTUM0ek16YzJNRGdnZWlCdElEWXVPRFEzTkRFM0xDMHlMalUwTXpFM05TQmpJREV1TVRneE1Td3dJREl1TVRZM01qQXlMREV1TURJMU1qWWdNaTR3TVRZeE1qVXNNaTQxTXpFeU5qa2diQ0F0TWk0Mk9EQXlNamtzTUM0d01ERXhJR01nTUN3d0xqTTBNak0zSURBdU1qUTJNekkzTERBdU5qZzFNamNnTUM0M01UazJOallzTUM0Mk9EVXlOeUF3TGpNM016QTJNeXd3SURBdU5UVXpOVEE1TEMwd0xqRTFNREF4T0NBd0xqWXhPRFU1Tml3dE1DNHlPREEwTlRnZ2FDQXhMakkyTnpNMU5DQmpJQzB3TGpJek16TTJNaXd3TGpneE16ZzFOeUF0TUM0NE56YzRPRGNzTVM0ek9UQXhNVGtnTFRFdU9EQTNOak16TERFdU5ERTROamswSUMweExqSXhNekV4TlN3d0xqQXpOekEwSUMweUxqRXpNekEzTVN3dE1DNDRNRE13TVNBdE1pNHhNelF4TWprc0xUSXVNalV4TmpBMElDMDNMamswWlMwMExDMHhMakk0T0RJMU5pQXdMams0T0RRNE15d3RNaTR4TURReU16RWdNaTR3TURBeU5Td3RNaTR4TURReU16RWdlaUJ0SURFNUxqVTFNRGcxTml3dE1TNHpORFl5SUhZZ05TNDFPREkzTURnZ2FDQXRNUzR5T0RNM05UZ2dkaUF0TUM0ek5EWTROamdnWXlBdE1DNHlNakF6T1Rnc01DNHhOekF6T1RFZ0xUQXVORFF5TVRFNUxEQXVNamN4TVRrM0lDMHdMamN3T0RVMU5Dd3dMakk1T1RjM01pQXRNUzR4TXpBekxEQXVNRGc0TVRFZ0xURXVPRGc1T1RFNUxDMHdMamd6T1RJMU9DQXRNUzQ0T0RFeE9EZ3NMVEV1T1RjeU1qQTBJREFzTFRBdU9EWTFOekUySURBdU5UWTFOREUxTEMweExqazJPVEk1TXlBeExqZzVNak1zTFRFdU9UTTNNamM1SURBc01DQXdMalF6TWpnMU9Dd3dMakF6TlRjeUlEQXVOamszTkRReUxEQXVNakkyTWpFNUlIWWdMVEV1T0RVeU16UTRJSG9nYlNBdE5pNHpNREV6TVRjc01TNDBPVFkwT0RNZ2RpQXdMak00TkRjd05DQmpJREV1TXpjME1qUTJMQzB3TGpnM09EUXhOaUF5TGpFNU16TTVOaXd3TGpBeU9EVTRJREl1TVRrek16azJMREF1TmpReU9UTTRJSFlnTXk0d05UZzFPRE1nYUNBdE1TNHlORGs0T1RFZ2RpQXRNaTQwTURnM05qWWdZeUF3TEMwd0xqWXlNVGMzTVNBdE1DNDVORE0xTURVc0xUQXVOVGd5T0RjM0lDMHdMamswTXpVd05Td3dJSFlnTWk0ME1EZzNOallnYUNBdE1TNHlOekU0TlRJZ2RpQXROQzR3T0RZeU1qVWdlaUJ0SUMwMExqSTBNakEyTkN3dE1DNHdOamt6TWlCMklEQXVPVGcwTnpjNUlHTWdNQ3d3SUMweExqRTJOemczTVN3d0xqQTJOVGc0SUMweExqRTNOek01Tml3eExqQTROak00SUhZZ01pNHdPRFF6T0RjZ2FDQXRNUzR6TWpRMU1EUWdkaUF0TkM0d09EUTVNRElnYUNBeExqTXlNRFV6TlNCMklEQXVOREU0TlRjeElHTWdNQ3d3SURBdU5UTXhPREV6TEMwd0xqUTRPVEl4TlNBeExqRTRNVE0yTlN3dE1DNDBPRGt5TVRVZ2VpQnRJREV1TVRVMU55dzFMakk1WlMwMElHTWdNQ3d3SURBdU9ESTROamMxTERBdU1ETXdORE1nTVM0eE56ZzBOVFFzTUM0ME1USXlNakVnTUM0eU5UQTRNalVzTUM0eU56STNPRFlnTUM0ek5URTJNekVzTUM0ME1UZ3dORElnTUM0ek5URTJNekVzTUM0NU5qRTNOakVnZGlBeUxqYzRNRFV3TmlCb0lDMHhMakl3TURFMUlIWWdMVEF1TWpVMk5qUTJJR01nTUN3d0lDMHdMakk0T0RFek1Td3dMakl6TmpVek9DQXRNQzQzT0RZMk1EWXNNQzR5TXpZMU16Z2dMVEF1TlRFNE5UZ3pMREFnTFRFdU16ZzVNRFl6TEMwd0xqTXdPRFV3TkNBdE1TNHpPRGt3TmpNc0xURXVNemd4TXprZ01Dd3RNUzR5TVRJMU9EVWdNQzQ1TXpRM056TXNMVEV1TkRrMU9UVTBJREV1TkRBeU1ESTRMQzB4TGpRNE56YzFNaUF3TGpReU5EWTFOaXd3TGpBd056UWdNQzQzTVRnd056a3NNQzR4T0RFMU1EUWdNQzQzTVRnd056a3NNQzR4T0RFMU1EUWdNQ3d3SURBdU1EYzBPRGdzTFRBdU5EZzJNekEwSUMwd0xqVXpNekV6Tml3dE1DNDFNRGdnTFRBdU5EYzFORFUyTEMwd0xqQXhOalFnTFRBdU5Ua3hOakE0TERBdU1ERXlOeUF0TUM0MU9URTJNRGdzTUM0d01USTNJRllnTlRVdU16SXpNRFEzSUZvZ1RTQTNNaTQwTWpJeE9EUXNOVE11T0RrMU9EZzBJSFlnTlM0MU9ERTJOU0JJSURjeExqRTROalU0SUhZZ0xUVXVOVGd4TmpVZ2VpQnRJQzAyTGpZNU1EYzRNeXd3TGpFME9ERTJOeUIySURNdU56UXhNakE0SUdnZ01TNDFNekU1TXpnZ2RpQXhMalF6TURBM015QklJRFkwTGpNek9ETTNJSFlnTFRVdU1UY3hNamd4SUdnZ01TNHpPVE15T1RZZ2VpQnRJRE11TmpNM05Ea3lMQzB3TGpBd01UWWdkaUExTGpFM01UQXhOeUJJSURZM0xqazNOakV5TmlCV0lEVTFMalEzTWpJMklHZ2dMVEV1TlRNeU56TXhJSFlnTFRFdU5ESTVPREE1SUhvZ2JTQXhOUzR5TkRFek1qTXNNeTQwTURrME1qRWdZeUF0TUM0eU9UUTNORFlzTUNBdE1DNDFNek14TXpZc01DNHlNelE1TlNBdE1DNDFNek14TXpZc01DNDFNak13T0RFZ01Dd3dMakk1TURJME9DQXdMakl6T0RFeU5Td3dMalV5TlRRMk15QXdMalV6TXpFek5pd3dMalV5TlRRMk15QXdMakk1TkRJeE5pd3dJREF1TlRNeE9ERXlMQzB3TGpJek5UUTNPU0F3TGpVek1UZ3hNaXd0TUM0MU1qVTBOak1nTUN3dE1DNHlPRGd6T1RVZ0xUQXVNak0zTlRrMkxDMHdMalV5TXpBNE1TQXRNQzQxTXpFNE1USXNMVEF1TlRJek1EZ3hJSG9nYlNBM0xqVTRNREEwT0N3dE1DNDNOalEyTkRZZ1l5QXRNQzQwTkRFNE5UUXNNQ0F0TUM0NE1ERXhOVGtzTUM0ek5UTTNORGdnTFRBdU9EQXhNVFU1TERBdU56ZzRPVGc0SURBc01DNDBNek16T0RjZ01DNHpOVGt6TURVc01DNDNPRFkyTURZZ01DNDRNREV4TlRrc01DNDNPRFkyTURZZ01DNDBOREkyTkRnc01DQXdMamd3TURnNU15d3RNQzR6TlRNeU1Ua2dNQzQ0TURBNE9UTXNMVEF1TnpnMk5qQTJJREFzTFRBdU5ETTFNalFnTFRBdU16VTRNalExTEMwd0xqYzRPRGN5TXlBdE1DNDRNREE0T1RNc0xUQXVOemc0TnpJeklIb2diU0F0TVRNdU16Y3hNalE0TEMwd0xqQXpOemcwSUdNZ0xUQXVORFF4TXpJMUxEQWdMVEF1T0RBd09EazBMREF1TXpVME1ERXlJQzB3TGpnd01EZzVOQ3d3TGpjNU1EVTNOU0F3TERBdU5ETXpPVEUzSURBdU16VTVPRE16TERBdU56ZzRORFU0SURBdU9EQXdPRGswTERBdU56ZzRORFU0SURBdU5EUXpNVGMzTERBZ01DNDRNRE15TnpVc0xUQXVNelUwTlRReElEQXVPREF6TWpjMUxDMHdMamM0T0RRMU9DQXdMQzB3TGpRek5qVTJNeUF0TUM0ek5UazRNelFzTFRBdU56a3dOVGMxSUMwd0xqZ3dNekkzTlN3dE1DNDNPVEExTnpVZ2VpQnRJQzAwTGpFNE1ERTFNaXd0TUM0ek16STFPREVnWXlBdE1DNHpOVFExTkRJc01DQXRNQzQyTkRVMU9EUXNNQzR5TmpFNU16Y2dMVEF1TmpnMU1qY3hMREF1TmpBd05qQTBJRWdnTnpVdU16SXpPRGNnUXlBM05TNHlPRFEzTVN3MU5pNDFOemczTkRJZ056UXVPVGt6TVRReExEVTJMak14Tmpnd05TQTNOQzQyTXpnNE5qUXNOVFl1TXpFMk9EQTFJRm9nVFNBMk5pNHlOVFV3TVRJc05UTXVOVGc0T1RVZ2RpQXhMamc0TXpVMk9TQm9JQzB3TGpNek5qQXlNU0IySUMweExqZzRNemd6TXlCb0lEQXVNek0yTURJeElIb2diU0F5T1M0d01UVTFNekVzTUM0ek1EWTVNVGNnWXlBd0xqTTFPVGd6TXl3d0lEQXVOalV5T1RreUxEQXVNamczT0RZM0lEQXVOalV5T1RreUxEQXVOalF5TVRRMElEQXNNQzR6TlRVd056RWdMVEF1TWprek1UVTVMREF1TmpReU9UTTNJQzB3TGpZMU1qazVNaXd3TGpZME1qa3pOeUF0TUM0ek5Ua3pNRFFzTUNBdE1DNDJOVEU1TXpNc0xUQXVNamczT0RZMklDMHdMalkxTVRrek15d3RNQzQyTkRJNU16Y2dNQ3d0TUM0ek5UUXlOemNnTUM0eU9USTJNamtzTFRBdU5qUXlNVFEwSURBdU5qVXhPVE16TEMwd0xqWTBNakUwTkNCNklHMGdNQ3d3TGpBNU1qTTBJR01nTFRBdU16QTNORFEyTERBZ0xUQXVOVFU0TWpjeExEQXVNalEyTlRreElDMHdMalUxT0RJM01Td3dMalUwT1Rnd05DQXdMREF1TXpBME1qY3hJREF1TWpVd09ESTFMREF1TlRVd09EWXlJREF1TlRVNE1qY3hMREF1TlRVd09EWXlJREF1TXpBM09UYzFMREFnTUM0MU5UZzRMQzB3TGpJME5qVTVNU0F3TGpVMU9EZ3NMVEF1TlRVd09EWXlJREFzTFRBdU16QXpNakV6SUMwd0xqSTFNRGd5TlN3dE1DNDFORGs0TURRZ0xUQXVOVFU0T0N3dE1DNDFORGs0TURRZ2VpQnRJREF1TURVMU5UWXNNQzR5TURRM09EY2dZeUF3TGpFeE1UWTFOU3d3SURBdU1qSTBNelkzTERBdU1ETTRNellnTUM0eU1qUXpOamNzTUM0eE9EQXhPREVnTUN3d0xqQTVPVGMxSUMwd0xqQTFNVE16TERBdU1UTTJOVEkxSUMwd0xqQTVOVEkxTERBdU1UWXlNVGtnTUM0d016a3hOaXd3TGpBeE5UZzRJREF1TURjNE1EVXNNQzR3TXpJNE1TQXdMakE0TWpBeUxEQXVNVEkyTkRjeElHd2dNQzR3TURVMkxEQXVNVEl5TWpNM0lHTWdNQzR3TURFekxEQXVNRE0zT0RRZ01DNHdNRFU0TERBdU1EVXhPRFlnTUM0d016UTBMREF1TURZM056TWdkaUF3TGpBeE5UQTRJR2dnTFRBdU1URXpNalF5SUdNZ0xUQXVNREV6TkRrc0xUQXVNRFF4TWpjZ0xUQXVNREUyTkN3dE1DNHhORE01TXpNZ0xUQXVNREUyTkN3dE1DNHhOamt6TXpNZ01Dd3RNQzR3TlRVeklDMHdMakF4TVRZMExDMHdMakV4T1RnMU5pQXRNQzR4TWpFM01EZ3NMVEF1TVRFNU9EVTJJR2dnTFRBdU1qSXlOemM1SUhZZ01DNHlPRGt4T0RrZ2FDQXRNQzR3T1RNeE15QldJRFUwTGpFNU1qazVJRm9nYlNBd0xqQXdOakVzTUM0d056YzNPU0JvSUMwd0xqSXlPVEV5T1NCMklEQXVNakk0TXpNMUlHZ2dNQzR5TVRNMU1UZ2dZeUF3TGpBMk56SXNNQ0F3TGpFek9Ea3dOeXd0TUM0d01UWTJOeUF3TGpFek9Ea3dOeXd0TUM0eE1UWTBNVGNnTUN3dE1DNHhNRE14T0RjZ0xUQXVNRGMzTWpZc0xUQXVNVEV4T1RFNElDMHdMakV5TXpJNU5pd3RNQzR4TVRFNU1UZ2dlaUlnYVdROUluQmhkR2d4TWlJdlBpWWplR0U3SUNBOEwyYytKaU40WVRzOEwzTjJaejQ9IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIi8+PC9nPjwvc3ZnPg==",website:"https://www.legrand.us/"},{name:"Milvus - Open Source Vector Similarity Search Engine",logo:"data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAwIDQwMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM0ZmM0Zjk7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUxOC4yMiwxNTYuN0EzMS41MiwzMS41MiwwLDAsMCw1MDcuMywxNTUsMjAuNTEsMjAuNTEsMCwwLDAsNDk3LDE1Ny41MnEtNC41MywyLjU1LTcuNjQsOS42MVE0ODQuNjIsMTc3LjUsNDc5LDE4OXQtMTEuNTgsMjMuMzNxLTYuNzUtMTIuODEtMTMuMjMtMjYuNTRUNDQxLjczLDE1OS45YTIzLjA4LDIzLjA4LDAsMCwwLTUuOTEtMy4xMkEyOC45MywyOC45MywwLDAsMCw0MjUsMTU1YTI1LjYxLDI1LjYxLDAsMCwwLTUuOTEuNjYsMTQuMzQsMTQuMzQsMCwwLDAtNSwyLjIyLDExLjQxLDExLjQxLDAsMCwwLTMuNjEsNC4zNSwxNywxNywwLDAsMC0xLjU2LDYuOTFsLTUuNTksOTguNTloMjcuNzdsMy42Mi02Ny4yMXEyLjYzLDUuMjYsNS43NSwxMS41OXQ2LjA4LDEyLjczcTMsNi40MSw1LjY3LDEyLjMzdDQuNTEsMTAuMzVoMjAuMzhxMi00LjQ0LDQuNTItMTAuMTFUNDg3LDIyNS40N3EyLjg4LTYuMjQsNi0xMi42NWw2LjA4LTEyLjQ5LDMuNzgsNjcuMzdoMjcuNjFsLTYuMjUtMTA4LjI5QTI4LjI0LDI4LjI0LDAsMCwwLDUxOC4yMiwxNTYuN1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01NzEuMDksMTgzLjlxLTYuMjYsMC0xMCwyLjYydC0zLjc4LDlWMjY3LjdoMjYuNDZWMTg2LjM2Yy0uNjYtLjIyLTIuMTktLjY4LTQuNi0xLjRBMjguNDcsMjguNDcsMCwwLDAsNTcxLjA5LDE4My45WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTU3MC40MywxNDYuNTlBMTQsMTQsMCwwLDAsNTYwLDE1MC44N2ExNC40NCwxNC40NCwwLDAsMC00LjE5LDEwLjUxQTE0LjMyLDE0LjMyLDAsMCwwLDU3MC40MywxNzZhMTQuNDQsMTQuNDQsMCwwLDAsMTAuNTEtNC4xOSwxNCwxNCwwLDAsMCw0LjI4LTEwLjQ0LDE0LjYyLDE0LjYyLDAsMCwwLTE0Ljc5LTE0Ljc5WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYyMy44NSwxNDYuNTlxLTYuMjYsMC0xMCwyLjYzdC0zLjc4LDlWMjY3LjdINjM2LjVWMTQ5LjA2Yy0uNjYtLjIyLTIuMTktLjY4LTQuNi0xLjRBMjguNDEsMjguNDEsMCwwLDAsNjIzLjg1LDE0Ni41OVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMsMTg2YTMyLjQzLDMyLjQzLDAsMCwwLTQuNi0xLjQ4LDI0LjksMjQuOSwwLDAsMC01LjkyLS42NSwxOS4zOSwxOS4zOSwwLDAsMC02LjA4LjgyLDExLjcsMTEuNywwLDAsMC00LjE5LDIuMzgsMTUsMTUsMCwwLDAtMywzLjcsMzMuMjIsMzMuMjIsMCwwLDAtMi4yMiw0LjZxLTEuODIsNC40NC00LjM2LDEwLjc2dC01LjA5LDEyLjY1cS0yLjU1LDYuMzMtNC42OCwxMS41MXQtMy4xMyw3LjMxYy0uNjUtMS40Mi0xLjc1LTMuOTItMy4yOC03LjQ4cy0zLjI2LTcuNjctNS4xOC0xMi4zMi0zLjkyLTkuNzItNi0xNS4yLTQtMTAuOS01LjkxLTE2LjI3YTI2LjczLDI2LjczLDAsMCwwLTMuNzgtMS40LDI4LjM4LDI4LjM4LDAsMCwwLTguNTUtMS4wNnEtNi41NywwLTkuODYsMy4yYTEwLjQ5LDEwLjQ5LDAsMCwwLTMuMjgsNy44LDIxLjA5LDIxLjA5LDAsMCwwLDEuNTYsNy40cTEuNTYsNC4xMSwyLjg3LDcuMzkuNjYsMS42NSwzLjI5LDcuNDh0Ni41NywxNC4xM3EzLjk0LDguMzEsOC43OSwxNy44M3QxMCwxOC41N2gyNC40OHExLjgyLTMuNDUsNS4wOS05Ljc4dDcuMDctMTQuMjFxMy43OC03Ljg5LDcuNzItMTYuMzV0Ny4zMi0xNi4xOXEzLjM2LTcuNzIsNS44My0xMy43MmE2Mi4zNSw2Mi4zNSwwLDAsMCwzLjEyLTguOTVjLS4yMi0uMTEtLjcxLS40MS0xLjQ4LS45MUEyMC44NywyMC44NywwLDAsMCw3NDMsMTg2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTgzNS4wNywxODMuOXEtNi4yNiwwLTEwLDIuNjJ0LTMuNzgsOXYzM3EwLDE3LjEtMTUuNDQsMTcuMDl0LTE1LjQ1LTE3LjA5VjE4Ni4zNmMtLjY2LS4yMi0yLjE5LS42OC00LjYtMS40YTI4LjQzLDI4LjQzLDAsMCwwLTgtMS4wNnEtNi4yNiwwLTEwLDIuNjJ0LTMuNzgsOXYzOGEzNy4yMywzNy4yMywwLDAsMCwzLjIxLDE2LDMxLjQ5LDMxLjQ5LDAsMCwwLDguNzksMTEuMzQsMzgsMzgsMCwwLDAsMTMuMzEsNi44Miw2MSw2MSwwLDAsMCwzMy4xOSwwLDM4LDM4LDAsMCwwLDEzLjMxLTYuODIsMzEuNDksMzEuNDksMCwwLDAsOC43OS0xMS4zNCwzNy4yMywzNy4yMywwLDAsMCwzLjIxLTE2VjE4Ni4zNmMtLjY2LS4yMi0yLjE5LS42OC00LjYtMS40QTI4LjQ3LDI4LjQ3LDAsMCwwLDgzNS4wNywxODMuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05NDcuNzYsMjI5LjU4YTIxLjUxLDIxLjUxLDAsMCwwLTYuNDEtNy41NiwzMC4xNSwzMC4xNSwwLDAsMC05LjItNC41Miw3NS4zNSw3NS4zNSwwLDAsMC0xMC43Ny0yLjM4bC0xNS0yLjE0YTMzLjc4LDMzLjc4LDAsMCwxLTcuODktMiw0LDQsMCwwLDEtMi42My0zLjk1LDUuMTMsNS4xMywwLDAsMSwyLjg4LTQuNTFxMi44OC0xLjczLDEwLjI3LTEuNzNhNjIuOTQsNjIuOTQsMCwwLDEsMTEuNzUsMSw2OC41OCw2OC41OCwwLDAsMSw4Ljg3LDIuMjEsMzIuMDYsMzIuMDYsMCwwLDEsNS45MiwyLjU1LDE3LjkxLDE3LjkxLDAsMCwxLDIuNzEsMS44MXEuMzMtLjE2LDEuNTYtMWExNiwxNiwwLDAsMCw1LjA5LTUuODMsOS45LDkuOSwwLDAsMCwxLjA3LTQuNjgsOS4xMiw5LjEyLDAsMCwwLTEuODktNS44NCwxNS41MSwxNS41MSwwLDAsMC01LTQsNDUuMjgsNDUuMjgsMCwwLDAtMTIuOS00LjExLDEwNC4wOSwxMDQuMDksMCwwLDAtMTcuODMtMS4zMiw2MS41Myw2MS41MywwLDAsMC0xNy41OCwyLjIyLDM1LjI2LDM1LjI2LDAsMCwwLTEyLjE2LDYuMDgsMjMuNSwyMy41LDAsMCwwLTcsOSwyOC4yOCwyOC4yOCwwLDAsMC0yLjIyLDExLjI2LDI0LjQ5LDI0LjQ5LDAsMCwwLDIuNjMsMTIsMjIuMTMsMjIuMTMsMCwwLDAsNy4xNSw3LjgxLDM0LDM0LDAsMCwwLDEwLjQzLDQuNkE5Ni42MSw5Ni42MSwwLDAsMCw5MDIsMjM3bDguNTUsMWEzNywzNywwLDAsMSw5LDIsNC41MSw0LjUxLDAsMCwxLDIuODgsNC41MnEwLDMuMTItMy40NSw0LjM1dC0xMC4xOSwxLjI0YTY2LjQ5LDY2LjQ5LDAsMCwxLTExLjI1LS45MSw4My4xLDgzLjEsMCwwLDEtOS41NC0yLjEzLDU0LjE2LDU0LjE2LDAsMCwxLTcuMjMtMi42MywyNS4xOSwyNS4xOSwwLDAsMS00LjM1LTIuMzlMODY3LDI1OS4xNWE0Ny4xNSw0Ny4xNSwwLDAsMCw0LjY5LDIuODgsNDcuNjksNDcuNjksMCwwLDAsOC43OSwzLjYyQTk4LjIyLDk4LjIyLDAsMCwwLDkxMC41NCwyNzBxMTguNTcsMCwyOS4wOC03LjcydDEwLjUyLTIxLjUzQTI0LjE2LDI0LjE2LDAsMCwwLDk0Ny43NiwyMjkuNThaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjYyLjA1LDEzNS43M2MtMzkuNzgtMzktMTA0LjI4LTM5LjA2LTE0NC4wNywwTDUyLjg4LDE5OS42YTkuNTUsOS41NSwwLDAsMCwwLDEzLjY3bDY1LjA2LDYzLjkxYzM5Ljc4LDM5LjA3LDEwNC4zLDM5LjA5LDE0NC4xMSwwaDBhOTguNzUsOTguNzUsMCwwLDAsMC0xNDEuNDhaTTI0Ni42MiwyNTguNDRoMGE3NS44NCw3NS44NCwwLDAsMS0xMDUuODYsMGwtNDcuOC00N2E3LDcsMCwwLDEsMC0xMGw0Ny44Mi00Ni45M2E3NS44Niw3NS44NiwwLDAsMSwxMDUuODUsMGgwQTcyLjU0LDcyLjU0LDAsMCwxLDI0Ni42MiwyNTguNDRaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzE4LjY0LDE3MWEyLjQxLDIuNDEsMCwwLDAtNC4wNywyLjIxLDE1MC4zNSwxNTAuMzUsMCwwLDEsMCw2Ni41MSwyLjQxLDIuNDEsMCwwLDAsNC4wNywyLjIxbDI4LjY0LTI4LjYzYTkuNjYsOS42NiwwLDAsMCwwLTEzLjY2WiIvPjxjaXJjbGUgY2xhc3M9ImNscy0xIiBjeD0iMTk0LjA0IiBjeT0iMjA2LjQ5IiByPSI1MC4xNCIvPjwvc3ZnPg==",website:"https://milvus.io/"},{name:"RadioIP",logo:"https://radio-ip.com/wp-content/uploads/2019/11/logog.png",website:"https://www.radio-ip.com/"},{name:"iCOGNIZE",logo:"https://www.icognize.de/wp-content/uploads/2020/07/ic_logo_sv2.svg",website:"https://www.icognize.de/"},{name:"DeepDetect",logo:"https://www.deepdetect.com/img/icons/menu/sidebar/deepdetect.svg",website:"https://www.deepdetect.com/"},{name:"Tipi.Build",logo:"data:image/png;base64,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",website:"https://tipi.build/"}]}}},U=N(42),E=Object(U.a)(R,(function(){var T=this.$createElement,M=this._self._c||T;return M("div",this._l(this.users,(function(T){return M("div",{staticClass:"user_root"},[M("a",{attrs:{href:T.website,target:"_blank",rel:"noopener noreferrer"}},[M("img",{staticClass:"user_logo",attrs:{src:T.logo,alt:T.name}})])])})),0)}),[],!1,null,"74f73602",null);M.default=E.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/80.a156d20d.js b/docs/.vuepress/dist/assets/js/80.a156d20d.js deleted file mode 100644 index 661f6aa02..000000000 --- a/docs/.vuepress/dist/assets/js/80.a156d20d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{452:function(e,t,a){"use strict";a.r(t);var s=a(42),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"deserializer-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer-hpp"}},[e._v("#")]),e._v(" Deserializer.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/mapping/Deserializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/mapping/Deserializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp-sqlite")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp-sqlite/mapping/Deserializer.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"deserializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deserializer"}},[e._v("#")]),e._v(" Deserializer")]),e._v(" "),a("p",[e._v("Mapper from SQLite values to oatpp values.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" sqlite "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("Deserializer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/81.228a563f.js b/docs/.vuepress/dist/assets/js/81.228a563f.js deleted file mode 100644 index 9563fe3e3..000000000 --- a/docs/.vuepress/dist/assets/js/81.228a563f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{453:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"resultmapper-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-hpp"}},[t._v("#")]),t._v(" ResultMapper.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/mapping/ResultMapper.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/mapping/ResultMapper.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-sqlite")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-sqlite/mapping/ResultMapper.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"resultmapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper"}},[t._v("#")]),t._v(" ResultMapper")]),t._v(" "),s("p",[t._v("Mapper from SQLite result to oatpp objects.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultMapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultmapper"}},[t._v("ResultMapper")])]),t._v(" "),s("td",[t._v("Default constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-setreadonerowmethod"}},[t._v("setReadOneRowMethod")])]),t._v(" "),s("td",[t._v('Set "read one row" method for class id.')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-setreadrowsmethod"}},[t._v("setReadRowsMethod")])]),t._v(" "),s("td",[t._v('Set "read rows" method for class id.')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-readonerow"}},[t._v("readOneRow")])]),t._v(" "),s("td",[t._v("Read one row to oatpp object or collection. "),s("br")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("oatpp::Void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-readrows"}},[t._v("readRows")])]),t._v(" "),s("td",[t._v("Read "),s("code",[t._v("count")]),t._v(" of rows to oatpp collection. "),s("br")])])])]),t._v(" "),s("h3",{attrs:{id:"resultmapper-resultmapper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultmapper"}},[t._v("#")]),t._v(" ResultMapper::ResultMapper")]),t._v(" "),s("p",[t._v("Default constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResultMapper")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"resultmapper-setreadonerowmethod"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-setreadonerowmethod"}},[t._v("#")]),t._v(" ResultMapper::setReadOneRowMethod")]),t._v(" "),s("p",[t._v('Set "read one row" method for class id. '),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" classId ")]),s("li",[s("strong",[t._v("@param")]),t._v(" method ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setReadOneRowMethod")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ReadOneRowMethod method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"resultmapper-setreadrowsmethod"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-setreadrowsmethod"}},[t._v("#")]),t._v(" ResultMapper::setReadRowsMethod")]),t._v(" "),s("p",[t._v('Set "read rows" method for class id. '),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" classId ")]),s("li",[s("strong",[t._v("@param")]),t._v(" method ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setReadRowsMethod")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" classId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ReadRowsMethod method"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"resultmapper-readonerow"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-readonerow"}},[t._v("#")]),t._v(" ResultMapper::readOneRow")]),t._v(" "),s("p",[t._v("Read one row to oatpp object or collection. "),s("br"),t._v(" Allowed output type classes are: - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#vector"}},[t._v("oatpp::Vector")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#list"}},[t._v("oatpp::List")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedset"}},[t._v("oatpp::UnorderedSet")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#fields"}},[t._v("oatpp::Fields")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedfields"}},[t._v("oatpp::UnorderedFields")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#object"}},[t._v("oatpp::Object")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" dbData ")]),s("li",[s("strong",[t._v("@param")]),t._v(" type ")]),s("li",[s("strong",[t._v("@return")])])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readOneRow")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ResultData"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" dbData"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"resultmapper-readrows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-readrows"}},[t._v("#")]),t._v(" ResultMapper::readRows")]),t._v(" "),s("p",[t._v("Read "),s("code",[t._v("count")]),t._v(" of rows to oatpp collection. "),s("br"),t._v(" Allowed collections to store rows are: - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#vector"}},[t._v("oatpp::Vector")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#list"}},[t._v("oatpp::List")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#unorderedset"}},[t._v("oatpp::UnorderedSet")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" dbData ")]),s("li",[s("strong",[t._v("@param")]),t._v(" type ")]),s("li",[s("strong",[t._v("@param")]),t._v(" count ")]),s("li",[s("strong",[t._v("@return")])])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Void "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("readRows")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ResultData"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" dbData"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int64 count"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"resultmapper-resultdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata"}},[t._v("#")]),t._v(" ResultMapper::ResultData")]),t._v(" "),s("p",[t._v("Result data")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultMapper")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ResultData")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("sqlite3_stmt*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-stmt"}},[t._v("stmt")])]),t._v(" "),s("td",[t._v("SQLite statement.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-typeresolver"}},[t._v("typeResolver")])]),t._v(" "),s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/#typeresolver"}},[t._v("oatpp::data::mapping::TypeResolver")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::vector")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-colnames"}},[t._v("colNames")])]),t._v(" "),s("td",[t._v("Names of columns.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::unordered_map")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-colindices"}},[t._v("colIndices")])]),t._v(" "),s("td",[t._v("Column indices.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-colcount"}},[t._v("colCount")])]),t._v(" "),s("td",[t._v("Column count.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("v_int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-rowindex"}},[t._v("rowIndex")])]),t._v(" "),s("td",[t._v("Current row index.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-hasmore"}},[t._v("hasMore")])]),t._v(" "),s("td",[t._v("Has more to read.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("bool")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-issuccess"}},[t._v("isSuccess")])]),t._v(" "),s("td",[t._v("Is success.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-resultdata"}},[t._v("ResultData")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#resultmapper-resultdata-next"}},[t._v("next")])]),t._v(" "),s("td",[t._v("Move to next row.")])])])]),t._v(" "),s("h3",{attrs:{id:"resultmapper-resultdata-stmt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-stmt"}},[t._v("#")]),t._v(" ResultMapper::ResultData::stmt")]),t._v(" "),s("p",[t._v("SQLite statement.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("sqlite3_stmt"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stmt\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-typeresolver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-typeresolver"}},[t._v("#")]),t._v(" ResultMapper::ResultData::typeResolver")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/TypeResolver/#typeresolver"}},[t._v("oatpp::data::mapping::TypeResolver")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" typeResolver\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-colnames"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colnames"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colNames")]),t._v(" "),s("p",[t._v("Names of columns.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" colNames\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-colindices"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colindices"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colIndices")]),t._v(" "),s("p",[t._v("Column indices.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringKeyLabel"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_int32"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" colIndices\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-colcount"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-colcount"}},[t._v("#")]),t._v(" ResultMapper::ResultData::colCount")]),t._v(" "),s("p",[t._v("Column count.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 colCount\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-rowindex"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-rowindex"}},[t._v("#")]),t._v(" ResultMapper::ResultData::rowIndex")]),t._v(" "),s("p",[t._v("Current row index.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("v_int64 rowIndex\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-hasmore"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-hasmore"}},[t._v("#")]),t._v(" ResultMapper::ResultData::hasMore")]),t._v(" "),s("p",[t._v("Has more to read.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" hasMore\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-issuccess"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-issuccess"}},[t._v("#")]),t._v(" ResultMapper::ResultData::isSuccess")]),t._v(" "),s("p",[t._v("Is success.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" isSuccess\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-resultdata"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-resultdata"}},[t._v("#")]),t._v(" ResultMapper::ResultData::ResultData")]),t._v(" "),s("p",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" pStmt ")]),s("li",[s("strong",[t._v("@param")]),t._v(" pTypeResolver ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResultData")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sqlite3_stmt"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" pStmt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TypeResolver"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" pTypeResolver"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"resultmapper-resultdata-next"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#resultmapper-resultdata-next"}},[t._v("#")]),t._v(" ResultMapper::ResultData::next")]),t._v(" "),s("p",[t._v("Move to next row.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("next")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/82.f03685e0.js b/docs/.vuepress/dist/assets/js/82.f03685e0.js deleted file mode 100644 index d6785cdc3..000000000 --- a/docs/.vuepress/dist/assets/js/82.f03685e0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{454:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"serializer-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#serializer-hpp"}},[t._v("#")]),t._v(" Serializer.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/mapping/Serializer.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/mapping/Serializer.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-sqlite")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-sqlite/mapping/Serializer.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"serializer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#serializer"}},[t._v("#")]),t._v(" Serializer")]),t._v(" "),a("p",[t._v("Mapper of oatpp values to SQLite values.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" mapping "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Serializer")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/83.3c651be3.js b/docs/.vuepress/dist/assets/js/83.3c651be3.js deleted file mode 100644 index 3d374d092..000000000 --- a/docs/.vuepress/dist/assets/js/83.3c651be3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{455:function(t,e,a){"use strict";a.r(e);var p=a(42),s=Object(p.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"blob-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blob-hpp"}},[t._v("#")]),t._v(" Blob.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/mapping/type/Blob.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/mapping/type/Blob.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-sqlite")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-sqlite/mapping/type/Blob.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"blob"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blob"}},[t._v("#")]),t._v(" Blob")]),t._v(" "),a("p",[a("strong",[t._v("Namespace:")]),t._v(" "),a("code",[t._v("oatpp::sqlite::mapping::type")])]),t._v(" "),a("p",[t._v("Blob type. "),a("br")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Blob"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Blob\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/84.d516215b.js b/docs/.vuepress/dist/assets/js/84.d516215b.js deleted file mode 100644 index 093c679b1..000000000 --- a/docs/.vuepress/dist/assets/js/84.d516215b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{456:function(t,e,s){"use strict";s.r(e);var r=s(42),p=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"orm-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orm-hpp"}},[t._v("#")]),t._v(" orm.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/orm.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/orm.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-sqlite")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-sqlite/orm.hpp"')])]),t._v(" "),s("p",[t._v("This is just a header file which includes all oatpp-sqlite components:")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Executor.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Types.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Utils.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/SchemaMigration.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/orm/DbClient.hpp"')])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token macro property"}},[t._v("#"),s("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("include")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"oatpp/core/macro/codegen.hpp"')])]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/85.ef01ccb6.js b/docs/.vuepress/dist/assets/js/85.ef01ccb6.js deleted file mode 100644 index 8593e3ead..000000000 --- a/docs/.vuepress/dist/assets/js/85.ef01ccb6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{457:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"parser-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-hpp"}},[t._v("#")]),t._v(" Parser.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/ql_template/Parser.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/ql_template/Parser.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-sqlite")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-sqlite/ql_template/Parser.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"parser"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser"}},[t._v("#")]),t._v(" Parser")]),t._v(" "),e("p",[t._v("Query template parser.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-preprocess"}},[t._v("preprocess")])]),t._v(" "),e("td",[t._v("Preprocess text.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("data::share::StringTemplate")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-parsetemplate"}},[t._v("parseTemplate")])]),t._v(" "),e("td",[t._v("Parse query template.")])])])]),t._v(" "),e("h3",{attrs:{id:"parser-preprocess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-preprocess"}},[t._v("#")]),t._v(" Parser::preprocess")]),t._v(" "),e("p",[t._v("Preprocess text. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" text ")]),e("li",[e("strong",[t._v("@param")]),t._v(" cleanSections - out vector of clean sections. ")]),e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("preprocess")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("vector"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("CleanSection"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" cleanSections"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"parser-parsetemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-parsetemplate"}},[t._v("#")]),t._v(" Parser::parseTemplate")]),t._v(" "),e("p",[t._v("Parse query template. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" text ")]),e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate"}},[t._v("oatpp::data::share::StringTemplate")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseTemplate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"parser-templateextra"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra"}},[t._v("#")]),t._v(" Parser::TemplateExtra")]),t._v(" "),e("p",[t._v("Template extra info.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Parser")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TemplateExtra")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"fields"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-templatename"}},[t._v("templateName")])]),t._v(" "),e("td",[t._v("Template name.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::String")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-preparedtemplate"}},[t._v("preparedTemplate")])]),t._v(" "),e("td",[t._v("Template text with parameters substituted to SQLite parameter placeholders.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("bool")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#parser-templateextra-prepare"}},[t._v("prepare")])]),t._v(" "),e("td",[t._v("Use prepared statement for this query.")])])])]),t._v(" "),e("h3",{attrs:{id:"parser-templateextra-templatename"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-templatename"}},[t._v("#")]),t._v(" Parser::TemplateExtra::templateName")]),t._v(" "),e("p",[t._v("Template name.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String templateName\n")])])]),e("h3",{attrs:{id:"parser-templateextra-preparedtemplate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-preparedtemplate"}},[t._v("#")]),t._v(" Parser::TemplateExtra::preparedTemplate")]),t._v(" "),e("p",[t._v("Template text with parameters substituted to SQLite parameter placeholders.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String preparedTemplate\n")])])]),e("h3",{attrs:{id:"parser-templateextra-prepare"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parser-templateextra-prepare"}},[t._v("#")]),t._v(" Parser::TemplateExtra::prepare")]),t._v(" "),e("p",[t._v("Use prepared statement for this query.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("bool")]),t._v(" prepare\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/86.a278c4f0.js b/docs/.vuepress/dist/assets/js/86.a278c4f0.js deleted file mode 100644 index 62675551c..000000000 --- a/docs/.vuepress/dist/assets/js/86.a278c4f0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{458:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"templatevalueprovider-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#templatevalueprovider-hpp"}},[t._v("#")]),t._v(" TemplateValueProvider.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/blob/master/src/oatpp-sqlite/ql_template/TemplateValueProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-sqlite/issues/new?title=API%20question&body=In%20file:%20oatpp-sqlite/ql_template/TemplateValueProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-sqlite")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-sqlite/ql_template/TemplateValueProvider.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"templatevalueprovider"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#templatevalueprovider"}},[t._v("#")]),t._v(" TemplateValueProvider")]),t._v(" "),a("p",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/share/StringTemplate/#stringtemplate-valueprovider"}},[t._v("oatpp::data::share::StringTemplate::ValueProvider")])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" sqlite "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ql_template "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TemplateValueProvider")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("StringTemplate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ValueProvider "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/87.16886e7f.js b/docs/.vuepress/dist/assets/js/87.16886e7f.js deleted file mode 100644 index 1089aef46..000000000 --- a/docs/.vuepress/dist/assets/js/87.16886e7f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{459:function(t,e,s){"use strict";s.r(e);var r=s(42),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"simplessdpudpstreamprovider-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simplessdpudpstreamprovider-hpp"}},[t._v("#")]),t._v(" SimpleSsdpUdpStreamProvider.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/blob/master/src/oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/issues/new?title=API%20question&body=In%20file:%20oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-ssdp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"simplessdpudpstreamprovider"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simplessdpudpstreamprovider"}},[t._v("#")]),t._v(" SimpleSsdpUdpStreamProvider")]),t._v(" "),s("p",[t._v("Simple provider of UDP streams from SSDP Messages")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ssdp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SimpleSsdpUdpStreamProvider")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" SimpleUdpStreamProvider "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#simplessdpudpstreamprovider-simplessdpudpstreamprovider"}},[t._v("SimpleSsdpUdpStreamProvider")])]),t._v(" "),s("td",[t._v("Constructor.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#simplessdpudpstreamprovider-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared SimpleUDPConnectionProvider.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("provider::ResourceHandle")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#simplessdpudpstreamprovider-get"}},[t._v("get")])]),t._v(" "),s("td",[t._v("Get incoming connection.")])])])]),t._v(" "),s("h3",{attrs:{id:"simplessdpudpstreamprovider-simplessdpudpstreamprovider"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simplessdpudpstreamprovider-simplessdpudpstreamprovider"}},[t._v("#")]),t._v(" SimpleSsdpUdpStreamProvider::SimpleSsdpUdpStreamProvider")]),t._v(" "),s("p",[t._v("Constructor.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SimpleSsdpUdpStreamProvider")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"simplessdpudpstreamprovider-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simplessdpudpstreamprovider-createshared"}},[t._v("#")]),t._v(" SimpleSsdpUdpStreamProvider::createShared")]),t._v(" "),s("p",[t._v("Create shared SimpleUDPConnectionProvider. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to SimpleUDPConnectionProvider. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SimpleSsdpUdpStreamProvider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"simplessdpudpstreamprovider-get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simplessdpudpstreamprovider-get"}},[t._v("#")]),t._v(" SimpleSsdpUdpStreamProvider::get")]),t._v(" "),s("p",[t._v("Get incoming connection. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[t._v("provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/88.4b6fce32.js b/docs/.vuepress/dist/assets/js/88.4b6fce32.js deleted file mode 100644 index 77b7a01a9..000000000 --- a/docs/.vuepress/dist/assets/js/88.4b6fce32.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{460:function(t,e,r){"use strict";r.r(e);var a=r(42),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"simpleudpstreamprovider-hpp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider-hpp"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider.hpp"),r("seo")],1),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/blob/master/src/oatpp-ssdp/SimpleUdpStreamProvider.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),r("OutboundLink")],1),r("br"),t._v(" "),r("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/issues/new?title=API%20question&body=In%20file:%20oatpp-ssdp/SimpleUdpStreamProvider.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),r("OutboundLink")],1)]),t._v(" "),r("p",[r("code",[t._v("API: latest")]),r("br"),t._v(" "),r("code",[t._v("module: oatpp-ssdp")]),r("br"),t._v(" "),r("code",[t._v('#include "oatpp-ssdp/SimpleUdpStreamProvider.hpp"')])]),t._v(" "),r("h2",{attrs:{id:"simpleudpstreamprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider")]),t._v(" "),r("p",[t._v("Simple implementation of provider of UDP streams.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ssdp "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SimpleUdpStreamProvider")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerConnectionProvider "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),r("h3",{attrs:{id:"methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Return Type")]),t._v(" "),r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Summary")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("code",[t._v("explicit")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#simpleudpstreamprovider-simpleudpstreamprovider"}},[t._v("SimpleUdpStreamProvider")])]),t._v(" "),r("td",[t._v("Constructor.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("void")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#simpleudpstreamprovider-stop"}},[t._v("stop")])]),t._v(" "),r("td",[t._v("Close accept-socket.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("provider::ResourceHandle")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#simpleudpstreamprovider-get"}},[t._v("get")])]),t._v(" "),r("td",[t._v("Get incoming connection.")])]),t._v(" "),r("tr",[r("td",[r("code",[t._v("async::CoroutineStarterForResult&>")])]),t._v(" "),r("td",[r("a",{attrs:{href:"#simpleudpstreamprovider-getasync"}},[t._v("getAsync")])]),t._v(" "),r("td",[t._v("No need to implement this."),r("br")])])])]),t._v(" "),r("h3",{attrs:{id:"simpleudpstreamprovider-simpleudpstreamprovider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider-simpleudpstreamprovider"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider::SimpleUdpStreamProvider")]),t._v(" "),r("p",[t._v("Constructor. "),r("ul",[r("li",[r("strong",[t._v("@param")]),t._v(" port ")])])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("explicit")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("SimpleUdpStreamProvider")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_uint16 port"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),r("h3",{attrs:{id:"simpleudpstreamprovider-stop"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider-stop"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider::stop")]),t._v(" "),r("p",[t._v("Close accept-socket.")]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"simpleudpstreamprovider-get"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider-get"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider::get")]),t._v(" "),r("p",[t._v("Get incoming connection. "),r("ul",[r("li",[r("strong",[t._v("@return")]),t._v(" "),r("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(". ")],1)])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),r("h3",{attrs:{id:"simpleudpstreamprovider-getasync"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#simpleudpstreamprovider-getasync"}},[t._v("#")]),t._v(" SimpleUdpStreamProvider::getAsync")]),t._v(" "),r("p",[t._v("No need to implement this."),r("br"),t._v(" For Asynchronous IO in oatpp it is considered to be a good practice to accept connections in a seperate thread with the blocking accept() and then process connections in Asynchronous manner with non-blocking read/write. "),r("br"),t._v(" "),r("em",[t._v("It may be implemented later")])]),t._v(" "),r("div",{staticClass:"language-cpp extra-class"},[r("pre",{pre:!0,attrs:{class:"language-cpp"}},[r("code",[t._v("async"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("CoroutineStarterForResult"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAsync")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/89.1633b31d.js b/docs/.vuepress/dist/assets/js/89.1633b31d.js deleted file mode 100644 index 7dcacbd31..000000000 --- a/docs/.vuepress/dist/assets/js/89.1633b31d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{461:function(t,s,a){"use strict";a.r(s);var e=a(42),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"ssdpmessage-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-hpp"}},[t._v("#")]),t._v(" SsdpMessage.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/blob/master/src/oatpp-ssdp/SsdpMessage.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/issues/new?title=API%20question&body=In%20file:%20oatpp-ssdp/SsdpMessage.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-ssdp")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-ssdp/SsdpMessage.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"ssdpmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage"}},[t._v("#")]),t._v(" SsdpMessage")]),t._v(" "),a("p",[t._v("Class Adaptor, representing a single SSDP message.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ssdp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SsdpMessage")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("[none]")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-ssdpmessage"}},[t._v("SsdpMessage")])]),t._v(" "),a("td",[t._v("Constructor.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-flushtostream"}},[t._v("flushToStream")])]),t._v(" "),a("td",[t._v("This flushes the buffered data to any other stream.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-flush"}},[t._v("flush")])]),t._v(" "),a("td",[t._v("This flushes the buffered data to the given input stream")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-write"}},[t._v("write")])]),t._v(" "),a("td",[t._v("Implementation of oatpp::data::stream::IOStream::write.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("v_io_size")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-read"}},[t._v("read")])]),t._v(" "),a("td",[t._v("Implementation of oatpp::data::stream::IOStream::read.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),a("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),a("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),a("td",[t._v("Get output stream context.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("void")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),a("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),a("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#ssdpmessage-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),a("td",[t._v("Get input stream context. "),a("br")])])])]),t._v(" "),a("h3",{attrs:{id:"ssdpmessage-ssdpmessage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-ssdpmessage"}},[t._v("#")]),t._v(" SsdpMessage::SsdpMessage")]),t._v(" "),a("p",[t._v("Constructor. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" incomingStream ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" incomingStream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ssdpmessage-flushtostream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-flushtostream"}},[t._v("#")]),t._v(" SsdpMessage::flushToStream")]),t._v(" "),a("p",[t._v("This flushes the buffered data to any other stream.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("flushToStream")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("OutputStream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" stream"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ssdpmessage-flush"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-flush"}},[t._v("#")]),t._v(" SsdpMessage::flush")]),t._v(" "),a("p",[t._v("This flushes the buffered data to the given input stream")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("flush")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"ssdpmessage-write"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-write"}},[t._v("#")]),t._v(" SsdpMessage::write")]),t._v(" "),a("p",[t._v("Implementation of oatpp::data::stream::IOStream::write. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" buff - buffer containing data to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" count - bytes count you want to write. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-read"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-read"}},[t._v("#")]),t._v(" SsdpMessage::read")]),t._v(" "),a("p",[t._v("Implementation of oatpp::data::stream::IOStream::read. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" buff - buffer to read data to. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),a("li",[a("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - actual amount of bytes read. See "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("v_io_size "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-setoutputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-setoutputstreamiomode"}},[t._v("#")]),t._v(" SsdpMessage::setOutputStreamIOMode")]),t._v(" "),a("p",[t._v("Set OutputStream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-getoutputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-getoutputstreamiomode"}},[t._v("#")]),t._v(" SsdpMessage::getOutputStreamIOMode")]),t._v(" "),a("p",[t._v("Set OutputStream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-getoutputstreamcontext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-getoutputstreamcontext"}},[t._v("#")]),t._v(" SsdpMessage::getOutputStreamContext")]),t._v(" "),a("p",[t._v("Get output stream context. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-setinputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-setinputstreamiomode"}},[t._v("#")]),t._v(" SsdpMessage::setInputStreamIOMode")]),t._v(" "),a("p",[t._v("Set InputStream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-getinputstreamiomode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-getinputstreamiomode"}},[t._v("#")]),t._v(" SsdpMessage::getInputStreamIOMode")]),t._v(" "),a("p",[t._v("Get InputStream I/O mode. "),a("ul",[a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),a("h3",{attrs:{id:"ssdpmessage-getinputstreamcontext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdpmessage-getinputstreamcontext"}},[t._v("#")]),t._v(" SsdpMessage::getInputStreamContext")]),t._v(" "),a("p",[t._v("Get input stream context. "),a("br"),t._v(" "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/9.0d780adb.js b/docs/.vuepress/dist/assets/js/9.0d780adb.js deleted file mode 100644 index b13e09813..000000000 --- a/docs/.vuepress/dist/assets/js/9.0d780adb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{378:function(t,e,s){"use strict";s.r(e);var n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],o={methods:{getMsg:function(){return n[Math.floor(Math.random()*n.length)]}}},i=s(42),h=Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"theme-container"},[e("div",{staticClass:"theme-default-content"},[e("h1",[this._v("404")]),this._v(" "),e("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),e("RouterLink",{attrs:{to:"/"}},[this._v("\n Take me home.\n ")])],1)])}),[],!1,null,null,null);e.default=h.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/90.01716fb8.js b/docs/.vuepress/dist/assets/js/90.01716fb8.js deleted file mode 100644 index af3886285..000000000 --- a/docs/.vuepress/dist/assets/js/90.01716fb8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{462:function(t,r,s){"use strict";s.r(r);var e=s(42),a=Object(e.a)({},(function(){var t=this,r=t.$createElement,s=t._self._c||r;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"ssdpstreamhandler-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-hpp"}},[t._v("#")]),t._v(" SsdpStreamHandler.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/blob/master/src/oatpp-ssdp/SsdpStreamHandler.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/issues/new?title=API%20question&body=In%20file:%20oatpp-ssdp/SsdpStreamHandler.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-ssdp")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-ssdp/SsdpStreamHandler.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"ssdpstreamhandler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler"}},[t._v("#")]),t._v(" SsdpStreamHandler")]),t._v(" "),s("p",[t._v("Handler of SSDP packet stream.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ssdp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SsdpStreamHandler")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" network"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ConnectionHandler"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("TaskProcessingListener "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("[none]")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-ssdpstreamhandler"}},[t._v("SsdpStreamHandler")])]),t._v(" "),s("td",[t._v("Multiple implementations: "),s("br"),s("ol",[s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")]),s("li",[t._v("Constructor. ")])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("std::shared_ptr")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-createshared"}},[t._v("createShared")])]),t._v(" "),s("td",[t._v("Create shared SsdpStreamHandler.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-seterrorhandler"}},[t._v("setErrorHandler")])]),t._v(" "),s("td",[t._v("Set root error handler for all requests coming through this Connection Handler.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-addrequestinterceptor"}},[t._v("addRequestInterceptor")])]),t._v(" "),s("td",[t._v("Set request interceptor. Request intercepted after route is resolved but before corresponding route endpoint is called.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-handleconnection"}},[t._v("handleConnection")])]),t._v(" "),s("td",[t._v("Implementation of oatpp::network::server::ConnectionHandler::handleConnection.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("void")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#ssdpstreamhandler-stop"}},[t._v("stop")])]),t._v(" "),s("td",[t._v("Tell all worker threads to exit when done.")])])])]),t._v(" "),s("h3",{attrs:{id:"ssdpstreamhandler-ssdpstreamhandler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-ssdpstreamhandler"}},[t._v("#")]),t._v(" SsdpStreamHandler::SsdpStreamHandler")]),t._v(" "),s("ol",[s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" components - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-components"}},[t._v("oatpp::web::server::HttpProcessor::Components")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpStreamHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" components"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" router - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpStreamHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpStreamHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("li",[t._v("Constructor. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" router - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),s("li",[s("strong",[t._v("@param")]),t._v(" config - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpProcessor/#httpprocessor-config"}},[t._v("oatpp::web::server::HttpProcessor::Config")]),t._v(". ")],1)]),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpStreamHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Config"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SsdpStreamHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("make_shared"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpProcessor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("router"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" config"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),s("h3",{attrs:{id:"ssdpstreamhandler-createshared"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-createshared"}},[t._v("#")]),t._v(" SsdpStreamHandler::createShared")]),t._v(" "),s("p",[t._v("Create shared SsdpStreamHandler. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" router - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/HttpRouter/#httprouter"}},[t._v("oatpp::web::server::HttpRouter")]),t._v(" to route incoming requests. ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("code",[t._v("std::shared_ptr")]),t._v(" to SsdpStreamHandler. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SsdpStreamHandler"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("HttpRouter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" router"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"ssdpstreamhandler-seterrorhandler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-seterrorhandler"}},[t._v("#")]),t._v(" SsdpStreamHandler::setErrorHandler")]),t._v(" "),s("p",[t._v("Set root error handler for all requests coming through this Connection Handler. All unhandled errors will be handled by this error handler. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" errorHandler - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/handler/ErrorHandler/#errorhandler"}},[t._v("oatpp::web::server::handler::ErrorHandler")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setErrorHandler")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("handler"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ErrorHandler"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" errorHandler"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"ssdpstreamhandler-addrequestinterceptor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-addrequestinterceptor"}},[t._v("#")]),t._v(" SsdpStreamHandler::addRequestInterceptor")]),t._v(" "),s("p",[t._v("Set request interceptor. Request intercepted after route is resolved but before corresponding route endpoint is called. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" interceptor - oatpp::web::server::handler::RequestInterceptor. ")])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRequestInterceptor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("web"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("interceptor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("RequestInterceptor"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" interceptor"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"ssdpstreamhandler-handleconnection"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-handleconnection"}},[t._v("#")]),t._v(" SsdpStreamHandler::handleConnection")]),t._v(" "),s("p",[t._v("Implementation of oatpp::network::server::ConnectionHandler::handleConnection. "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" connection - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#iostream"}},[t._v("oatpp::data::stream::IOStream")]),t._v(" representing connection. ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("handleConnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" provider"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ResourceHandle"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" connection"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ParameterMap"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" params"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),s("h3",{attrs:{id:"ssdpstreamhandler-stop"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdpstreamhandler-stop"}},[t._v("#")]),t._v(" SsdpStreamHandler::stop")]),t._v(" "),s("p",[t._v("Tell all worker threads to exit when done.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])])])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/91.ecc03ed1.js b/docs/.vuepress/dist/assets/js/91.ecc03ed1.js deleted file mode 100644 index 6e095dc41..000000000 --- a/docs/.vuepress/dist/assets/js/91.ecc03ed1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{468:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"udpstream-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-hpp"}},[t._v("#")]),t._v(" UdpStream.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/blob/master/src/oatpp-ssdp/UdpStream.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-ssdp/issues/new?title=API%20question&body=In%20file:%20oatpp-ssdp/UdpStream.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-ssdp")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-ssdp/UdpStream.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"udpstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream"}},[t._v("#")]),t._v(" UdpStream")]),t._v(" "),e("p",[t._v("Class to read/write UDP packets - packet-by-packet.")]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" ssdp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("UdpStream")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" base"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Countable"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOStream "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("[none]")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-udpstream"}},[t._v("UdpStream")])]),t._v(" "),e("td",[t._v("Constructor. Takes an UDP server handle and directly "),e("code",[t._v("recvfrom")]),t._v(" it via populate.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-write"}},[t._v("write")])]),t._v(" "),e("td",[t._v("A single call to write will produce a single UDP-packet.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_size")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-read"}},[t._v("read")])]),t._v(" "),e("td",[t._v("Read a UDP-packet payload data.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-setoutputstreamiomode"}},[t._v("setOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-getoutputstreamiomode"}},[t._v("getOutputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set OutputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-getoutputstreamcontext"}},[t._v("getOutputStreamContext")])]),t._v(" "),e("td",[t._v("Get output stream context.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("void")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-setinputstreamiomode"}},[t._v("setInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Set InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::IOMode")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-getinputstreamiomode"}},[t._v("getInputStreamIOMode")])]),t._v(" "),e("td",[t._v("Get InputStream I/O mode.")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("oatpp::data::stream::Context&")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-getinputstreamcontext"}},[t._v("getInputStreamContext")])]),t._v(" "),e("td",[t._v("Get input stream context. "),e("br")])]),t._v(" "),e("tr",[e("td",[e("code",[t._v("v_io_handle")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#udpstream-gethandle"}},[t._v("getHandle")])]),t._v(" "),e("td",[t._v("Get an underlying IO handle.")])])])]),t._v(" "),e("h3",{attrs:{id:"udpstream-udpstream"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-udpstream"}},[t._v("#")]),t._v(" UdpStream::UdpStream")]),t._v(" "),e("p",[t._v("Constructor. Takes an UDP server handle and directly "),e("code",[t._v("recvfrom")]),t._v(" it via populate. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" - UDP server handle ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("UdpStream")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("v_io_handle handle"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"udpstream-write"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-write"}},[t._v("#")]),t._v(" UdpStream::write")]),t._v(" "),e("p",[t._v("A single call to write will produce a single UDP-packet. "),e("br"),t._v(" Implementation of oatpp::data::stream::IOStream::write. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buff - buffer containing data to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - bytes count you want to write. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes written. See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("write")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-read"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-read"}},[t._v("#")]),t._v(" UdpStream::read")]),t._v(" "),e("p",[t._v("Read a UDP-packet payload data. Multiple calls to "),e("code",[t._v("read()")]),t._v(" will read data from the same UDP-packet. Once data of a single UDP-packet is exhausted, the oatpp::IOError::ZERO is returned to designate the end of a packet. "),e("br"),t._v(" Implementation of oatpp::data::stream::IOStream::read. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" buff - buffer to read data to. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" count - buffer size. ")]),e("li",[e("strong",[t._v("@param")]),t._v(" action - async specific action. If action is NOT "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/async/Coroutine/#action-type-none"}},[t._v("oatpp::async::Action::TYPE_NONE")]),t._v(", then caller MUST return this action on coroutine iteration. ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - actual amount of bytes read. See "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/IODefinitions/#v-io-size"}},[t._v("oatpp::v_io_size")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_size "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("read")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v("buff"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" v_buff_size count"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" async"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Action"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" action"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-setoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-setoutputstreamiomode"}},[t._v("#")]),t._v(" UdpStream::setOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-getoutputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-getoutputstreamiomode"}},[t._v("#")]),t._v(" UdpStream::getOutputStreamIOMode")]),t._v(" "),e("p",[t._v("Set OutputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-getoutputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-getoutputstreamcontext"}},[t._v("#")]),t._v(" UdpStream::getOutputStreamContext")]),t._v(" "),e("p",[t._v("Get output stream context. "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getOutputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-setinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-setinputstreamiomode"}},[t._v("#")]),t._v(" UdpStream::setInputStreamIOMode")]),t._v(" "),e("p",[t._v("Set InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" ioMode ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("setInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode ioMode"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-getinputstreamiomode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-getinputstreamiomode"}},[t._v("#")]),t._v(" UdpStream::getInputStreamIOMode")]),t._v(" "),e("p",[t._v("Get InputStream I/O mode. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("IOMode "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamIOMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-getinputstreamcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-getinputstreamcontext"}},[t._v("#")]),t._v(" UdpStream::getInputStreamContext")]),t._v(" "),e("p",[t._v("Get input stream context. "),e("br"),t._v(" "),e("ul",[e("li",[e("strong",[t._v("@return")]),t._v(" - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#context"}},[t._v("oatpp::data::stream::Context")]),t._v(". ")],1)])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("stream"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Context"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getInputStreamContext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" override\n")])])]),e("h3",{attrs:{id:"udpstream-gethandle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#udpstream-gethandle"}},[t._v("#")]),t._v(" UdpStream::getHandle")]),t._v(" "),e("p",[t._v("Get an underlying IO handle. "),e("ul",[e("li",[e("strong",[t._v("@return")])])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v("v_io_handle "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getHandle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/92.4fae9df5.js b/docs/.vuepress/dist/assets/js/92.4fae9df5.js deleted file mode 100644 index 97590e913..000000000 --- a/docs/.vuepress/dist/assets/js/92.4fae9df5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{463:function(t,a,e){"use strict";e.r(a);var s=e(42),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"asynccontroller-hpp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynccontroller-hpp"}},[t._v("#")]),t._v(" AsyncController.hpp"),e("seo")],1),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/AsyncController.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),e("OutboundLink")],1),e("br"),t._v(" "),e("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/AsyncController.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("code",[t._v("API: latest")]),e("br"),t._v(" "),e("code",[t._v("module: oatpp-swagger")]),e("br"),t._v(" "),e("code",[t._v('#include "oatpp-swagger/AsyncController.hpp"')])]),t._v(" "),e("h2",{attrs:{id:"asynccontroller"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynccontroller"}},[t._v("#")]),t._v(" AsyncController")]),t._v(" "),e("p",[t._v("Asynchronous Controller for Swagger-UI. Extends "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/#apicontroller"}},[t._v("oatpp::web::server::api::ApiController")]),t._v(". "),e("br"),t._v(" Should be used with oatpp Async API and non-blocking I/O. "),e("br"),t._v(" For more information about integrating swagger-ui in oatpp application see "),e("RouterLink",{attrs:{to:"/docs/modules/oatpp-swagger/"}},[t._v("oatpp-swagger module")]),t._v(". "),e("br"),t._v(" Exposed endpoints: "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint-async"}},[t._v("ENDPOINT_ASYNC")]),t._v('("GET", "/api-docs/oas-3.0.0.json", Api) - Server Open API Specification.')],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint-async"}},[t._v("ENDPOINT_ASYNC")]),t._v('("GET", "/swagger/ui", GetUIRoot) - Server Swagger-UI. (index.html).')],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint-async"}},[t._v("ENDPOINT_ASYNC")]),t._v('("GET", "/swagger/{filename}", GetUIResource) - Serve Swagger-UI resources.')],1)])],1),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsyncController")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"methods"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Return Type")]),t._v(" "),e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Summary")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("code",[t._v("std::shared_ptr")])]),t._v(" "),e("td",[e("a",{attrs:{href:"#asynccontroller-createshared"}},[t._v("createShared")])]),t._v(" "),e("td",[t._v("Create shared AsyncController.")])])])]),t._v(" "),e("h3",{attrs:{id:"asynccontroller-createshared"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asynccontroller-createshared"}},[t._v("#")]),t._v(" AsyncController::createShared")]),t._v(" "),e("p",[t._v("Create shared AsyncController. "),e("ul",[e("li",[e("strong",[t._v("@param")]),t._v(" endpointsList - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/Endpoint/#endpoints"}},[t._v("oatpp::web::server::api::Endpoints")])],1),e("li",[e("strong",[t._v("@param")]),t._v(" documentInfo - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentinfo"}},[t._v("oatpp::swagger::DocumentInfo")]),t._v(". ")],1),e("li",[e("strong",[t._v("@param")]),t._v(" resources - "),e("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Resources/#resources"}},[t._v("oatpp::swagger::Resources")]),t._v(". ")],1),e("li",[e("strong",[t._v("@return")]),t._v(" - AsyncController. ")])])]),t._v(" "),e("div",{staticClass:"language-cpp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("AsyncController"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" web"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Endpoints"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpointsList"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentInfo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" documentInfo"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resources"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" resources"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/93.4efd9c4a.js b/docs/.vuepress/dist/assets/js/93.4efd9c4a.js deleted file mode 100644 index d37e0c617..000000000 --- a/docs/.vuepress/dist/assets/js/93.4efd9c4a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{465:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"controller-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#controller-hpp"}},[t._v("#")]),t._v(" Controller.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/Controller.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/Controller.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-swagger")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-swagger/Controller.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#controller"}},[t._v("#")]),t._v(" Controller")]),t._v(" "),a("p",[t._v("Controller for Swagger-UI. Extends "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/ApiController/#apicontroller"}},[t._v("oatpp::web::server::api::ApiController")]),t._v(". "),a("br"),t._v(" Should be used with oatpp Simple API and multithreaded server. "),a("br"),t._v(" For more information about integrating swagger-ui in oatpp application see "),a("RouterLink",{attrs:{to:"/docs/modules/oatpp-swagger/"}},[t._v("oatpp-swagger module")]),t._v(". "),a("br"),t._v(" Exposed endpoints: "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint"}},[t._v("ENDPOINT")]),t._v('("GET", "/api-docs/oas-3.0.0.json", api) - Server Open API Specification.')],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint"}},[t._v("ENDPOINT")]),t._v('("GET", "/swagger/ui", getUIRoot) - Server Swagger-UI. (index.html).')],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/api/latest/oatpp/codegen/api_controller/base_define/#endpoint"}},[t._v("ENDPOINT")]),t._v('("GET", "/swagger/{filename}", getUIResource) - Serve Swagger-UI resources.')],1)])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Controller")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ApiController "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#controller-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Controller.")])])])]),t._v(" "),a("h3",{attrs:{id:"controller-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#controller-createshared"}},[t._v("#")]),t._v(" Controller::createShared")]),t._v(" "),a("p",[t._v("Create shared Controller. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" endpointsList - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/Endpoint/#endpoints"}},[t._v("oatpp::web::server::api::Endpoints")])],1),a("li",[a("strong",[t._v("@param")]),t._v(" documentInfo - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentinfo"}},[t._v("oatpp::swagger::DocumentInfo")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" resources - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Resources/#resources"}},[t._v("oatpp::swagger::Resources")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - Controller. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Controller"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Endpoints"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpointsList"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" documentInfo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("OATPP_COMPONENT")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Resources"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" resources"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/94.296ccab8.js b/docs/.vuepress/dist/assets/js/94.296ccab8.js deleted file mode 100644 index 97416eb73..000000000 --- a/docs/.vuepress/dist/assets/js/94.296ccab8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{464:function(t,e,a){"use strict";a.r(e);var r=a(42),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"generator-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generator-hpp"}},[t._v("#")]),t._v(" Generator.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/Generator.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/Generator.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-swagger")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-swagger/Generator.hpp"')])]),t._v(" "),a("h2",{attrs:{id:"generator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generator"}},[t._v("#")]),t._v(" Generator")]),t._v(" "),a("p",[t._v("Generator of Open Api Specification 3.0.0.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Generator")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"typedefs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typedefs"}},[t._v("#")]),t._v(" Typedefs")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::web::server::api::Endpoint")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#generator-endpoint"}},[t._v("Endpoint")])]),t._v(" "),a("td",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/Endpoint/#endpoint"}},[t._v("oatpp::web::server::api::Endpoint")]),t._v(".")],1)]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::web::server::api::Endpoints")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#generator-endpoints"}},[t._v("Endpoints")])]),t._v(" "),a("td",[t._v("Convenience typedef for list of "),a("a",{attrs:{href:"#generator-endpoint"}},[t._v("Generator::Endpoint")]),t._v(".")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::Object")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#generator-generatedocument"}},[t._v("generateDocument")])]),t._v(" "),a("td",[t._v("Generate Open Api Specification 3.0.0. from "),a("a",{attrs:{href:"#generator-endpoints"}},[t._v("Generator::Endpoints")]),t._v(".")])])])]),t._v(" "),a("h3",{attrs:{id:"generator-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generator-endpoint"}},[t._v("#")]),t._v(" Generator::Endpoint")]),t._v(" "),a("p",[t._v("Convenience typedef for "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/web/server/api/Endpoint/#endpoint"}},[t._v("oatpp::web::server::api::Endpoint")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Endpoint Endpoint\n")])])]),a("h3",{attrs:{id:"generator-endpoints"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generator-endpoints"}},[t._v("#")]),t._v(" Generator::Endpoints")]),t._v(" "),a("p",[t._v("Convenience typedef for list of "),a("a",{attrs:{href:"#generator-endpoint"}},[t._v("Generator::Endpoint")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("web"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("api"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Endpoints Endpoints\n")])])]),a("h3",{attrs:{id:"generator-generatedocument"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generator-generatedocument"}},[t._v("#")]),t._v(" Generator::generateDocument")]),t._v(" "),a("p",[t._v("Generate Open Api Specification 3.0.0. from "),a("a",{attrs:{href:"#generator-endpoints"}},[t._v("Generator::Endpoints")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" docInfo - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentinfo"}},[t._v("oatpp::swagger::DocumentInfo")]),t._v(". ")],1),a("li",[a("strong",[t._v("@param")]),t._v(" endpoints "),a("a",{attrs:{href:"#generator-endpoints"}},[t._v("Generator::Endpoints")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/#document"}},[t._v("oatpp::swagger::oas3::Document")]),t._v(". ")],1)])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Object"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oas3"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Document"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateDocument")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" docInfo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Endpoints"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" endpoints"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/95.c372d9bb.js b/docs/.vuepress/dist/assets/js/95.c372d9bb.js deleted file mode 100644 index a4df4d62b..000000000 --- a/docs/.vuepress/dist/assets/js/95.c372d9bb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{466:function(t,e,a){"use strict";a.r(e);var s=a(42),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"model-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#model-hpp"}},[t._v("#")]),t._v(" Model.hpp"),a("seo")],1),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/Model.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),a("OutboundLink")],1),a("br"),t._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/Model.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("code",[t._v("API: latest")]),a("br"),t._v(" "),a("code",[t._v("module: oatpp-swagger")]),a("br"),t._v(" "),a("code",[t._v('#include "oatpp-swagger/Model.hpp"')])]),t._v(" "),a("p",[t._v("This is the general model for swagger info. It is used as a base model\nto generate API info for a particular API specification. Ex. for OAS3")]),t._v(" "),a("h2",{attrs:{id:"contact"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contact"}},[t._v("#")]),t._v(" Contact")]),t._v(" "),a("p",[t._v("Contact.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Contact")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#contact-name"}},[t._v("name")])]),t._v(" "),a("td",[t._v("name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#contact-url"}},[t._v("url")])]),t._v(" "),a("td",[t._v("url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#contact-email"}},[t._v("email")])]),t._v(" "),a("td",[t._v("email.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#contact-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Contact.")])])])]),t._v(" "),a("h3",{attrs:{id:"contact-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contact-name"}},[t._v("#")]),t._v(" Contact::name")]),t._v(" "),a("p",[t._v("name.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String name\n")])])]),a("h3",{attrs:{id:"contact-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contact-url"}},[t._v("#")]),t._v(" Contact::url")]),t._v(" "),a("p",[t._v("url.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String url\n")])])]),a("h3",{attrs:{id:"contact-email"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contact-email"}},[t._v("#")]),t._v(" Contact::email")]),t._v(" "),a("p",[t._v("email.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String email\n")])])]),a("h3",{attrs:{id:"contact-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contact-createshared"}},[t._v("#")]),t._v(" Contact::createShared")]),t._v(" "),a("p",[t._v("Create shared Contact. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to Contact. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Contact"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"license"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[t._v("#")]),t._v(" License")]),t._v(" "),a("p",[t._v("License.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("License")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#license-name"}},[t._v("name")])]),t._v(" "),a("td",[t._v("name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#license-url"}},[t._v("url")])]),t._v(" "),a("td",[t._v("Url.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#license-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared License.")])])])]),t._v(" "),a("h3",{attrs:{id:"license-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#license-name"}},[t._v("#")]),t._v(" License::name")]),t._v(" "),a("p",[t._v("name.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String name\n")])])]),a("h3",{attrs:{id:"license-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#license-url"}},[t._v("#")]),t._v(" License::url")]),t._v(" "),a("p",[t._v("Url.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String url\n")])])]),a("h3",{attrs:{id:"license-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#license-createshared"}},[t._v("#")]),t._v(" License::createShared")]),t._v(" "),a("p",[t._v("Create shared License. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to License. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("License"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"documentheader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader"}},[t._v("#")]),t._v(" DocumentHeader")]),t._v(" "),a("p",[t._v("Document Header.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DocumentHeader")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-title"}},[t._v("title")])]),t._v(" "),a("td",[t._v("Document title.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-description"}},[t._v("description")])]),t._v(" "),a("td",[t._v("Document description.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-termsofservice"}},[t._v("termsOfService")])]),t._v(" "),a("td",[t._v("Terms of service.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-contact"}},[t._v("contact")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#contact"}},[t._v("Contact")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-license"}},[t._v("license")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#license"}},[t._v("License")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-version"}},[t._v("version")])]),t._v(" "),a("td",[t._v("Version.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared DocumentHeader.")])])])]),t._v(" "),a("h3",{attrs:{id:"documentheader-title"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-title"}},[t._v("#")]),t._v(" DocumentHeader::title")]),t._v(" "),a("p",[t._v("Document title.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String title\n")])])]),a("h3",{attrs:{id:"documentheader-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-description"}},[t._v("#")]),t._v(" DocumentHeader::description")]),t._v(" "),a("p",[t._v("Document description.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String description\n")])])]),a("h3",{attrs:{id:"documentheader-termsofservice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-termsofservice"}},[t._v("#")]),t._v(" DocumentHeader::termsOfService")]),t._v(" "),a("p",[t._v("Terms of service.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String termsOfService\n")])])]),a("h3",{attrs:{id:"documentheader-contact"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-contact"}},[t._v("#")]),t._v(" DocumentHeader::contact")]),t._v(" "),a("p",[a("a",{attrs:{href:"#contact"}},[t._v("Contact")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Contact"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" contact\n")])])]),a("h3",{attrs:{id:"documentheader-license"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-license"}},[t._v("#")]),t._v(" DocumentHeader::license")]),t._v(" "),a("p",[a("a",{attrs:{href:"#license"}},[t._v("License")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("License"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" license\n")])])]),a("h3",{attrs:{id:"documentheader-version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-version"}},[t._v("#")]),t._v(" DocumentHeader::version")]),t._v(" "),a("p",[t._v("Version.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String version\n")])])]),a("h3",{attrs:{id:"documentheader-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentheader-createshared"}},[t._v("#")]),t._v(" DocumentHeader::createShared")]),t._v(" "),a("p",[t._v("Create shared DocumentHeader. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to DocumentHeader. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DocumentHeader"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"servervariable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#servervariable"}},[t._v("#")]),t._v(" ServerVariable")]),t._v(" "),a("p",[t._v("Server variable.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ServerVariable")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-4"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#servervariable-description"}},[t._v("description")])]),t._v(" "),a("td",[t._v("Description.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#servervariable-enumvalues"}},[t._v("enumValues")])]),t._v(" "),a("td",[t._v("Enum values.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#servervariable-defaultvalue"}},[t._v("defaultValue")])]),t._v(" "),a("td",[t._v("Default value.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#servervariable-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared ServerVariable.")])])])]),t._v(" "),a("h3",{attrs:{id:"servervariable-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-description"}},[t._v("#")]),t._v(" ServerVariable::description")]),t._v(" "),a("p",[t._v("Description.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String description\n")])])]),a("h3",{attrs:{id:"servervariable-enumvalues"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-enumvalues"}},[t._v("#")]),t._v(" ServerVariable::enumValues")]),t._v(" "),a("p",[t._v("Enum values.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" enumValues\n")])])]),a("h3",{attrs:{id:"servervariable-defaultvalue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-defaultvalue"}},[t._v("#")]),t._v(" ServerVariable::defaultValue")]),t._v(" "),a("p",[t._v("Default value.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String defaultValue\n")])])]),a("h3",{attrs:{id:"servervariable-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-createshared"}},[t._v("#")]),t._v(" ServerVariable::createShared")]),t._v(" "),a("p",[t._v("Create shared ServerVariable. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to ServerVariable. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ServerVariable"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server"}},[t._v("#")]),t._v(" Server")]),t._v(" "),a("p",[t._v("Server")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Server")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-5"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-url"}},[t._v("url")])]),t._v(" "),a("td",[t._v("Url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-description"}},[t._v("description")])]),t._v(" "),a("td",[t._v("Description.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr>>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-variables"}},[t._v("variables")])]),t._v(" "),a("td",[t._v("Variables.")])])])]),t._v(" "),a("h3",{attrs:{id:"methods-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#server-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared Server.")])])])]),t._v(" "),a("h3",{attrs:{id:"server-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-url"}},[t._v("#")]),t._v(" Server::url")]),t._v(" "),a("p",[t._v("Url.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String url\n")])])]),a("h3",{attrs:{id:"server-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-description"}},[t._v("#")]),t._v(" Server::description")]),t._v(" "),a("p",[t._v("Description.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("String description\n")])])]),a("h3",{attrs:{id:"server-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-variables"}},[t._v("#")]),t._v(" Server::variables")]),t._v(" "),a("p",[t._v("Variables.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ServerVariable"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" variables\n")])])]),a("h3",{attrs:{id:"server-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-createshared"}},[t._v("#")]),t._v(" Server::createShared")]),t._v(" "),a("p",[t._v("Create shared Server. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to Server. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"oauthflow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow"}},[t._v("#")]),t._v(" OAuthFlow")]),t._v(" "),a("p",[t._v("OAuth flow Object https://swagger.io/specification/#oauthFlowObject")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OAuthFlow")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-6"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflow-authorizationurl"}},[t._v("authorizationUrl")])]),t._v(" "),a("td",[t._v("Authorization Url")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflow-tokenurl"}},[t._v("tokenUrl")])]),t._v(" "),a("td",[t._v("Token Url")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflow-refreshurl"}},[t._v("refreshUrl")])]),t._v(" "),a("td",[t._v("Refresh Url")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflow-scopes"}},[t._v("scopes")])]),t._v(" "),a("td",[t._v("Scopes")])])])]),t._v(" "),a("h3",{attrs:{id:"oauthflow-authorizationurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-authorizationurl"}},[t._v("#")]),t._v(" OAuthFlow::authorizationUrl")]),t._v(" "),a("p",[t._v("Authorization Url")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String authorizationUrl\n")])])]),a("h3",{attrs:{id:"oauthflow-tokenurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-tokenurl"}},[t._v("#")]),t._v(" OAuthFlow::tokenUrl")]),t._v(" "),a("p",[t._v("Token Url")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String tokenUrl\n")])])]),a("h3",{attrs:{id:"oauthflow-refreshurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-refreshurl"}},[t._v("#")]),t._v(" OAuthFlow::refreshUrl")]),t._v(" "),a("p",[t._v("Refresh Url")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String refreshUrl\n")])])]),a("h3",{attrs:{id:"oauthflow-scopes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-scopes"}},[t._v("#")]),t._v(" OAuthFlow::scopes")]),t._v(" "),a("p",[t._v("Scopes")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" scopes\n")])])]),a("h2",{attrs:{id:"oauthflows"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows"}},[t._v("#")]),t._v(" OAuthFlows")]),t._v(" "),a("p",[t._v("OAuth Flows Object https://swagger.io/specification/#oauthFlowObject")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OAuthFlows")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-7"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflows-implicit"}},[t._v("implicit")])]),t._v(" "),a("td",[t._v("Implicit")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflows-password"}},[t._v("password")])]),t._v(" "),a("td",[t._v("Password")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflows-clientcredentials"}},[t._v("clientCredentials")])]),t._v(" "),a("td",[t._v("Client Credentials")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#oauthflows-authorizationcode"}},[t._v("authorizationCode")])]),t._v(" "),a("td",[t._v("Authorization Code")])])])]),t._v(" "),a("h3",{attrs:{id:"oauthflows-implicit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-implicit"}},[t._v("#")]),t._v(" OAuthFlows::implicit")]),t._v(" "),a("p",[t._v("Implicit")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" implicit\n")])])]),a("h3",{attrs:{id:"oauthflows-password"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-password"}},[t._v("#")]),t._v(" OAuthFlows::password")]),t._v(" "),a("p",[t._v("Password")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" password\n")])])]),a("h3",{attrs:{id:"oauthflows-clientcredentials"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-clientcredentials"}},[t._v("#")]),t._v(" OAuthFlows::clientCredentials")]),t._v(" "),a("p",[t._v("Client Credentials")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" clientCredentials\n")])])]),a("h3",{attrs:{id:"oauthflows-authorizationcode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-authorizationcode"}},[t._v("#")]),t._v(" OAuthFlows::authorizationCode")]),t._v(" "),a("p",[t._v("Authorization Code")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" authorizationCode\n")])])]),a("h2",{attrs:{id:"securityscheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme"}},[t._v("#")]),t._v(" SecurityScheme")]),t._v(" "),a("p",[t._v("Security Scheme object - https://swagger.io/specification/#securitySchemeObject .")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("struct")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SecurityScheme")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-8"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-type"}},[t._v("type")])]),t._v(" "),a("td",[t._v("Type")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-description"}},[t._v("description")])]),t._v(" "),a("td",[t._v("Description")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-name"}},[t._v("name")])]),t._v(" "),a("td",[t._v("Name")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-in"}},[t._v("in")])]),t._v(" "),a("td",[t._v("In")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-scheme"}},[t._v("scheme")])]),t._v(" "),a("td",[t._v("Scheme")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-bearerformat"}},[t._v("bearerFormat")])]),t._v(" "),a("td",[t._v("Bearer Format.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-flows"}},[t._v("flows")])]),t._v(" "),a("td",[t._v("Flows.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("oatpp::String")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#securityscheme-openidconnecturl"}},[t._v("openIdConnectUrl")])]),t._v(" "),a("td",[t._v("Open Id Connect Url.")])])])]),t._v(" "),a("h3",{attrs:{id:"securityscheme-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-type"}},[t._v("#")]),t._v(" SecurityScheme::type")]),t._v(" "),a("p",[t._v("Type")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String type\n")])])]),a("h3",{attrs:{id:"securityscheme-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-description"}},[t._v("#")]),t._v(" SecurityScheme::description")]),t._v(" "),a("p",[t._v("Description")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String description\n")])])]),a("h3",{attrs:{id:"securityscheme-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-name"}},[t._v("#")]),t._v(" SecurityScheme::name")]),t._v(" "),a("p",[t._v("Name")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String name\n")])])]),a("h3",{attrs:{id:"securityscheme-in"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-in"}},[t._v("#")]),t._v(" SecurityScheme::in")]),t._v(" "),a("p",[t._v("In")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String in\n")])])]),a("h3",{attrs:{id:"securityscheme-scheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-scheme"}},[t._v("#")]),t._v(" SecurityScheme::scheme")]),t._v(" "),a("p",[t._v("Scheme")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String scheme\n")])])]),a("h3",{attrs:{id:"securityscheme-bearerformat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-bearerformat"}},[t._v("#")]),t._v(" SecurityScheme::bearerFormat")]),t._v(" "),a("p",[t._v("Bearer Format.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String bearerFormat\n")])])]),a("h3",{attrs:{id:"securityscheme-flows"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-flows"}},[t._v("#")]),t._v(" SecurityScheme::flows")]),t._v(" "),a("p",[t._v("Flows.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlows"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" flows\n")])])]),a("h3",{attrs:{id:"securityscheme-openidconnecturl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-openidconnecturl"}},[t._v("#")]),t._v(" SecurityScheme::openIdConnectUrl")]),t._v(" "),a("p",[t._v("Open Id Connect Url.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String openIdConnectUrl\n")])])]),a("h2",{attrs:{id:"documentinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo"}},[t._v("#")]),t._v(" DocumentInfo")]),t._v(" "),a("p",[t._v("Document Info.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DocumentInfo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fields-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fields-9"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-header"}},[t._v("header")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentheader"}},[t._v("DocumentHeader")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr>>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-servers"}},[t._v("servers")])]),t._v(" "),a("td",[t._v("List of "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr>>")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemes"}},[t._v("securitySchemes")])]),t._v(" "),a("td",[t._v("Map of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(".")],1)])])]),t._v(" "),a("h3",{attrs:{id:"methods-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-6"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-createshared"}},[t._v("createShared")])]),t._v(" "),a("td",[t._v("Create shared DocumentInfo.")])])])]),t._v(" "),a("h3",{attrs:{id:"documentinfo-header"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-header"}},[t._v("#")]),t._v(" DocumentInfo::header")]),t._v(" "),a("p",[a("a",{attrs:{href:"#documentheader"}},[t._v("DocumentHeader")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DocumentHeader"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" header\n")])])]),a("h3",{attrs:{id:"documentinfo-servers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-servers"}},[t._v("#")]),t._v(" DocumentInfo::servers")]),t._v(" "),a("p",[t._v("List of "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("list"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" servers\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemes"}},[t._v("#")]),t._v(" DocumentInfo::securitySchemes")]),t._v(" "),a("p",[t._v("Map of "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("unordered_map"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" securitySchemes\n")])])]),a("h3",{attrs:{id:"documentinfo-createshared"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-createshared"}},[t._v("#")]),t._v(" DocumentInfo::createShared")]),t._v(" "),a("p",[t._v("Create shared DocumentInfo. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - 'std::shared_ptr' to DocumentInfo. ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("createShared")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"documentinfo-securityschemebuilder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder")]),t._v(" "),a("p",[t._v("SecurityScheme Builder.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DocumentInfo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SecuritySchemeBuilder")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-7"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-defaultbasicauthorizationsecurityscheme"}},[t._v("DefaultBasicAuthorizationSecurityScheme")])]),t._v(" "),a("td",[t._v("Convenience default Basic-Authorization SecurityScheme.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-defaultbearerauthorizationsecurityscheme"}},[t._v("DefaultBearerAuthorizationSecurityScheme")])]),t._v(" "),a("td",[t._v("Convenience default Bearer-Authorization SecurityScheme.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-settype"}},[t._v("setType")])]),t._v(" "),a("td",[t._v("Set type.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setdescription"}},[t._v("setDescription")])]),t._v(" "),a("td",[t._v("Set description.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setname"}},[t._v("setName")])]),t._v(" "),a("td",[t._v("Set name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setin"}},[t._v("setIn")])]),t._v(" "),a("td",[t._v("Set 'in'.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setscheme"}},[t._v("setScheme")])]),t._v(" "),a("td",[t._v("Set scheme.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setbearerformat"}},[t._v("setBearerFormat")])]),t._v(" "),a("td",[t._v("Set bearer format.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setimplicitflow"}},[t._v("setImplicitFlow")])]),t._v(" "),a("td",[t._v("Set implicit flow.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setpasswordflow"}},[t._v("setPasswordFlow")])]),t._v(" "),a("td",[t._v("Set password flow.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setclientcredentialsflow"}},[t._v("setClientCredentialsFlow")])]),t._v(" "),a("td",[t._v("Set client credentials flow.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setauthorizationcodeflow"}},[t._v("setAuthorizationCodeFlow")])]),t._v(" "),a("td",[t._v("Set authorization code flow.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("SecuritySchemeBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-setopenidconnecturl"}},[t._v("setOpenIdConnectUrl")])]),t._v(" "),a("td",[t._v("Set open id connect url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-securityschemebuilder-build"}},[t._v("build")])]),t._v(" "),a("td",[t._v("Build SecurityScheme.")])])])]),t._v(" "),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-defaultbasicauthorizationsecurityscheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-defaultbasicauthorizationsecurityscheme"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme")]),t._v(" "),a("p",[t._v("Convenience default Basic-Authorization SecurityScheme. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultBasicAuthorizationSecurityScheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-defaultbearerauthorizationsecurityscheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-defaultbearerauthorizationsecurityscheme"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::DefaultBearerAuthorizationSecurityScheme")]),t._v(" "),a("p",[t._v("Convenience default Bearer-Authorization SecurityScheme. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" bearerFormat - for documentation purposes. ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("DefaultBearerAuthorizationSecurityScheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bearerFormat "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("nullptr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-settype"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-settype"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setType")]),t._v(" "),a("p",[t._v("Set type. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" type ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setType")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setdescription"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setdescription"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setDescription")]),t._v(" "),a("p",[t._v("Set description. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" description ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDescription")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" description"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setname"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setName")]),t._v(" "),a("p",[t._v("Set name. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setin"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setIn")]),t._v(" "),a("p",[t._v("Set 'in'. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" in ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setIn")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" in"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setscheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setscheme"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setScheme")]),t._v(" "),a("p",[t._v("Set scheme. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" scheme ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setScheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" scheme"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setbearerformat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setbearerformat"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setBearerFormat")]),t._v(" "),a("p",[t._v("Set bearer format. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" bearerFormat ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setBearerFormat")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" bearerFormat"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setimplicitflow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setimplicitflow"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setImplicitFlow")]),t._v(" "),a("p",[t._v("Set implicit flow. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" flow - "),a("a",{attrs:{href:"#oauthflow"}},[t._v("OAuthFlow")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setImplicitFlow")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" flow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setpasswordflow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setpasswordflow"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setPasswordFlow")]),t._v(" "),a("p",[t._v("Set password flow. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" flow - "),a("a",{attrs:{href:"#oauthflow"}},[t._v("OAuthFlow")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setPasswordFlow")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" flow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setclientcredentialsflow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setclientcredentialsflow"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setClientCredentialsFlow")]),t._v(" "),a("p",[t._v("Set client credentials flow. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" flow - "),a("a",{attrs:{href:"#oauthflow"}},[t._v("OAuthFlow")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setClientCredentialsFlow")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" flow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setauthorizationcodeflow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setauthorizationcodeflow"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setAuthorizationCodeFlow")]),t._v(" "),a("p",[t._v("Set authorization code flow. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" flow - "),a("a",{attrs:{href:"#oauthflow"}},[t._v("OAuthFlow")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAuthorizationCodeFlow")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" flow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-setopenidconnecturl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-setopenidconnecturl"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::setOpenIdConnectUrl")]),t._v(" "),a("p",[t._v("Set open id connect url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" openIdConnectUrl ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("SecuritySchemeBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setOpenIdConnectUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" openIdConnectUrl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-securityschemebuilder-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-securityschemebuilder-build"}},[t._v("#")]),t._v(" DocumentInfo::SecuritySchemeBuilder::build")]),t._v(" "),a("p",[t._v("Build SecurityScheme. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("code",[t._v("std::shared_ptr")]),t._v(" to "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"documentinfo-oauthflowbuilder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder")]),t._v(" "),a("p",[t._v("OAuthFlow Builder.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DocumentInfo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OAuthFlowBuilder")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-8"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("OAuthFlowBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-oauthflowbuilder-setauthorizationurl"}},[t._v("setAuthorizationUrl")])]),t._v(" "),a("td",[t._v("Set authorization url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("OAuthFlowBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-oauthflowbuilder-settokenurl"}},[t._v("setTokenUrl")])]),t._v(" "),a("td",[t._v("Set token url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("OAuthFlowBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-oauthflowbuilder-setrefreshurl"}},[t._v("setRefreshUrl")])]),t._v(" "),a("td",[t._v("Set refresh url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("OAuthFlowBuilder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-oauthflowbuilder-addscope"}},[t._v("addScope")])]),t._v(" "),a("td",[t._v("add scope.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-oauthflowbuilder-build"}},[t._v("build")])]),t._v(" "),a("td",[t._v("Build OAuthFlow.")])])])]),t._v(" "),a("h3",{attrs:{id:"documentinfo-oauthflowbuilder-setauthorizationurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder-setauthorizationurl"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder::setAuthorizationUrl")]),t._v(" "),a("p",[t._v("Set authorization url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" authorizationUrl ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("OAuthFlowBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAuthorizationUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" authorizationUrl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-oauthflowbuilder-settokenurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder-settokenurl"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder::setTokenUrl")]),t._v(" "),a("p",[t._v("Set token url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" tokenUrl ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("OAuthFlowBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setTokenUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" tokenUrl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-oauthflowbuilder-setrefreshurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder-setrefreshurl"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder::setRefreshUrl")]),t._v(" "),a("p",[t._v("Set refresh url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" refreshUrl ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("OAuthFlowBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setRefreshUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" refreshUrl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-oauthflowbuilder-addscope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder-addscope"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder::addScope")]),t._v(" "),a("p",[t._v("add scope. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name ")]),a("li",[a("strong",[t._v("@param")]),t._v(" scope ")]),a("li",[a("strong",[t._v("@return")])])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("OAuthFlowBuilder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addScope")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" scope"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-oauthflowbuilder-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-oauthflowbuilder-build"}},[t._v("#")]),t._v(" DocumentInfo::OAuthFlowBuilder::build")]),t._v(" "),a("p",[t._v("Build OAuthFlow. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#oauthflow"}},[t._v("OAuthFlow")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"documentinfo-builder"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder"}},[t._v("#")]),t._v(" DocumentInfo::Builder")]),t._v(" "),a("p",[t._v("Document Info Builder.")]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DocumentInfo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Builder")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"methods-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-9"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Return Type")]),t._v(" "),a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Summary")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-settitle"}},[t._v("setTitle")])]),t._v(" "),a("td",[t._v("Set document title.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setdescription"}},[t._v("setDescription")])]),t._v(" "),a("td",[t._v("Set document description.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-settermsofservice"}},[t._v("setTermsOfService")])]),t._v(" "),a("td",[t._v("Set terms of service.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setversion"}},[t._v("setVersion")])]),t._v(" "),a("td",[t._v("Set version.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setcontactname"}},[t._v("setContactName")])]),t._v(" "),a("td",[t._v("Set contact name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setcontacturl"}},[t._v("setContactUrl")])]),t._v(" "),a("td",[t._v("Set contact url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setcontactemail"}},[t._v("setContactEmail")])]),t._v(" "),a("td",[t._v("Set contact email.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setlicensename"}},[t._v("setLicenseName")])]),t._v(" "),a("td",[t._v("Set license name.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-setlicenseurl"}},[t._v("setLicenseUrl")])]),t._v(" "),a("td",[t._v("Set license url.")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-addserver"}},[t._v("addServer")])]),t._v(" "),a("td",[t._v("Multiple implementations: "),a("br"),a("ol",[a("li",[t._v("Add "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(". ")]),a("li",[t._v("Add "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(". ")])])])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("Builder&")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-addsecurityscheme"}},[t._v("addSecurityScheme")])]),t._v(" "),a("td",[t._v("Add "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(".")])]),t._v(" "),a("tr",[a("td",[a("code",[t._v("std::shared_ptr")])]),t._v(" "),a("td",[a("a",{attrs:{href:"#documentinfo-builder-build"}},[t._v("build")])]),t._v(" "),a("td",[t._v("Build Document Info.")])])])]),t._v(" "),a("h3",{attrs:{id:"documentinfo-builder-settitle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-settitle"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setTitle")]),t._v(" "),a("p",[t._v("Set document title. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" title - document title. "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(". ")],1),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setTitle")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" title"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setdescription"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setdescription"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setDescription")]),t._v(" "),a("p",[t._v("Set document description. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" description ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDescription")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" description"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-settermsofservice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-settermsofservice"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setTermsOfService")]),t._v(" "),a("p",[t._v("Set terms of service. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" termsOfService ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setTermsOfService")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" termsOfService"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setversion"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setVersion")]),t._v(" "),a("p",[t._v("Set version. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" version ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" version"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setcontactname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setcontactname"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setContactName")]),t._v(" "),a("p",[t._v("Set contact name. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContactName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setcontacturl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setcontacturl"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setContactUrl")]),t._v(" "),a("p",[t._v("Set contact url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" url ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContactUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setcontactemail"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setcontactemail"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setContactEmail")]),t._v(" "),a("p",[t._v("Set contact email. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" email ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContactEmail")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" email"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setlicensename"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setlicensename"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setLicenseName")]),t._v(" "),a("p",[t._v("Set license name. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLicenseName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-setlicenseurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-setlicenseurl"}},[t._v("#")]),t._v(" DocumentInfo::Builder::setLicenseUrl")]),t._v(" "),a("p",[t._v("Set license url. "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" url ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLicenseUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-addserver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-addserver"}},[t._v("#")]),t._v(" DocumentInfo::Builder::addServer")]),t._v(" "),a("ol",[a("li",[t._v("Add "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" server - "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(". ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Server"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Add "),a("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(". "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" url ")]),a("li",[a("strong",[t._v("@param")]),t._v(" description ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])]),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" description"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"documentinfo-builder-addsecurityscheme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-addsecurityscheme"}},[t._v("#")]),t._v(" DocumentInfo::Builder::addSecurityScheme")]),t._v(" "),a("p",[t._v("Add "),a("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(". When you are using the "),a("code",[t._v("AUTHENTICATION()")]),t._v(" Endpoint-Macro you must add an "),a("a",{attrs:{href:"https://swagger.io/specification/#securitySchemeObject",target:"_blank",rel:"noopener noreferrer"}},[t._v("SecurityScheme"),a("OutboundLink")],1),t._v(". For basic-authentication you can use the default "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentinfo-securityschemebuilder-defaultbasicauthorizationsecurityscheme"}},[t._v("oatpp::swagger::DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme()")]),t._v(". For more complex authentication schemes you can use the "),a("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentinfo-securityschemebuilder"}},[t._v("oatpp::swagger::DocumentInfo::SecuritySchemeBuilder")]),t._v(" builder. Don't forget to add "),a("code",[t._v("info->addSecurityRequirement(name)")]),t._v(" to your "),a("code",[t._v("ENDPOINT_INFO()")]),t._v(" macro! "),a("ul",[a("li",[a("strong",[t._v("@param")]),t._v(" name ")]),a("li",[a("strong",[t._v("@param")]),t._v(" ss ")]),a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo-builder"}},[t._v("DocumentInfo::Builder")]),t._v(". ")])])],1),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("Builder"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSecurityScheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("String"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v("ss"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"documentinfo-builder-build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#documentinfo-builder-build"}},[t._v("#")]),t._v(" DocumentInfo::Builder::build")]),t._v(" "),a("p",[t._v("Build Document Info. "),a("ul",[a("li",[a("strong",[t._v("@return")]),t._v(" - "),a("a",{attrs:{href:"#documentinfo"}},[t._v("DocumentInfo")]),t._v(". ")])])]),t._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[t._v("std"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("DocumentInfo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/96.0f98f6d1.js b/docs/.vuepress/dist/assets/js/96.0f98f6d1.js deleted file mode 100644 index f02978052..000000000 --- a/docs/.vuepress/dist/assets/js/96.0f98f6d1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{467:function(s,e,t){"use strict";t.r(e);var r=t(42),a=Object(r.a)({},(function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"resources-hpp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-hpp"}},[s._v("#")]),s._v(" Resources.hpp"),t("seo")],1),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/Resources.hpp",target:"_blank",rel:"noopener noreferrer"}},[s._v("This File On Github"),t("OutboundLink")],1),t("br"),s._v(" "),t("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/Resources.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[s._v("Ask A Question"),t("OutboundLink")],1)]),s._v(" "),t("p",[t("code",[s._v("API: latest")]),t("br"),s._v(" "),t("code",[s._v("module: oatpp-swagger")]),t("br"),s._v(" "),t("code",[s._v('#include "oatpp-swagger/Resources.hpp"')])]),s._v(" "),t("h2",{attrs:{id:"resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources"}},[s._v("#")]),s._v(" Resources")]),s._v(" "),t("p",[s._v("This class is responsible for loading Swagger-UI resources.")]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" oatpp "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" swagger "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Resources")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])])]),t("h3",{attrs:{id:"methods"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[s._v("#")]),s._v(" Methods")]),s._v(" "),t("table",[t("thead",[t("tr",[t("th",[s._v("Return Type")]),s._v(" "),t("th",[s._v("Name")]),s._v(" "),t("th",[s._v("Summary")])])]),s._v(" "),t("tbody",[t("tr",[t("td",[t("code",[s._v("[none]")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-resources"}},[s._v("Resources")])]),s._v(" "),t("td",[s._v("Constructor.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("std::shared_ptr")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-loadresources"}},[s._v("loadResources")])]),s._v(" "),t("td",[s._v("Load and cache Swagger-UI resources.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("std::shared_ptr")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-streamresources"}},[s._v("streamResources")])]),s._v(" "),t("td",[s._v("Stream Swagger-UI resources directly from disk.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("oatpp::String")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-getresource"}},[s._v("getResource")])]),s._v(" "),t("td",[s._v("Get cached resource by filename.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("std::shared_ptr")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-getresourcestream"}},[s._v("getResourceStream")])]),s._v(" "),t("td",[s._v("Get streamed resource by filename.")])]),s._v(" "),t("tr",[t("td",[t("code",[s._v("bool")])]),s._v(" "),t("td",[t("a",{attrs:{href:"#resources-isstreaming"}},[s._v("isStreaming")])]),s._v(" "),t("td",[s._v("Returns true if this is a streaming ressource instance.")])])])]),s._v(" "),t("h3",{attrs:{id:"resources-resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-resources"}},[s._v("#")]),s._v(" Resources::Resources")]),s._v(" "),t("p",[s._v("Constructor. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" resDir - directory containing swagger-ui resources. ")])])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Resources")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" resDir"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("bool")]),s._v(" streaming "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h3",{attrs:{id:"resources-loadresources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-loadresources"}},[s._v("#")]),s._v(" Resources::loadResources")]),s._v(" "),t("p",[s._v("Load and cache Swagger-UI resources. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" resDir - directory containing swagger-ui resources. ")]),t("li",[t("strong",[s._v("@return")]),s._v(" - "),t("code",[s._v("std::shared_ptr")]),s._v(" to Resources. ")])])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" std"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("Resources"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("loadResources")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" resDir"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h3",{attrs:{id:"resources-streamresources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-streamresources"}},[s._v("#")]),s._v(" Resources::streamResources")]),s._v(" "),t("p",[s._v("Stream Swagger-UI resources directly from disk. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" resDir - directory containing swagger-ui resources. ")]),t("li",[t("strong",[s._v("@return")]),s._v(" - "),t("code",[s._v("std::shared_ptr")]),s._v(" to Resources. ")])])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" std"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("Resources"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("streamResources")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" resDir"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h3",{attrs:{id:"resources-getresource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-getresource"}},[s._v("#")]),s._v(" Resources::getResource")]),s._v(" "),t("p",[s._v("Get cached resource by filename. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" filename - name of the resource file. ")]),t("li",[t("strong",[s._v("@return")]),s._v(" - "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[s._v("oatpp::String")]),s._v(" containing resource binary data. ")],1)])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("getResource")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" filename"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h3",{attrs:{id:"resources-getresourcestream"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-getresourcestream"}},[s._v("#")]),s._v(" Resources::getResourceStream")]),s._v(" "),t("p",[s._v("Get streamed resource by filename. "),t("ul",[t("li",[t("strong",[s._v("@param")]),s._v(" filename - name of the resource file. ")]),t("li",[t("strong",[s._v("@return")]),s._v(" - "),t("code",[s._v("std::shared_ptr")]),s._v(" to "),t("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/stream/Stream/#readcallback"}},[s._v("oatpp::data::stream::ReadCallback")]),s._v(' containing resource binary data stream." ')],1)])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[s._v("std"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("shared_ptr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ReadCallback"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("getResourceStream")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" oatpp"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("::")]),s._v("String"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v(" filename"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),t("h3",{attrs:{id:"resources-isstreaming"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resources-isstreaming"}},[s._v("#")]),s._v(" Resources::isStreaming")]),s._v(" "),t("p",[s._v("Returns true if this is a streaming ressource instance. "),t("ul",[t("li",[t("strong",[s._v("@return")])])])]),s._v(" "),t("div",{staticClass:"language-cpp extra-class"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("bool")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("isStreaming")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/97.e030ec5b.js b/docs/.vuepress/dist/assets/js/97.e030ec5b.js deleted file mode 100644 index 5d6dd1be7..000000000 --- a/docs/.vuepress/dist/assets/js/97.e030ec5b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{469:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"types-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types-hpp"}},[t._v("#")]),t._v(" Types.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/Types.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/Types.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-swagger")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-swagger/Types.hpp"')])]),t._v(" "),s("h2",{attrs:{id:"binary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[t._v("#")]),t._v(" Binary")]),t._v(" "),s("p",[t._v("Binary type class info.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" __class "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Binary")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("const oatpp::data::mapping::type::ClassId")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#binary-class-id"}},[t._v("CLASS_ID")])]),t._v(" "),s("td",[t._v("CLASS_NAME = "),s("code",[t._v('"string"')]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("oatpp::Type*")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#binary-gettype"}},[t._v("getType")])]),t._v(" "),s("td",[t._v("Get type information.")])])])]),t._v(" "),s("h3",{attrs:{id:"binary-class-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary-class-id"}},[t._v("#")]),t._v(" Binary::CLASS_ID")]),t._v(" "),s("p",[t._v("CLASS_NAME = "),s("code",[t._v('"string"')]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ClassId CLASS_ID\n")])])]),s("h3",{attrs:{id:"binary-gettype"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary-gettype"}},[t._v("#")]),t._v(" Binary::getType")]),t._v(" "),s("p",[t._v("Get type information. "),s("ul",[s("li",[s("strong",[t._v("@return")]),t._v(" - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/data/mapping/type/Type/#type"}},[t._v("oatpp::data::mapping::type::Type")]),t._v(". ")],1)])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getType")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"binary-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary-2"}},[t._v("#")]),t._v(" Binary")]),t._v(" "),s("p",[s("strong",[t._v("Namespace:")]),t._v(" "),s("code",[t._v("oatpp::swagger")])]),t._v(" "),s("p",[t._v("Typedef for Binary. It is used to indicate file upload in Swagger-UI. "),s("br"),t._v(" Usage example: "),s("code",[t._v('info->addConsumes("application/octet-stream");')]),t._v("."),s("br"),t._v(" For more info see: "),s("RouterLink",{attrs:{to:"/docs/components/api-controller/#endpoint-annotation-and-api-documentation"}},[t._v("Endpoint Annotation And API Documentation")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typedef")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("mapping"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("type"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ObjectWrapper"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" __class"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Binary"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" Binary\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/98.d3130ffd.js b/docs/.vuepress/dist/assets/js/98.d3130ffd.js deleted file mode 100644 index 65971ca20..000000000 --- a/docs/.vuepress/dist/assets/js/98.d3130ffd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{470:function(t,a,s){"use strict";s.r(a);var e=s(42),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"model-hpp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#model-hpp"}},[t._v("#")]),t._v(" Model.hpp"),s("seo")],1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/blob/master/src/oatpp-swagger/oas3/Model.hpp",target:"_blank",rel:"noopener noreferrer"}},[t._v("This File On Github"),s("OutboundLink")],1),s("br"),t._v(" "),s("a",{attrs:{href:"https://github.com/oatpp/oatpp-swagger/issues/new?title=API%20question&body=In%20file:%20oatpp-swagger/oas3/Model.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ask A Question"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("code",[t._v("API: latest")]),s("br"),t._v(" "),s("code",[t._v("module: oatpp-swagger")]),s("br"),t._v(" "),s("code",[t._v('#include "oatpp-swagger/oas3/Model.hpp"')])]),t._v(" "),s("p",[t._v("This file contains Open Api 3.0.0 Specification Model.")]),t._v(" "),s("h2",{attrs:{id:"contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact"}},[t._v("#")]),t._v(" Contact")]),t._v(" "),s("p",[t._v("Contact.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Contact")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#contact-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#contact-url"}},[t._v("url")])]),t._v(" "),s("td",[t._v("Url.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#contact-email"}},[t._v("email")])]),t._v(" "),s("td",[t._v("Email.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#contact-createfrombasemodel"}},[t._v("createFromBaseModel")])]),t._v(" "),s("td",[t._v("Create Contact from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#contact"}},[t._v("oatpp::swagger::Contact")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"contact-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact-name"}},[t._v("#")]),t._v(" Contact::name")]),t._v(" "),s("p",[t._v("Name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"contact-url"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact-url"}},[t._v("#")]),t._v(" Contact::url")]),t._v(" "),s("p",[t._v("Url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"contact-email"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact-email"}},[t._v("#")]),t._v(" Contact::email")]),t._v(" "),s("p",[t._v("Email.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" email"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"contact-createfrombasemodel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact-createfrombasemodel"}},[t._v("#")]),t._v(" Contact::createFromBaseModel")]),t._v(" "),s("p",[t._v("Create Contact from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#contact"}},[t._v("oatpp::swagger::Contact")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" model - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#contact"}},[t._v("oatpp::swagger::Contact")])],1),s("li",[s("strong",[t._v("@return")]),t._v(" - Contact. ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Wrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFromBaseModel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Contact"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" model"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"license"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[t._v("#")]),t._v(" License")]),t._v(" "),s("p",[t._v("License.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("License")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-2"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#license-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#license-url"}},[t._v("url")])]),t._v(" "),s("td",[t._v("Url.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#license-createfrombasemodel"}},[t._v("createFromBaseModel")])]),t._v(" "),s("td",[t._v("Create Liscense from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#license"}},[t._v("oatpp::swagger::License")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"license-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license-name"}},[t._v("#")]),t._v(" License::name")]),t._v(" "),s("p",[t._v("Name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"license-url"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license-url"}},[t._v("#")]),t._v(" License::url")]),t._v(" "),s("p",[t._v("Url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"license-createfrombasemodel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license-createfrombasemodel"}},[t._v("#")]),t._v(" License::createFromBaseModel")]),t._v(" "),s("p",[t._v("Create Liscense from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#license"}},[t._v("oatpp::swagger::License")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" model - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#license"}},[t._v("oatpp::swagger::License")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - License. ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Wrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFromBaseModel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("License"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" model"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info"}},[t._v("#")]),t._v(" Info")]),t._v(" "),s("p",[t._v("Info.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Info")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-3"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-title"}},[t._v("title")])]),t._v(" "),s("td",[t._v("Title.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-termsofservice"}},[t._v("termsOfService")])]),t._v(" "),s("td",[t._v("Terms of service.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-contact"}},[t._v("contact")])]),t._v(" "),s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/#contact"}},[t._v("oatpp::swagger::oas3::Contact")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-license"}},[t._v("license")])]),t._v(" "),s("td",[s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/#license"}},[t._v("oatpp::swagger::oas3::License")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-version"}},[t._v("version")])]),t._v(" "),s("td",[t._v("Version.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-3"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info-createfrombasemodel"}},[t._v("createFromBaseModel")])]),t._v(" "),s("td",[t._v("Create Info from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentheader"}},[t._v("oatpp::swagger::DocumentHeader")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"info-title"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-title"}},[t._v("#")]),t._v(" Info::title")]),t._v(" "),s("p",[t._v("Title.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" title"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-description"}},[t._v("#")]),t._v(" Info::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-termsofservice"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-termsofservice"}},[t._v("#")]),t._v(" Info::termsOfService")]),t._v(" "),s("p",[t._v("Terms of service.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" termsOfService"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-contact"}},[t._v("#")]),t._v(" Info::contact")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/#contact"}},[t._v("oatpp::swagger::oas3::Contact")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Contact"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" contact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-license"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-license"}},[t._v("#")]),t._v(" Info::license")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/oas3/Model/#license"}},[t._v("oatpp::swagger::oas3::License")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("License"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" license"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-version"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-version"}},[t._v("#")]),t._v(" Info::version")]),t._v(" "),s("p",[t._v("Version.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" version"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"info-createfrombasemodel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#info-createfrombasemodel"}},[t._v("#")]),t._v(" Info::createFromBaseModel")]),t._v(" "),s("p",[t._v("Create Info from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentheader"}},[t._v("oatpp::swagger::DocumentHeader")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" model - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#documentheader"}},[t._v("oatpp::swagger::DocumentHeader")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - Info. ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Wrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFromBaseModel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DocumentHeader"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" model"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"servervariable"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servervariable"}},[t._v("#")]),t._v(" ServerVariable")]),t._v(" "),s("p",[t._v("Server Variable.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ServerVariable")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-4"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#servervariable-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#servervariable-enumvalues"}},[t._v("enumValues")])]),t._v(" "),s("td",[t._v("Enum values.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#servervariable-defaultvalue"}},[t._v("defaultValue")])]),t._v(" "),s("td",[t._v("Default value.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-4"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#servervariable-createfrombasemodel"}},[t._v("createFromBaseModel")])]),t._v(" "),s("td",[t._v("Create ServerVariable from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#servervariable"}},[t._v("oatpp::swagger::ServerVariable")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"servervariable-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-description"}},[t._v("#")]),t._v(" ServerVariable::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"servervariable-enumvalues"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-enumvalues"}},[t._v("#")]),t._v(" ServerVariable::enumValues")]),t._v(" "),s("p",[t._v("Enum values.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" enumValues"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"enum"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"servervariable-defaultvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-defaultvalue"}},[t._v("#")]),t._v(" ServerVariable::defaultValue")]),t._v(" "),s("p",[t._v("Default value.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" defaultValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"servervariable-createfrombasemodel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servervariable-createfrombasemodel"}},[t._v("#")]),t._v(" ServerVariable::createFromBaseModel")]),t._v(" "),s("p",[t._v("Create ServerVariable from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#servervariable"}},[t._v("oatpp::swagger::ServerVariable")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" model - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#servervariable"}},[t._v("oatpp::swagger::ServerVariable")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - ServerVariable. ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Wrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFromBaseModel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("ServerVariable"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" model"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"server"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server"}},[t._v("#")]),t._v(" Server")]),t._v(" "),s("p",[t._v("Server.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Server")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-5"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#server-url"}},[t._v("url")])]),t._v(" "),s("td",[t._v("Url.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#server-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#server-variables"}},[t._v("variables")])]),t._v(" "),s("td",[t._v("Variables.")])])])]),t._v(" "),s("h3",{attrs:{id:"methods-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-5"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Return Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Wrapper")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#server-createfrombasemodel"}},[t._v("createFromBaseModel")])]),t._v(" "),s("td",[t._v("Create Server from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#server"}},[t._v("oatpp::swagger::Server")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"server-url"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-url"}},[t._v("#")]),t._v(" Server::url")]),t._v(" "),s("p",[t._v("Url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"server-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-description"}},[t._v("#")]),t._v(" Server::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"server-variables"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-variables"}},[t._v("#")]),t._v(" Server::variables")]),t._v(" "),s("p",[t._v("Variables.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("ServerVariable"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" variables"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"server-createfrombasemodel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-createfrombasemodel"}},[t._v("#")]),t._v(" Server::createFromBaseModel")]),t._v(" "),s("p",[t._v("Create Server from "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#server"}},[t._v("oatpp::swagger::Server")]),t._v(". "),s("ul",[s("li",[s("strong",[t._v("@param")]),t._v(" model - "),s("RouterLink",{attrs:{to:"/api/latest/oatpp-swagger/Model/#server"}},[t._v("oatpp::swagger::Server")]),t._v(". ")],1),s("li",[s("strong",[t._v("@return")]),t._v(" - Server. ")])])],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" Wrapper "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createFromBaseModel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" std"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("shared_ptr"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("swagger"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("Server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),t._v(" model"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"schema"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema"}},[t._v("#")]),t._v(" Schema")]),t._v(" "),s("p",[t._v("Schema.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Schema")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-6"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-type"}},[t._v("type")])]),t._v(" "),s("td",[t._v("Type. Ex.: integer, string, etc.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-format"}},[t._v("format")])]),t._v(" "),s("td",[t._v("Format. Ex.: int32, int64, etc.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description of the field.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Any")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-defaultvalue"}},[t._v("defaultValue")])]),t._v(" "),s("td",[t._v("Default value for the field.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-pattern"}},[t._v("pattern")])]),t._v(" "),s("td",[t._v("Pattern value for the field.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-minimum"}},[t._v("minimum")])]),t._v(" "),s("td",[t._v("Minimum value.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Int64")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-maximum"}},[t._v("maximum")])]),t._v(" "),s("td",[t._v("Maximum value.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-properties"}},[t._v("properties")])]),t._v(" "),s("td",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-additionalproperties"}},[t._v("additionalProperties")])]),t._v(" "),s("td",[t._v("Additional properties.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-items"}},[t._v("items")])]),t._v(" "),s("td",[t._v("Items.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Boolean")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-uniqueitems"}},[t._v("uniqueItems")])]),t._v(" "),s("td",[t._v("Items should be unique. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-enumvalues"}},[t._v("enumValues")])]),t._v(" "),s("td",[t._v("Enum of possible values.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-required"}},[t._v("required")])]),t._v(" "),s("td",[t._v("List of required fields.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema-ref"}},[t._v("ref")])]),t._v(" "),s("td",[t._v("Ref.")])])])]),t._v(" "),s("h3",{attrs:{id:"schema-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-type"}},[t._v("#")]),t._v(" Schema::type")]),t._v(" "),s("p",[t._v("Type. Ex.: integer, string, etc.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-format"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-format"}},[t._v("#")]),t._v(" Schema::format")]),t._v(" "),s("p",[t._v("Format. Ex.: int32, int64, etc.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" format"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-description"}},[t._v("#")]),t._v(" Schema::description")]),t._v(" "),s("p",[t._v("Description of the field.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-defaultvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-defaultvalue"}},[t._v("#")]),t._v(" Schema::defaultValue")]),t._v(" "),s("p",[t._v("Default value for the field.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" defaultValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-pattern"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-pattern"}},[t._v("#")]),t._v(" Schema::pattern")]),t._v(" "),s("p",[t._v("Pattern value for the field.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pattern"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"pattern"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-minimum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-minimum"}},[t._v("#")]),t._v(" Schema::minimum")]),t._v(" "),s("p",[t._v("Minimum value.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" minimum"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-maximum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-maximum"}},[t._v("#")]),t._v(" Schema::maximum")]),t._v(" "),s("p",[t._v("Maximum value.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Int64"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" maximum"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-properties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-properties"}},[t._v("#")]),t._v(" Schema::properties")]),t._v(" "),s("p",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" properties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-additionalproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-additionalproperties"}},[t._v("#")]),t._v(" Schema::additionalProperties")]),t._v(" "),s("p",[t._v("Additional properties.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" additionalProperties"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-items"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-items"}},[t._v("#")]),t._v(" Schema::items")]),t._v(" "),s("p",[t._v("Items.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" items"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-uniqueitems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-uniqueitems"}},[t._v("#")]),t._v(" Schema::uniqueItems")]),t._v(" "),s("p",[t._v("Items should be unique. "),s("ul",[s("li",[s("strong",[t._v("@return")])])])]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" uniqueItems"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-enumvalues"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-enumvalues"}},[t._v("#")]),t._v(" Schema::enumValues")]),t._v(" "),s("p",[t._v("Enum of possible values.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" enumValues"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"enum"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-required"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-required"}},[t._v("#")]),t._v(" Schema::required")]),t._v(" "),s("p",[t._v("List of required fields.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" required"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"required"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"schema-ref"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#schema-ref"}},[t._v("#")]),t._v(" Schema::ref")]),t._v(" "),s("p",[t._v("Ref.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ref"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"$ref"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),s("p",[t._v("Example.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Example")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-7"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Any")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#example-value"}},[t._v("value")])]),t._v(" "),s("td",[t._v("Example value.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#example-summary"}},[t._v("summary")])]),t._v(" "),s("td",[t._v("Summary.")])])])]),t._v(" "),s("h3",{attrs:{id:"example-value"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-value"}},[t._v("#")]),t._v(" Example::value")]),t._v(" "),s("p",[t._v("Example value.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Any"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"example-summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-summary"}},[t._v("#")]),t._v(" Example::summary")]),t._v(" "),s("p",[t._v("Summary.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" summary"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"mediatypeobject"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mediatypeobject"}},[t._v("#")]),t._v(" MediaTypeObject")]),t._v(" "),s("p",[t._v("Media type object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MediaTypeObject")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-8"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#mediatypeobject-schema"}},[t._v("schema")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#mediatypeobject-examples"}},[t._v("examples")])]),t._v(" "),s("td",[t._v("Examples.")])])])]),t._v(" "),s("h3",{attrs:{id:"mediatypeobject-schema"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mediatypeobject-schema"}},[t._v("#")]),t._v(" MediaTypeObject::schema")]),t._v(" "),s("p",[s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"mediatypeobject-examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mediatypeobject-examples"}},[t._v("#")]),t._v(" MediaTypeObject::examples")]),t._v(" "),s("p",[t._v("Examples.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Example"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" examples"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"oauthflow"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow"}},[t._v("#")]),t._v(" OAuthFlow")]),t._v(" "),s("p",[t._v("OAuth flow Object https://swagger.io/specification/#oauthFlowObject")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OAuthFlow")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-9"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflow-authorizationurl"}},[t._v("authorizationUrl")])]),t._v(" "),s("td",[t._v("Authorization url.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflow-tokenurl"}},[t._v("tokenUrl")])]),t._v(" "),s("td",[t._v("Token url.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflow-refreshurl"}},[t._v("refreshUrl")])]),t._v(" "),s("td",[t._v("Refresh url.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflow-scopes"}},[t._v("scopes")])]),t._v(" "),s("td",[t._v("Scopes.")])])])]),t._v(" "),s("h3",{attrs:{id:"oauthflow-authorizationurl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-authorizationurl"}},[t._v("#")]),t._v(" OAuthFlow::authorizationUrl")]),t._v(" "),s("p",[t._v("Authorization url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authorizationUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflow-tokenurl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-tokenurl"}},[t._v("#")]),t._v(" OAuthFlow::tokenUrl")]),t._v(" "),s("p",[t._v("Token url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" tokenUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflow-refreshurl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-refreshurl"}},[t._v("#")]),t._v(" OAuthFlow::refreshUrl")]),t._v(" "),s("p",[t._v("Refresh url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" refreshUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflow-scopes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflow-scopes"}},[t._v("#")]),t._v(" OAuthFlow::scopes")]),t._v(" "),s("p",[t._v("Scopes.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" scopes"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"oauthflows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows"}},[t._v("#")]),t._v(" OAuthFlows")]),t._v(" "),s("p",[t._v("OAuth Flows Object https://swagger.io/specification/#oauthFlowObject")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OAuthFlows")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-10"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflows-implicit"}},[t._v("implicit")])]),t._v(" "),s("td",[t._v("Implicit.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflows-password"}},[t._v("password")])]),t._v(" "),s("td",[t._v("Password.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflows-clientcredentials"}},[t._v("clientCredentials")])]),t._v(" "),s("td",[t._v("Client credentials.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#oauthflows-authorizationcode"}},[t._v("authorizationCode")])]),t._v(" "),s("td",[t._v("Authorization code.")])])])]),t._v(" "),s("h3",{attrs:{id:"oauthflows-implicit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-implicit"}},[t._v("#")]),t._v(" OAuthFlows::implicit")]),t._v(" "),s("p",[t._v("Implicit.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" implicit"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflows-password"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-password"}},[t._v("#")]),t._v(" OAuthFlows::password")]),t._v(" "),s("p",[t._v("Password.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflows-clientcredentials"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-clientcredentials"}},[t._v("#")]),t._v(" OAuthFlows::clientCredentials")]),t._v(" "),s("p",[t._v("Client credentials.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" clientCredentials"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"oauthflows-authorizationcode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#oauthflows-authorizationcode"}},[t._v("#")]),t._v(" OAuthFlows::authorizationCode")]),t._v(" "),s("p",[t._v("Authorization code.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlow"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" authorizationCode"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"securityscheme"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme"}},[t._v("#")]),t._v(" SecurityScheme")]),t._v(" "),s("p",[t._v("Security Scheme object.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SecurityScheme")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-11"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-type"}},[t._v("type")])]),t._v(" "),s("td",[t._v("Type.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-in"}},[t._v("in")])]),t._v(" "),s("td",[t._v("'In'.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-scheme"}},[t._v("scheme")])]),t._v(" "),s("td",[t._v("Scheme.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-bearerformat"}},[t._v("bearerFormat")])]),t._v(" "),s("td",[t._v("Bearer format.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-flows"}},[t._v("flows")])]),t._v(" "),s("td",[t._v("Flows.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#securityscheme-openidconnecturl"}},[t._v("openIdConnectUrl")])]),t._v(" "),s("td",[t._v("Open id connect url.")])])])]),t._v(" "),s("h3",{attrs:{id:"securityscheme-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-type"}},[t._v("#")]),t._v(" SecurityScheme::type")]),t._v(" "),s("p",[t._v("Type.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-description"}},[t._v("#")]),t._v(" SecurityScheme::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-name"}},[t._v("#")]),t._v(" SecurityScheme::name")]),t._v(" "),s("p",[t._v("Name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-in"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-in"}},[t._v("#")]),t._v(" SecurityScheme::in")]),t._v(" "),s("p",[t._v("'In'.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" in"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-scheme"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-scheme"}},[t._v("#")]),t._v(" SecurityScheme::scheme")]),t._v(" "),s("p",[t._v("Scheme.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" scheme"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-bearerformat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-bearerformat"}},[t._v("#")]),t._v(" SecurityScheme::bearerFormat")]),t._v(" "),s("p",[t._v("Bearer format.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" bearerFormat"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-flows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-flows"}},[t._v("#")]),t._v(" SecurityScheme::flows")]),t._v(" "),s("p",[t._v("Flows.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OAuthFlows"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" flows"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"securityscheme-openidconnecturl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#securityscheme-openidconnecturl"}},[t._v("#")]),t._v(" SecurityScheme::openIdConnectUrl")]),t._v(" "),s("p",[t._v("Open id connect url.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" openIdConnectUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"operationresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#operationresponse"}},[t._v("#")]),t._v(" OperationResponse")]),t._v(" "),s("p",[t._v("Operation Response.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OperationResponse")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-12"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#operationresponse-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#operationresponse-content"}},[t._v("content")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#mediatypeobject"}},[t._v("MediaTypeObject")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"operationresponse-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#operationresponse-description"}},[t._v("#")]),t._v(" OperationResponse::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"operationresponse-content"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#operationresponse-content"}},[t._v("#")]),t._v(" OperationResponse::content")]),t._v(" "),s("p",[s("a",{attrs:{href:"#mediatypeobject"}},[t._v("MediaTypeObject")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MediaTypeObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" content"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"requestbody"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestbody"}},[t._v("#")]),t._v(" RequestBody")]),t._v(" "),s("p",[t._v("Request body.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RequestBody")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-13"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestbody-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Boolean")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestbody-required"}},[t._v("required")])]),t._v(" "),s("td",[t._v("Required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#requestbody-content"}},[t._v("content")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#mediatypeobject"}},[t._v("MediaTypeObject")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"requestbody-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestbody-description"}},[t._v("#")]),t._v(" RequestBody::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"requestbody-required"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestbody-required"}},[t._v("#")]),t._v(" RequestBody::required")]),t._v(" "),s("p",[t._v("Required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" required"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"requestbody-content"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requestbody-content"}},[t._v("#")]),t._v(" RequestBody::content")]),t._v(" "),s("p",[s("a",{attrs:{href:"#mediatypeobject"}},[t._v("MediaTypeObject")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MediaTypeObject"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" content"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"pathitemparameter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter"}},[t._v("#")]),t._v(" PathItemParameter")]),t._v(" "),s("p",[t._v("Path item parameter.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PathItemParameter")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-14"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-name"}},[t._v("name")])]),t._v(" "),s("td",[t._v("Parameter name.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Parameter description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-in"}},[t._v("in")])]),t._v(" "),s("td",[t._v('Parameter place - "query", "header", "path"')])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Boolean")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-required"}},[t._v("required")])]),t._v(" "),s("td",[t._v("Is Parameter required.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Boolean")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-deprecated"}},[t._v("deprecated")])]),t._v(" "),s("td",[t._v("Is Parameter deprecated.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-schema"}},[t._v("schema")])]),t._v(" "),s("td",[t._v("Parameter schema. "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemparameter-examples"}},[t._v("examples")])]),t._v(" "),s("td",[t._v("Examples.")])])])]),t._v(" "),s("h3",{attrs:{id:"pathitemparameter-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-name"}},[t._v("#")]),t._v(" PathItemParameter::name")]),t._v(" "),s("p",[t._v("Parameter name.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-description"}},[t._v("#")]),t._v(" PathItemParameter::description")]),t._v(" "),s("p",[t._v("Parameter description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-in"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-in"}},[t._v("#")]),t._v(" PathItemParameter::in")]),t._v(" "),s("p",[t._v('Parameter place - "query", "header", "path"')]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" in"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-required"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-required"}},[t._v("#")]),t._v(" PathItemParameter::required")]),t._v(" "),s("p",[t._v("Is Parameter required.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" required"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-deprecated"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-deprecated"}},[t._v("#")]),t._v(" PathItemParameter::deprecated")]),t._v(" "),s("p",[t._v("Is Parameter deprecated.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Boolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" deprecated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-schema"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-schema"}},[t._v("#")]),t._v(" PathItemParameter::schema")]),t._v(" "),s("p",[t._v("Parameter schema. "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemparameter-examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemparameter-examples"}},[t._v("#")]),t._v(" PathItemParameter::examples")]),t._v(" "),s("p",[t._v("Examples.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Example"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" examples"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"pathitemoperation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation"}},[t._v("#")]),t._v(" PathItemOperation")]),t._v(" "),s("p",[t._v("Path item operation.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PathItemOperation")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-15"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-description"}},[t._v("description")])]),t._v(" "),s("td",[t._v("Description.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-summary"}},[t._v("summary")])]),t._v(" "),s("td",[t._v("Summary.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-operationid"}},[t._v("operationId")])]),t._v(" "),s("td",[t._v("Operation ID.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-requestbody"}},[t._v("requestBody")])]),t._v(" "),s("td",[t._v("Request Body.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-tags"}},[t._v("tags")])]),t._v(" "),s("td",[t._v("List of tags.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-responses"}},[t._v("responses")])]),t._v(" "),s("td",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#operationresponse"}},[t._v("OperationResponse")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-parameters"}},[t._v("parameters")])]),t._v(" "),s("td",[t._v("List of "),s("a",{attrs:{href:"#pathitemparameter"}},[t._v("PathItemParameter")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List>>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitemoperation-security"}},[t._v("security")])]),t._v(" "),s("td",[t._v("Security requirements.")])])])]),t._v(" "),s("h3",{attrs:{id:"pathitemoperation-description"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-description"}},[t._v("#")]),t._v(" PathItemOperation::description")]),t._v(" "),s("p",[t._v("Description.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" description"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-summary"}},[t._v("#")]),t._v(" PathItemOperation::summary")]),t._v(" "),s("p",[t._v("Summary.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" summary"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-operationid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-operationid"}},[t._v("#")]),t._v(" PathItemOperation::operationId")]),t._v(" "),s("p",[t._v("Operation ID.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-requestbody"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-requestbody"}},[t._v("#")]),t._v(" PathItemOperation::requestBody")]),t._v(" "),s("p",[t._v("Request Body.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("RequestBody"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" requestBody"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-tags"}},[t._v("#")]),t._v(" PathItemOperation::tags")]),t._v(" "),s("p",[t._v("List of tags.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" tags"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-responses"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-responses"}},[t._v("#")]),t._v(" PathItemOperation::responses")]),t._v(" "),s("p",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#operationresponse"}},[t._v("OperationResponse")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("OperationResponse"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" responses"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-parameters"}},[t._v("#")]),t._v(" PathItemOperation::parameters")]),t._v(" "),s("p",[t._v("List of "),s("a",{attrs:{href:"#pathitemparameter"}},[t._v("PathItemParameter")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemParameter"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" parameters"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitemoperation-security"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitemoperation-security"}},[t._v("#")]),t._v(" PathItemOperation::security")]),t._v(" "),s("p",[t._v("Security requirements.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" security"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"pathitem"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem"}},[t._v("#")]),t._v(" PathItem")]),t._v(" "),s("p",[t._v("Path item.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PathItem")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-16"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationget"}},[t._v("operationGet")])]),t._v(" "),s("td",[t._v("Operation GET.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationput"}},[t._v("operationPut")])]),t._v(" "),s("td",[t._v("Operation PUT.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationpost"}},[t._v("operationPost")])]),t._v(" "),s("td",[t._v("Operation POST.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationdelete"}},[t._v("operationDelete")])]),t._v(" "),s("td",[t._v("Operation DELETE.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationoptions"}},[t._v("operationOptions")])]),t._v(" "),s("td",[t._v("Operation OPTIONS.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationhead"}},[t._v("operationHead")])]),t._v(" "),s("td",[t._v("Operation HEAD.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationpatch"}},[t._v("operationPatch")])]),t._v(" "),s("td",[t._v("Operation PATCH.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#pathitem-operationtrace"}},[t._v("operationTrace")])]),t._v(" "),s("td",[t._v("Operation TRACE.")])])])]),t._v(" "),s("h3",{attrs:{id:"pathitem-operationget"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationget"}},[t._v("#")]),t._v(" PathItem::operationGet")]),t._v(" "),s("p",[t._v("Operation GET.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationGet"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"get"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationput"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationput"}},[t._v("#")]),t._v(" PathItem::operationPut")]),t._v(" "),s("p",[t._v("Operation PUT.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationPut"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"put"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationpost"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationpost"}},[t._v("#")]),t._v(" PathItem::operationPost")]),t._v(" "),s("p",[t._v("Operation POST.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationPost"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"post"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationdelete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationdelete"}},[t._v("#")]),t._v(" PathItem::operationDelete")]),t._v(" "),s("p",[t._v("Operation DELETE.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationDelete"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"delete"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationoptions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationoptions"}},[t._v("#")]),t._v(" PathItem::operationOptions")]),t._v(" "),s("p",[t._v("Operation OPTIONS.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationOptions"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"options"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationhead"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationhead"}},[t._v("#")]),t._v(" PathItem::operationHead")]),t._v(" "),s("p",[t._v("Operation HEAD.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationHead"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"head"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationpatch"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationpatch"}},[t._v("#")]),t._v(" PathItem::operationPatch")]),t._v(" "),s("p",[t._v("Operation PATCH.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationPatch"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"patch"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"pathitem-operationtrace"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pathitem-operationtrace"}},[t._v("#")]),t._v(" PathItem::operationTrace")]),t._v(" "),s("p",[t._v("Operation TRACE.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItemOperation"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" operationTrace"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"trace"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#components"}},[t._v("#")]),t._v(" Components")]),t._v(" "),s("p",[t._v("Component.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Components")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-17"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#components-schemas"}},[t._v("schemas")])]),t._v(" "),s("td",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#components-securityschemes"}},[t._v("securitySchemes")])]),t._v(" "),s("td",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(".")],1)])])]),t._v(" "),s("h3",{attrs:{id:"components-schemas"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#components-schemas"}},[t._v("#")]),t._v(" Components::schemas")]),t._v(" "),s("p",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#schema"}},[t._v("Schema")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Schema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" schemas"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"components-securityschemes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#components-securityschemes"}},[t._v("#")]),t._v(" Components::securitySchemes")]),t._v(" "),s("p",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#securityscheme"}},[t._v("SecurityScheme")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("SecurityScheme"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" securitySchemes"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h2",{attrs:{id:"document"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document"}},[t._v("#")]),t._v(" Document")]),t._v(" "),s("p",[t._v("Document.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oatpp "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" swagger "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("namespace")]),t._v(" oas3 "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Document")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" oatpp"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),t._v("DTO "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"fields-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fields-18"}},[t._v("#")]),t._v(" Fields")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Type")]),t._v(" "),s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Summary")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("String")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#document-openapi"}},[t._v("openapi")])]),t._v(" "),s("td",[t._v("Open Api Version.")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#document-info"}},[t._v("info")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#info"}},[t._v("Info")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("List>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#document-servers"}},[t._v("servers")])]),t._v(" "),s("td",[t._v("List of "),s("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(".")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Fields>")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#document-paths"}},[t._v("paths")])]),t._v(" "),s("td",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#pathitem"}},[t._v("PathItem")]),t._v(".")],1)]),t._v(" "),s("tr",[s("td",[s("code",[t._v("Object")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#document-components"}},[t._v("components")])]),t._v(" "),s("td",[s("a",{attrs:{href:"#components"}},[t._v("Components")]),t._v(".")])])])]),t._v(" "),s("h3",{attrs:{id:"document-openapi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document-openapi"}},[t._v("#")]),t._v(" Document::openapi")]),t._v(" "),s("p",[t._v("Open Api Version.")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" openapi"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"openapi"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3.0.0"')]),t._v("\n")])])]),s("h3",{attrs:{id:"document-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document-info"}},[t._v("#")]),t._v(" Document::info")]),t._v(" "),s("p",[s("a",{attrs:{href:"#info"}},[t._v("Info")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Info"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" info"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"document-servers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document-servers"}},[t._v("#")]),t._v(" Document::servers")]),t._v(" "),s("p",[t._v("List of "),s("a",{attrs:{href:"#server"}},[t._v("Server")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("List"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Server"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" servers"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"document-paths"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document-paths"}},[t._v("#")]),t._v(" Document::paths")]),t._v(" "),s("p",[t._v("Map of "),s("RouterLink",{attrs:{to:"/api/latest/oatpp/core/Types/#string"}},[t._v("oatpp::String")]),t._v(" to "),s("a",{attrs:{href:"#pathitem"}},[t._v("PathItem")]),t._v(".")],1),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PathItem"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" paths"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h3",{attrs:{id:"document-components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#document-components"}},[t._v("#")]),t._v(" Document::components")]),t._v(" "),s("p",[s("a",{attrs:{href:"#components"}},[t._v("Components")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-cpp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-cpp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("DTO_FIELD")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" components"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/99.66250b64.js b/docs/.vuepress/dist/assets/js/99.66250b64.js deleted file mode 100644 index 2e70d6bcb..000000000 --- a/docs/.vuepress/dist/assets/js/99.66250b64.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{471:function(e,t,a){"use strict";a.r(t);var r=a(42),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"checker-hpp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#checker-hpp"}},[e._v("#")]),e._v(" Checker.hpp"),a("seo")],1),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/oatpp/oatpp/blob/master/src/oatpp-test/Checker.hpp",target:"_blank",rel:"noopener noreferrer"}},[e._v("This File On Github"),a("OutboundLink")],1),a("br"),e._v(" "),a("a",{attrs:{href:"https://github.com/oatpp/oatpp/issues/new?title=API%20question&body=In%20file:%20oatpp-test/Checker.hpp%0A%0A%23%20Question%0A%0A%3Cyour-question-here%3E",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ask A Question"),a("OutboundLink")],1)]),e._v(" "),a("p",[a("code",[e._v("API: latest")]),a("br"),e._v(" "),a("code",[e._v("module: oatpp")]),a("br"),e._v(" "),a("code",[e._v('#include "oatpp-test/Checker.hpp"')])]),e._v(" "),a("h2",{attrs:{id:"performancechecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performancechecker"}},[e._v("#")]),e._v(" PerformanceChecker")]),e._v(" "),a("p",[e._v("Helper class to check performance of code block.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" test "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("PerformanceChecker")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#performancechecker-performancechecker"}},[e._v("PerformanceChecker")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#performancechecker-~performancechecker"}},[e._v("~PerformanceChecker")])]),e._v(" "),a("td",[e._v("Non virtual destructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("v_int64")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#performancechecker-getelapsedticks"}},[e._v("getElapsedTicks")])]),e._v(" "),a("td",[e._v("Get elapsed time from checker creation.")])])])]),e._v(" "),a("h3",{attrs:{id:"performancechecker-performancechecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performancechecker-performancechecker"}},[e._v("#")]),e._v(" PerformanceChecker::PerformanceChecker")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" tag - log tag. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("PerformanceChecker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" tag"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"performancechecker-performancechecker-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performancechecker-performancechecker-2"}},[e._v("#")]),e._v(" PerformanceChecker::~PerformanceChecker")]),e._v(" "),a("p",[e._v("Non virtual destructor. Will print time elapsed ticks on destruction.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("PerformanceChecker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"performancechecker-getelapsedticks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performancechecker-getelapsedticks"}},[e._v("#")]),e._v(" PerformanceChecker::getElapsedTicks")]),e._v(" "),a("p",[e._v("Get elapsed time from checker creation. "),a("ul",[a("li",[a("strong",[e._v("@return")]),e._v(" - ticks in microseconds. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[e._v("v_int64 "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("getElapsedTicks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"threadlocalobjectschecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#threadlocalobjectschecker"}},[e._v("#")]),e._v(" ThreadLocalObjectsChecker")]),e._v(" "),a("p",[e._v("Helper class to check block of code on memory leaks. Checks "),a("RouterLink",{attrs:{to:"/api/latest/oatpp/core/base/Countable/#countable"}},[e._v("oatpp::base::Countable")]),e._v(" objects, and objects allocated on memory pools.")],1),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" oatpp "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("namespace")]),e._v(" test "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v(" \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("ThreadLocalObjectsChecker")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"methods-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#methods-2"}},[e._v("#")]),e._v(" Methods")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Return Type")]),e._v(" "),a("th",[e._v("Name")]),e._v(" "),a("th",[e._v("Summary")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#threadlocalobjectschecker-threadlocalobjectschecker"}},[e._v("ThreadLocalObjectsChecker")])]),e._v(" "),a("td",[e._v("Constructor.")])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("[none]")])]),e._v(" "),a("td",[a("a",{attrs:{href:"#threadlocalobjectschecker-~threadlocalobjectschecker"}},[e._v("~ThreadLocalObjectsChecker")])]),e._v(" "),a("td",[e._v("Non virtual destructor.")])])])]),e._v(" "),a("h3",{attrs:{id:"threadlocalobjectschecker-threadlocalobjectschecker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#threadlocalobjectschecker-threadlocalobjectschecker"}},[e._v("#")]),e._v(" ThreadLocalObjectsChecker::ThreadLocalObjectsChecker")]),e._v(" "),a("p",[e._v("Constructor. "),a("ul",[a("li",[a("strong",[e._v("@param")]),e._v(" tag - log tag. ")])])]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("ThreadLocalObjectsChecker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("char")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" tag"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h3",{attrs:{id:"threadlocalobjectschecker-threadlocalobjectschecker-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#threadlocalobjectschecker-threadlocalobjectschecker-2"}},[e._v("#")]),e._v(" ThreadLocalObjectsChecker::~ThreadLocalObjectsChecker")]),e._v(" "),a("p",[e._v("Non virtual destructor. Will halt program execution if memory leaks detected.")]),e._v(" "),a("div",{staticClass:"language-cpp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("~")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("ThreadLocalObjectsChecker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/app.b3fafb4a.js b/docs/.vuepress/dist/assets/js/app.b3fafb4a.js deleted file mode 100644 index 023ac4083..000000000 --- a/docs/.vuepress/dist/assets/js/app.b3fafb4a.js +++ /dev/null @@ -1,13 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var o,n,i=t[0],p=t[1],s=t[2],u=0,d=[];u0?a(o(e),9007199254740991):0}},function(e,t){var r=Array.isArray;e.exports=r},function(e,t,r){var o=r(33),a=r(23);e.exports=function(e){return o(a(e))}},function(e,t,r){var o=r(140),a="object"==typeof self&&self&&self.Object===Object&&self,l=o||a||Function("return this")();e.exports=l},function(e,t,r){var o=r(6),a=r(1),l=r(7),n=Object.defineProperty,i={},p=function(e){throw e};e.exports=function(e,t){if(l(i,e))return i[e];t||(t={});var r=[][e],s=!!l(t,"ACCESSORS")&&t.ACCESSORS,c=l(t,0)?t[0]:p,u=l(t,1)?t[1]:void 0;return i[e]=!!r&&!a((function(){if(s&&!o)return!0;var e={length:-1};s?n(e,1,{enumerable:!0,get:p}):e[1]=1,r.call(e,c,u)}))}},function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,r){var o=r(111),a=r(3),l=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?l(o[e])||l(a[e]):o[e]&&o[e][t]||a[e]&&a[e][t]}},function(e,t){e.exports=!1},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,r){var o=r(220),a=r(223);e.exports=function(e,t){var r=a(e,t);return o(r)?r:void 0}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,r){"use strict";var o=r(0),a=r(29).filter,l=r(53),n=r(17),i=l("filter"),p=n("filter");o({target:"Array",proto:!0,forced:!i||!p},{filter:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,r){var o=r(6),a=r(76),l=r(34),n=r(15),i=r(46),p=r(7),s=r(106),c=Object.getOwnPropertyDescriptor;t.f=o?c:function(e,t){if(e=n(e),t=i(t,!0),s)try{return c(e,t)}catch(e){}if(p(e,t))return l(!a.f.call(e,t),e[t])}},function(e,t,r){"use strict";var o=r(129).charAt,a=r(28),l=r(112),n=a.set,i=a.getterFor("String Iterator");l(String,"String",(function(e){n(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=i(this),r=t.string,a=t.index;return a>=r.length?{value:void 0,done:!0}:(e=o(r,a),t.index+=e.length,{value:e,done:!1})}))},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,r){var o,a,l,n=r(180),i=r(3),p=r(4),s=r(12),c=r(7),u=r(50),d=r(36),h=i.WeakMap;if(n){var v=new h,f=v.get,m=v.has,g=v.set;o=function(e,t){return g.call(v,e,t),t},a=function(e){return f.call(v,e)||{}},l=function(e){return m.call(v,e)}}else{var b=u("state");d[b]=!0,o=function(e,t){return s(e,b,t),t},a=function(e){return c(e,b)?e[b]:{}},l=function(e){return c(e,b)}}e.exports={set:o,get:a,has:l,enforce:function(e){return l(e)?a(e):o(e,{})},getterFor:function(e){return function(t){var r;if(!p(t)||(r=a(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}}}},function(e,t,r){var o=r(52),a=r(33),l=r(11),n=r(13),i=r(128),p=[].push,s=function(e){var t=1==e,r=2==e,s=3==e,c=4==e,u=6==e,d=5==e||u;return function(h,v,f,m){for(var g,b,y=l(h),C=a(y),k=o(v,f,3),E=n(C.length),w=0,P=m||i,S=t?P(h,E):r?P(h,0):void 0;E>w;w++)if((d||w in C)&&(b=k(g=C[w],w,y),e))if(t)S[w]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return w;case 2:p.call(S,g)}else if(c)return!1;return u?-1:s||c?c:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,r){var o=r(3),a=r(130),l=r(104),n=r(12),i=r(2),p=i("iterator"),s=i("toStringTag"),c=l.values;for(var u in a){var d=o[u],h=d&&d.prototype;if(h){if(h[p]!==c)try{n(h,p,c)}catch(e){h[p]=c}if(h[s]||n(h,s,u),a[u])for(var v in l)if(h[v]!==l[v])try{n(h,v,l[v])}catch(e){h[v]=l[v]}}}},function(e,t,r){"use strict";var o=r(1);e.exports=function(e,t){var r=[][e];return!!r&&o((function(){r.call(null,t||function(){throw 1},1)}))}},function(e,t,r){var o=r(39),a=r(205),l=r(206),n=o?o.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":n&&n in Object(e)?a(e):l(e)}},function(e,t,r){var o=r(1),a=r(18),l="".split;e.exports=o((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?l.call(e,""):Object(e)}:Object},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,r){var o,a=r(5),l=r(179),n=r(74),i=r(36),p=r(110),s=r(71),c=r(50),u=c("IE_PROTO"),d=function(){},h=function(e){return" - - diff --git a/docs/.vuepress/dist/benchmark/digital-ocean/index.html b/docs/.vuepress/dist/benchmark/digital-ocean/index.html deleted file mode 100644 index 1db4fa202..000000000 --- a/docs/.vuepress/dist/benchmark/digital-ocean/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Benchmark - Digital Ocean | Oat++ - - - - - - - -

# Benchmark oatpp - Digital Ocean cloud

# Digital Ocean droplet 1vCPU 1GB Ubuntu 16.04 - $5/Month

Performance test of "Hello World" endpoint.

Machine - Digital Ocean droplet. 1vCPU 1GB Ubuntu 16.04 - $5/Month
Tool - wrk

oatpp-async compiled with: -D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=1 option.

Digital Ocean 1vCPU 1GB

  • go net/http service performs clearly till 10 concurrent connection. At higher concurrency levels performs with "timeout" errors. Down at concurrency level 20K.
  • oatpp-async service performs clearly and stays available on the whole distance.
  • oatpp-multithreaded service performs clearly up to 5K concurrent connections. Then down at load 10K concurrent connections.

# Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month

Performance test of "Hello World" endpoint.

Machine - Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month
Tool - wrk

oatpp-async compiled with: -D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=3 option.

benchmark Digital Ocean droplet 4vCPUs

  • go net/http service performs clearly and stays available up till 30K concurrent connections load.
  • oatpp-async service performs clearly and stays available up till 30K concurrent connections load.
  • oatpp-multithreaded service performs clearly up till 1K concurrent connections load. Then down at load 2.5K concurrent connections.
- - - diff --git a/docs/.vuepress/dist/benchmark/info/index.html b/docs/.vuepress/dist/benchmark/info/index.html deleted file mode 100644 index aae18d234..000000000 --- a/docs/.vuepress/dist/benchmark/info/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Benchmark Info | Oat++ - - - - - - - -

# Benchmarks info

Benchmarks were taken for oatpp version 0.18.9

Source code of services prepared for tests can be found here: https://github.com/oatpp/benchmark.

If you are interested in some particular framework vs oatpp please let me know by opening issue here: https://github.com/oatpp/benchmark/issues. Specify platform/framework in the issue.

- - - diff --git a/docs/.vuepress/dist/benchmark/websocket/2-million/index.html b/docs/.vuepress/dist/benchmark/websocket/2-million/index.html deleted file mode 100644 index 8cda6c78b..000000000 --- a/docs/.vuepress/dist/benchmark/websocket/2-million/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - Benchmark 2-million Websockets | Oat++ - - - - - - - -

# 2 Million WebSockets

Date - May 5, 2019
-Oatpp version - 0.19.4

This article describes oatpp benchmark for 2 Million fully-loaded concurrent websocket connections.

# Setup

Setup diagram
  • Server Machine - Google-Cloud n1-highmem-8 (8 vCPUs, 52 GB memory) running Debian GNU/Linux 9.
  • Client Machine - Google-Cloud n1-highmem-8 (8 vCPUs, 52 GB memory) running Debian GNU/Linux 9.

Server application listens to 100 ports from 8000 to 8099 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 2m clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding "Hello from oatpp!" at the beginning.

Client application opens 20k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.

Both server and client applications are running asynchronous oatpp server/client based on oatpp coroutines.

# Results

Server showed stable performance through all the benchmark test delivering about 9 Million messages per minute (~32.7 Mb/Second):

Server monitoring graph

# Server Stats

# Resource consumption

Server memory consumption was stable at about 15GB.

Server resource consumption

# Throughput

SOCKETS:          2000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     2055762317       # - Frames received by server (total)                                                          
-MESSAGES_TOTAL:   2055711187       # - Messages received by server (total)                                                          
-FRAMES_PER_MIN:   9198391.630007   # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 9194998.122585   # - Messages received rate per minute  
-

# Client Stats

# Resource consumption

Client memory consumption was stable at about 10GB.

Server resource consumption

# Throughput

SOCKETS:          2000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     1986591173       # - Frames received by client (total)                                                          
-MESSAGES_TOTAL:   1986358027       # - Messages received by client (total)                                                          
-FRAMES_PER_MIN:   8971818.390638   # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 8973755.731700   # - Messages received rate per minute  
-

# Steps to Reproduce

Create two n1-highmem-8 (8 vCPUs, 52 GB memory) - Debian GNU/Linux 9 instances in same VPC on Google Cloud.

# Execute the following commands for both instances (SSH).

  • Install git
$ sudo su
-$ apt-get update
-...
-$ apt-get install -y git
-...
-
$ git clone https://github.com/oatpp/benchmark-websocket
-...
-$ cd benchmark-websocket
-
  • Install oatpp and oatpp-websocket modules (run ./prepare.sh script).
$ ./prepare.sh
-
  • Configure environment (run ./sock-config.sh script)
$ ./sock-config.sh
-$ ulimit -n 3000000
-

# Build and Run Server

Commands for server instance only:

  • Build server
$ cd server/build/
-$ cmake ..
-$ make
-
  • Run server
$ ./wsb-server-exe --tp 9 --tio 3
-

where:
--tp - number of data-processing threads.
--tio - number of I/O workers.

# Build and Run Client

Commands for client instance only:

  • Build client
$ cd client/build/
-$ cmake ..
-$ make
-
  • Run client
$ ./wsb-client-exe --tp 9 --tio 3 -h <server-private-ip> --socks-max 2000000 --socks-port 20000 --si 1000 --sf 50
-

where:
--tp - number of data-processing threads.
--tio - number of I/O workers.
-h <server-private-ip> - substitute private-ip of server instance here.
--socks-max - how many client connections to establish.
--socks-port - how many client connections per port.
--si 1000 --sf 50 - control how fast clients will connect to server. Here - each 1000 iterations sleep for 50 milliseconds.

Note - clients will not start load until all clients are connected.
Note - client app will fail with assertion if any of clients has failed.

- - - diff --git a/docs/.vuepress/dist/benchmark/websocket/5-million/index.html b/docs/.vuepress/dist/benchmark/websocket/5-million/index.html deleted file mode 100644 index 12a42d372..000000000 --- a/docs/.vuepress/dist/benchmark/websocket/5-million/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Benchmark 5-million Websockets | Oat++ - - - - - - - -

# 5 Million WebSockets

Date - May 20, 2019
-Oatpp version - 0.19.4

This article describes oatpp benchmark for 5 Million fully-loaded concurrent websocket connections.

It consists of two parts:

# The Purpose

This benchmark is aimed to determine scalability of oatpp with increase of load and computing powers with respect to previous 2-million WebSockets benchmark.

Previous, 2M benchmark This, 4M / 5M benchmark
Computing power 8 vCPUs, 52 GB memory 16 vCPUs, 104 GB memory
Load 2M connections 4M / 5M connections

# 4M WebSockets

# Setup

Setup diagram
  • Server Machine - Google-Cloud n1-highmem-16 (16 vCPUs, 104 GB memory) running Debian GNU/Linux 9.
  • Client Machine - Google-Cloud n1-highmem-16 (16 vCPUs, 104 GB memory) running Debian GNU/Linux 9.

Server application listens to 400 ports from 8000 to 8399 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 4M clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding "Hello from oatpp!" at the beginning.

Client application opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.

Both server and client applications are running asynchronous oatpp server/client based on oatpp coroutines.

# Results

Server showed stable performance through all the benchmark test delivering about 17 Million messages per minute (~57.5 Mb/Second):

Server monitoring graph

# Server Stats

# Resource consumption

Server memory consumption was stable at about 30GB.

Server resource consumption

# Throughput

SOCKETS:          4000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     573911830        # - Frames received by server (total)                                                          
-MESSAGES_TOTAL:   573905877        # - Messages received by server (total)                                                          
-FRAMES_PER_MIN:   17373801.439247  # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 17372968.482111  # - Messages received rate per minute  
-

# Client Stats

# Resource consumption

Client memory consumption was stable at about 20.5GB.

Server resource consumption

# Throughput

SOCKETS:          4000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     516770460        # - Frames received by client (total)                                                          
-MESSAGES_TOTAL:   516405193        # - Messages received by client (total)                                                          
-FRAMES_PER_MIN:   16801610.114129  # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 16472169.881512  # - Messages received rate per minute  
-

# 5M WebSockets

# Setup

Setup diagram
  • Server Machine - Google-Cloud n1-highmem-16 (16 vCPUs, 104 GB memory) running Debian GNU/Linux 9.
  • Client Machine - Google-Cloud n1-highmem-16 (16 vCPUs, 104 GB memory) running Debian GNU/Linux 9.

Server application listens to 500 ports from 8000 to 8499 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 5m clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding "Hello from oatpp!" at the beginning.

Client application opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one.

Both server and client applications are running asynchronous oatpp server/client based on oatpp coroutines.


As main point of memory consumption is linux sockets buffers, for 5M connections it was required to reduce net.ipv4.tcp_rmem in -order for the test to be stable

sysctl -w net.ipv4.tcp_rmem='2048 2048 2048'
-

Here we reduce read buffers as it appeared to have minimal performance impact in this particular case.

# Results

Server showed stable performance through all the benchmark test delivering about 18 Million messages per minute (~58 Mb/Second):

Server monitoring graph

# Server Stats

# Resource consumption

Server memory consumption was stable at about 36GB.

Server resource consumption

# Throughput

SOCKETS:          5000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     1179521220       # - Frames received by server (total)                                                          
-MESSAGES_TOTAL:   1177610133       # - Messages received by server (total)                                                          
-FRAMES_PER_MIN:   19625257.718400  # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 19619426.046304  # - Messages received rate per minute  
-

# Client Stats

# Resource consumption

Client memory consumption was stable at about 24GB.

Server resource consumption

# Throughput

SOCKETS:          5000000          # - Number of connected clients                                                       
-FRAMES_TOTAL:     1108906831       # - Frames received by client (total)                                                          
-MESSAGES_TOTAL:   1097120434       # - Messages received by client (total)                                                          
-FRAMES_PER_MIN:   17878571.176088  # - Frames received rate per minute                                               
-MESSAGES_PER_MIN: 17612701.369327  # - Messages received rate per minute  
-

# Steps to Reproduce

Create two n1-highmem-16 (16 vCPUs, 104 GB memory) - Debian GNU/Linux 9 instances in same VPC on Google Cloud.

# Execute the following commands for both instances (SSH).

  • Install git
$ sudo su
-$ apt-get update
-...
-$ apt-get install -y git
-...
-
$ git clone https://github.com/oatpp/benchmark-websocket
-...
-$ cd benchmark-websocket
-
  • Install oatpp and oatpp-websocket modules (run ./prepare.sh script).
$ ./prepare.sh
-
  • Configure environment (run ./sock-config-5m.sh script)
$ ./sock-config.sh
-$ ulimit -n 6000000
-

# Build and Run Server

Commands for server instance only:

  • Build server
$ cd server/build/
-$ cmake ..
-$ make
-
  • Run server
$ ./wsb-server-exe --tp 16 --tio 8 --pc 500
-

where:
--tp - number of data-processing threads.
--tio - number of I/O workers.
--pc - number of ports to listen to.

# Build and Run Client

Commands for client instance only:

  • Build client
$ cd client/build/
-$ cmake ..
-$ make
-
  • Run client
$ ./wsb-client-exe --tp 16 --tio 8 -h <server-private-ip> --socks-max 5000000 --socks-port 10000 --si 1000 --sf 30 --pc 500
-

where:
--tp - number of data-processing threads.
--tio - number of I/O workers.
-h <server-private-ip> - substitute private-ip of server instance here.
--socks-max - how many client connections to establish.
--socks-port - how many client connections per port.
--si 1000 --sf 30 - control how fast clients will connect to server. Here - each 1000 iterations sleep for 30 milliseconds.
--pc - number of available server ports to connect to.

Note - clients will not start load until all clients are connected.
Note - client app will fail with assertion if any of clients has failed.

# Conclusion

Previous results for 2M WebSockets were 9 Million messages per minute ~32.7 Mb/Second. So it was expected to -get something aroud 18 Million messages per minute ~64 Mb/Second in this benchmark (As computing power was increased x2).

Actual results are 17-18 Million messages per minute, with about ~58 Mb/Second - which is a good result, almost as expected.

At this point oatpp has shown almost constant I/O performance with respect load increase.

- - - diff --git a/docs/.vuepress/dist/contact/index.html b/docs/.vuepress/dist/contact/index.html deleted file mode 100644 index 03cf9d2c4..000000000 --- a/docs/.vuepress/dist/contact/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Contact | Oat++ - - - - - - - -

# Contact

# Communities

# Mailing

- - - diff --git a/docs/.vuepress/dist/contributing/index.html b/docs/.vuepress/dist/contributing/index.html deleted file mode 100644 index 057ff94f9..000000000 --- a/docs/.vuepress/dist/contributing/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Contributing | Oat++ - - - - - - - -

# Contributing to Oat++

Thank you for your interest in the project, and for taking time to contribute.

# How to contribute

All kind of contributions are very welcome.

# Join the community

# Try to use Oat++

# Open an issue

Ask question or report a bug here

# Create a pull request

All kind of pull requests are very welcome. -Even if it's just fixing typos, or adding documentation.

Please make sure your pull requests confirming to overall project code-style.
Please make sure to notify the community if you are working on an issue so we don't duplicate work!

# Create Oat++ extension module

Use oatpp-starter-module to create oatpp extensions.

# Code of Conduct

Follow Code of Conduct at all times.
-Please report unacceptable behavior to oatpp.io@gmail.com.

- - - diff --git a/docs/.vuepress/dist/docs/async/index.html b/docs/.vuepress/dist/docs/async/index.html deleted file mode 100644 index 3739dc7f8..000000000 --- a/docs/.vuepress/dist/docs/async/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Async API | Oat++ - - - - - - - -

# Async

Roughly, the Async approach can be described as iterating through NON-BLOCKING operations in the loop. -Async operation should NOT block. If async operation blocks, it makes the entire loop and the whole Async system wait for that operation to finish. -While it brings in some challenges to code-writing, it also leads to better CPU utilization and some performance increase.

If you go with Async approach you should always make sure:

  • That you are using NON-BLOCKING I/O.
  • Calls that you make from within Async methods are NON-BLOCKING.

All asynchronous logic in oatpp is based on oatpp::async::Executor and oatpp coroutines.

Entities that provide Async API are named "AsyncEntity", Async methods are named "doSomethingAsync", -code-gen macros that generate Async code are named "MACRO_ASYNC"

For better understanding and examples see oatpp coroutines

- - - diff --git a/docs/.vuepress/dist/docs/components/api-client/index.html b/docs/.vuepress/dist/docs/components/api-client/index.html deleted file mode 100644 index 84433b9e0..000000000 --- a/docs/.vuepress/dist/docs/components/api-client/index.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - ApiClient | Oat++ - - - - - - - -

# Api Client

ApiClient is the class which extends oatpp::web::client::ApiClient. -It provides convenient declaration of remote API calls.

# Declaration

API calls are created with the help of code-gen macros.
-API calls code generation section must begin with -#include OATPP_CODEGEN_BEGIN(ApiClient) and must be closed with -#include OATPP_CODEGEN_END(ApiClient).
Do not forget to close the code generation section in order to avoid macro conflicts later in the code!

#include "oatpp/web/client/ApiClient.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-#include OATPP_CODEGEN_BEGIN(ApiClient) ///< Begin code-gen section
-
-class MyApiClient : public oatpp::web::client::ApiClient {
-
-  API_CLIENT_INIT(MyApiClient)
-
-  API_CALL("GET", "/resource", getResource)
-
-};
-
-#include OATPP_CODEGEN_END(ApiClient) ///< End code-gen section
-

# API Call Types

There are two types of generated API calls:

  • API_CALL - Used with Simple API (multithreaded API). Generates method which returns std::shared_ptr<IncomingResponse> - incoming::Response.
  • API_CALL_ASYNC - Used with Async API. Generates oatpp::async::CoroutineWithResult with std::shared_ptr<IncomingResponse> return type. -See oatpp coroutines for more information.

# Declaration of API Calls

Parameters and declarations of API_CALL and API_CALL_ASYNC are absolutely identical. The difference is in the return type only.

API_CALL        ("<http-method>", "<path>", <method-name>, <optional param-mappings>)
-API_CALL_ASYNC  ("<http-method>", "<path>", <method-name>, <optional param-mappings>)
-

# Path Variables Mapping

API_CALL("GET", "/users/{userId}", getUserById, PATH(Int64, userId))
-

# Path Variable Name Qualifier

API_CALL("GET", "/users/{user-id}", getUserById, PATH(Int64, userId, "user-id"))
-

# Headers Mapping

API_CALL("GET", "/users", getUsers, HEADER(String, userId, "X-USER-ID"))
-

# Query Parameters Mapping

API_CALL("GET", "/users", getUsers, QUERY(Int32, age))
-

Here the destination URL will be:

/users?age=<age>
-

If more query parameters specified:

API_CALL("GET", "/users", getUsers, QUERY(Int32, age), QUERY(String, firstName))
-

the destination URL will be:

/users?age=<age>&firstName=<firstName>
-

# Query Parameter Name Qualifier

API_CALL("GET", "/users", getUsers, QUERY(Int32, age, "user-age"))
-

the destination URL will be:

/users?user-age=<age>
-

# Body Parameter Mapping

# Body As String

API_CALL("POST", "/users", createUser, BODY_STRING(String, userInfo))
-

# Body As DTO

DTO will be serialized using ObjectMapper given to the ApiClient constructor

API_CALL("POST", "/users", createUser, BODY_DTO(Object<UserDto>, userInfo))
-

# Create Api Client

To create API client you need network::client::ConnectionProvider, web::client::RequestExecutor, and ObjectMapper:

#include "oatpp/web/client/HttpRequestExecutor.hpp"
-#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-#include "oatpp/network/tcp/client/ConnectionProvider.hpp"
-
-...
-
-using namespace oatpp::network;
-using namespace oatpp::web;
-using namespace oatpp::parser;
-
-/* create connection provider */
-auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4});
-
-/* create HTTP request executor */
-auto requestExecutor = client::HttpRequestExecutor::createShared(connectionProvider);
-
-/* create JSON object mapper */
-auto objectMapper = json::mapping::ObjectMapper::createShared();
-
-/* create API client */
-auto client = MyApiClient::createShared(requestExecutor, objectMapper);
-

# Connection Pool

To use connection pool for API client requests - wrap connection provider with ConnectionPool and pass it to RequestExecutor:

#include "oatpp/network/ConnectionPool.hpp"
-
-...
-
-using namespace oatpp::network;
-using namespace oatpp::web;
-
-/* create connection provider */
-auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4});
-
-/* create connection pool */
-auto connectionPool = std::make_shared<ClientConnectionPool>(
-        connectionProvider /* connection provider */, 
-        10 /* max connections */, 
-        std::chrono::seconds(5) /* max lifetime of idle connection */
-);
-
-/* create request executor */
-auto requestExecutor = client::HttpRequestExecutor::createShared(connectionPool /* pass connection pool */);
-
-/* create API client */
-auto client = MyApiClient::createShared(requestExecutor, objectMapper);
-

# Automatic Retries

To enable automatic retries - provide RetryPolicy to the API client.

Note: Connection pools and automatic retries can work together with no conflicts - invalid connections are dismissed from the pool right away. And after retry interval client will request a new valid connection.

#include "oatpp/network/ConnectionPool.hpp"
-
-...
-
-using namespace oatpp::network;
-using namespace oatpp::web;
-
-/* create connection provider */
-auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4});
-
-/* create connection pool */
-auto connectionPool = std::make_shared<ClientConnectionPool>(
-        connectionProvider /* connection provider */, 
-        10 /* max connections */, 
-        std::chrono::seconds(5) /* max lifetime of idle connection */
-);
-
-/* create retry policy */
-auto retryPolicy = std::make_shared<client::SimpleRetryPolicy>(2 /* max retries */, std::chrono::seconds(1) /* retry interval */);
-
-/* create request executor */
-auto requestExecutor = client::HttpRequestExecutor::createShared(connectionPool, retryPolicy /* retry policy */);
-
-/* create API client */
-auto client = MyApiClient::createShared(requestExecutor, objectMapper);
-

# Examples of code

- - - diff --git a/docs/.vuepress/dist/docs/components/api-controller/index.html b/docs/.vuepress/dist/docs/components/api-controller/index.html deleted file mode 100644 index 259ea804e..000000000 --- a/docs/.vuepress/dist/docs/components/api-controller/index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - ApiController | Oat++ - - - - - - - -

# Api Controller

ApiController is the class which extends oatpp::web::server::api::ApiController. It implements and manages endpoints.

# Declaration

Endpoints are created with the help of code-gen macros.
-Endpoints code generation section must begin with -#include OATPP_CODEGEN_BEGIN(ApiController) and must be closed with -#include OATPP_CODEGEN_END(ApiController).
Do not forget to close the code generation section in order to avoid macro conflicts later in the code!

#include "oatpp/web/server/api/ApiController.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-#include OATPP_CODEGEN_BEGIN(ApiController) ///< Begin ApiController codegen section
-
-class MyController : public oatpp::web::server::api::ApiController {
-public:
-
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper) /* Inject object mapper */)
-    : oatpp::web::server::api::ApiController(objectMapper) 
-  {}
-
-  ENDPOINT("GET", "/", root) {
-    return createResponse(Status::CODE_200, "Hello World!");
-  }
-  
-  // TODO - more endpoints here
-
-};
-
-#include OATPP_CODEGEN_END(ApiController) ///< End ApiController codegen section
-

# Endpoint Types

There are two types of generated endpoints:

  • ENDPOINT - Used with Simple API (multithreaded API). Generates method which returns std::shared_ptr<OutgoingResponse>
  • ENDPOINT_ASYNC - Used with Async API. Generates oatpp::async::CoroutineWithResult with std::shared_ptr<OutgoingResponse> return type. -See oatpp coroutines for more information.

# ENDPOINT Specifics

ENDPOINT macro has the following params:

ENDPOINT("<http-method>", "<path>", <method-name>, <optional param-mappings>)
-

# Path Variables Mapping

ENDPOINT("GET", "/users/{userId}", getUserById,
-         PATH(Int64, userId)) 
-{
-  OATPP_LOGD("Test", "userId=%d", userId->getValue());
-  return createResponse(Status::CODE_200, "OK");
-}
-

# Path Variable Name Qualifier

ENDPOINT("GET", "/users/{my-path-variable}", getUserById,
-         PATH(Int64, userId, "my-path-variable")) 
-{
-  OATPP_LOGD("Test", "userId=%d", userId->getValue());
-  return createResponse(Status::CODE_200, "OK");
-}
-

# Headers Mapping

ENDPOINT("GET", "/users", getUsers,
-         HEADER(String, userAgent, "User-Agent")) 
-{
-  OATPP_LOGD("Test", "userAgent=%s", userAgent->getData());
-  return createResponse(Status::CODE_200, "OK");
-}
-

# Query Parameters Mapping

ENDPOINT("GET", "/users", getUsers,
-         QUERY(Int32, age)) 
-{
-  OATPP_LOGD("Test", "age=%d", age->getValue());
-  return createResponse(Status::CODE_200, "OK");
-}
-

Note:

  • age - is required query parameter here. Case sensitive.
  • Accessible URL example - /users?age=21.

# Query Parameter Name Qualifier

ENDPOINT("GET", "/users", getUsers,
-         QUERY(Int32, age, "user-age")) 
-{
-  OATPP_LOGD("Test", "age=%d", age->getValue());
-  return createResponse(Status::CODE_200, "OK");
-}
-

Note:

  • user-age - is required query parameter here. Case sensitive.
  • Accessible URL example - /users?user-age=21.

# Optional Query Parameters

ENDPOINT("GET", "/users", getUsers,
-         QUERIES(QueryParams, queryParams)) 
-{
-  for(auto& param : queryParams.getAll()) {
-    OATPP_LOGD("param", "%s=%s", param.first.getData(), param.second.getData());
-  }
-  return createResponse(Status::CODE_200, "OK");
-}
-

See also QueryParams data type.

# Request Body Mapping

# Body As String

ENDPOINT("POST", "/users", postUsers,
-         BODY_STRING(String, userInfo))
-{
-  OATPP_LOGD("Test", "body='%s'", userInfo->getData());
-  return createResponse(Status::CODE_200, "OK");
-}
-

Note:

  • Empty body is allowed here.
  • Binary data is allowed here.

# Body As DTO

ENDPOINT("POST", "/users", postUsers,
-         BODY_DTO(Object<UserDto>, userDto))
-{
-  OATPP_LOGD("Test", "user-name='%s'", userDto->name->getData());
-  return createResponse(Status::CODE_200, "OK");
-}
-

Note:

  • The body is parsed using default ObjectMapper (the one passed to the constructor of ApiController).

# The Whole Request Object Mapping

ENDPOINT("GET", "/test", testEndpoint,
-         REQUEST(const std::shared_ptr<IncomingRequest>&, request))
-{
-  OATPP_LOGD("test", "user-agent='%s'", request->getHeader("user-agent")->getData());
-  return createResponse(Status::CODE_200, "OK");
-}
-

# Authorization - Basic

# Default Basic Authorization

using namespace oatpp::web::server::handler;
-
-class MyController : public oatpp::web::server::api::ApiController {
-public:
-
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper) /* Inject object mapper */)
-    : oatpp::web::server::api::ApiController(objectMapper) 
-  {
-    setDefaultAuthorizationHandler(std::make_shared<BasicAuthorizationHandler>("my-realm"));
-  }
-
-  ENDPOINT("GET", "/my/secret/resource", getResource,
-           AUTHORIZATION(std::shared_ptr<DefaultBasicAuthorizationObject>, authObject)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-};
-

# Custom Basic Authorization

# Define Authorization Object
class MyAuthorizationObject : public oatpp::web::server::handler::AuthorizationObject {
-public:
-
-  MyAuthorizationObject(const oatpp::String& pUserId)
-    : userId(pUserId)
-  {}
-
-  oatpp::String userId;
-
-};
-
# Define Authorization Handler
class MyBasicAuthorizationHandler : public oatpp::web::server::handler::BasicAuthorizationHandler {
-public:
-
-  MyBasicAuthorizationHandler()
-    : BasicAuthorizationHandler("my-realm")
-  {}
-
-  std::shared_ptr<AuthorizationObject> authorize(const oatpp::String& userId, const oatpp::String& password) override {
-    if(userId == "admin" && password == "admin") {
-      return std::make_shared<MyAuthorizationObject>("uid-admin");
-    }
-    return nullptr;
-  }
-
-};
-
# Endpoint With Custom Basic Authorization
class MyController : public oatpp::web::server::api::ApiController {
-public:
-
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper) /* Inject object mapper */)
-    : oatpp::web::server::api::ApiController(objectMapper) 
-  {
-    setDefaultAuthorizationHandler(std::make_shared<MyBasicAuthorizationHandler>());
-  }
-
-  ENDPOINT("GET", "/my/secret/resource", getResource,
-           AUTHORIZATION(std::shared_ptr<MyAuthorizationObject>, authObject)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->userId == "uid-admin", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-};
-

# Authorization - Bearer

# Default Bearer Authorization

using namespace oatpp::web::server::handler;
-
-class MyController : public oatpp::web::server::api::ApiController {
-public:
-
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper) /* Inject object mapper */)
-    : oatpp::web::server::api::ApiController(objectMapper) 
-  {
-    setDefaultAuthorizationHandler(std::make_shared<BearerAuthorizationHandler>("my-realm"));
-  }
-
-  ENDPOINT("GET", "/my/secret/resource", getResource,
-           AUTHORIZATION(std::shared_ptr<DefaultBearerAuthorizationObject>, authObject)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->token == "4e99e8c12de7e01535248d2bac85e732", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-};
-

# Custom Bearer Authorization

# Define Authorization Object
class MyAuthorizationObject : public oatpp::web::server::handler::AuthorizationObject {
-public:
-
-  MyAuthorizationObject(const oatpp::String& pUserId)
-    : userId(pUserId)
-  {}
-
-  oatpp::String userId;
-
-};
-
# Define Authorization Handler
class MyBearerAuthorizationHandler : public oatpp::web::server::handler::BearerAuthorizationHandler {
-public:
-
-  MyBearerAuthorizationHandler()
-    : BearerAuthorizationHandler("my-realm")
-  {}
-
-  std::shared_ptr<AuthorizationObject> authorize(const oatpp::String& token) override {
-    if(token == "4e99e8c12de7e01535248d2bac85e732") {
-      return std::make_shared<MyAuthorizationObject>("uid-admin");
-    }
-    return nullptr;
-  }
-
-};
-
# Endpoint With Custom Bearer Authorization
class MyController : public oatpp::web::server::api::ApiController {
-public:
-
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper) /* Inject object mapper */)
-    : oatpp::web::server::api::ApiController(objectMapper) 
-  {
-    setDefaultAuthorizationHandler(std::make_shared<MyBearerAuthorizationHandler>());
-  }
-
-  ENDPOINT("GET", "/my/secret/resource", getResource,
-           AUTHORIZATION(std::shared_ptr<MyAuthorizationObject>, authObject)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->userId == "uid-admin", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-};
-

# Authorization - Custom

To implement your custom Authorization - you have to extend AuthorizationHandler class.

# Authorization Handler Qualifier

You may specify the exact AuthorizationHandler to be used on the endpoint.

class MyController : public oatpp::web::server::api::ApiController {
-private:
-  std::shared_ptr<AuthorizationHandler> m_basicAuthHandler = std::make_shared<BasicAuthorizationHandler>("my-realm");
-  std::shared_ptr<AuthorizationHandler> m_bearerAuthHandler = std::make_shared<BearerAuthorizationHandler>("my-realm");
-public:
-
-  ...
-  
-  ENDPOINT("GET", "/basic/auth/resource", getBasicAuthResource,
-           AUTHORIZATION(std::shared_ptr<DefaultBasicAuthorizationObject>, authObject, m_basicAuthHandler /* qualifier */)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-  ENDPOINT("GET", "/bearer/auth/resource", getBearerAuthResource,
-           AUTHORIZATION(std::shared_ptr<DefaultBearerAuthorizationObject>, authObject, m_bearerAuthHandler /* qualifier */)) 
-  {
-    OATPP_ASSERT_HTTP(authObject->token == "4e99e8c12de7e01535248d2bac85e732", Status::CODE_401, "Unauthorized");
-    return createResponse(Status::CODE_200, "OK");
-  }
-
-};
-

# CORS

# Add CORS To Endpoint

ADD_CORS(getHello)
-ENDPOINT("GET", "hello", getHello) {
-  return createResponse(Status::CODE_200, "Hello!");
-}
-

# ADD_CORS Macro Params

ADD_CORS(<endpoint>, 
-  <allow_origin = "*">, 
-  <allow_methods = "GET, POST, OPTIONS">,
-  <allow_headers = "DNT, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Range">,
-  <max_age = "1728000">
-);
-

# ENDPOINT_ASYNC Specifics

ENDPOINT_ASYNC macro has the following structure:

ENDPOINT_ASYNC("GET", "/", Root /* Name of the Coroutine */) {
-
-  //shared_ptr<IncomingRequest> request; - is available as a property of the class
-
-  ENDPOINT_ASYNC_INIT(Root) ///< Generate constructor and default fields
-
-  Action act() override {
-    return _return(controller->createResponse(Status::CODE_200, "Hello Async"));
-  }
-
-};
-

In order to be able to access MyController's fields from the inside of the endpoint's Coroutine without additional casts add the following typedef to the controller:

class MyController : public oatpp::web::server::api::ApiController {
-public:
-  typedef MyController __ControllerType;
-
-...
-...
-
-};
-

# Endpoint Annotation And API Documentation

ApiController code-gen also supports the annotation of endpoints with additional info. -This info is then can be used to generate API documentation for Swagger-UI or for other API-documentation tools.
For how-to integrate Swagger-UI in oatpp application, see oatpp-swagger.

Additional endpoint info can be added in ENDPOINT_INFO(<endpoint-name>) block.

example:

  • Simple API:

    ENDPOINT_INFO(createUser) {
    -  info->summary = "Create new User";
    -  info->addConsumes<Object<UserDto>>("application/json");
    -  info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
    -}
    -ENDPOINT("POST", "demo/api/users", createUser,
    -         BODY_DTO(Object<UserDto>, userDto)) {
    -  return createDtoResponse(Status::CODE_200, m_database->createUser(userDto));
    -}
    -
  • Async API:

    ENDPOINT_INFO(CreateUser) {
    -  info->summary = "Create new User";
    -  info->addConsumes<Object<UserDto>>("application/json");
    -  info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
    -}
    -ENDPOINT_ASYNC("POST", "demo/api/users", CreateUser) {
    -    
    -  ENDPOINT_ASYNC_INIT(CreateUser)
    - 
    -  Action act() override {
    -    return request->readBodyToDtoAsync<oatpp::Object<UserDto>>(
    -        controller->getDefaultObjectMapper()
    -    ).callbackTo(&CreateUser::returnResponse);
    -  }
    - 
    -  Action returnResponse(const oatpp::Object<UserDto>& body){
    -    return _return(createDtoResponse(Status::CODE_200, m_database->createUser(userDto)));
    -  }
    - 
    -};
    -

Note that endpoint-name in ENDPOINT_INFO(<endpoint-name>) block should be the same as endpoint-name in corresponding -ENDPOINT or ENDPOINT_ASYNC block.

# Endpoint Parameters Annotation

You can annotate three types of endpoint parameters:

  • Headers - can be accessed as info->headers
  • Path Parameters - can be accessed as info->pathParams
  • Query Parameters - can be accessed as info->queryParams

Parameters have next the attributes as for Parameter Object in OpenAPI 3.0.0 specification:

Field Name Type Description
name oatpp::String The name of the parameter. Parameter names are case sensitive.
description oatpp::String A brief description of the parameter.
required oatpp::Boolean Default value true. Determines whether this parameter is mandatory. If the parameter is "Path Parameter", its value MUST be true.
deprecated oatpp::Boolean Default value false. Specifies that a parameter is deprecated and SHOULD be transitioned out of usage.
allowEmptyValue oatpp::Boolean Default value null. Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value.

Example:
-Add description to "userId" path parameter:

  ENDPOINT_INFO(getUserById) {
-    // general
-    info->summary = "Get one User by userId";
-    info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
-    info->addResponse<String>(Status::CODE_404, "text/plain");
-    // params specific
-    info->pathParams["userId"].description = "User Identifier";
-  }
-  ENDPOINT("GET", "demo/api/users/{userId}", getUserById,
-           PATH(Int32, userId)) {
-    auto user = m_database->getUserById(userId);
-    OATPP_ASSERT_HTTP(user, Status::CODE_404, "User not found");
-    return createDtoResponse(Status::CODE_200, user);
-  }
-

Add parameters which are not present in the mapping - -use add<type>(param-name) instead of [] operator:

  ENDPOINT_INFO(ConcatParams) {
-    info->summary = "Example. Documenting path params for async APIs.";
-    info->addResponse<String>(Status::CODE_200, "text/plain");
-    info->pathParams.add<String>("param1").description = "just the first parameter"; // add param1 info
-    info->pathParams.add<String>("param2").description = "just the second parameter"; // add param2 info
-  }
-  ENDPOINT_ASYNC("GET", "/params/{param1}/{param2}", ConcatParams) {
-
-    ENDPOINT_ASYNC_INIT(ConcatParams)
-
-    Action act() override {
-      auto p1 = request->getPathVariable("param1");
-      auto p2 = request->getPathVariable("param2");
-      OATPP_ASSERT_HTTP(p1 && p2, Status::CODE_400, "param1 and param2 should not be null");
-      return _return(controller->createResponse(Status::CODE_200, "param1 + param2 = '" + p1 + p2 + "'"));
-    }
-
-  };
-

# Examples and Q&A

- - - diff --git a/docs/.vuepress/dist/docs/components/dto/index.html b/docs/.vuepress/dist/docs/components/dto/index.html deleted file mode 100644 index b6c3dc395..000000000 --- a/docs/.vuepress/dist/docs/components/dto/index.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - Data Transfer Object | Oat++ - - - - - - - -

# Data Transfer Object (DTO)

DTO is any object of the class which extends oatpp::DTO. -It is a special object which can be Serialized and Deserialized with the help of -oatpp::data::mapping::ObjectMapper.

# Declaration

DTO objects are generated within DTO-code-gen section. DTO code generation section must begin with
#include OATPP_CODEGEN_BEGIN(DTO) and must be closed with #include OATPP_CODEGEN_END(DTO). -Do not forget to close code generation section in order to avoid macro conflicts later in the code!

#include "oatpp/core/Types.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-#include OATPP_CODEGEN_BEGIN(DTO) ///< Begin DTO codegen section
-
-class User : public oatpp::DTO {
-
-  DTO_INIT(User, DTO /* extends */)
-
-  DTO_FIELD(String, name);
-  DTO_FIELD(Int32, age);
-
-};
-
-#include OATPP_CODEGEN_END(DTO) ///< End DTO codegen section
-

# Field Name Qualifier

DTO_FIELD(String, name, "user-name");
-

# Default Value

By default all values are set to nullptr. You can override default values by assigning values to DTO fields.

DTO_FIELD(String, name) = "Ivan";
-

# Additional Field Info

DTO_FIELD_INFO(name) {
-  info->description = "user first name"; //<-- Fields description is integrated with Swagger-UI.
-}
-DTO_FIELD(String, name) = "Ivan";
-

# Declare Field As Object

DTO_FIELD(Object<User>, user);
-

# Declare Field As List

List of primitives:

DTO_FIELD(List<Int32>, colors);
-

List of Objects:

DTO_FIELD(List<Object<MyObject>>, colors);
-

# Declare Field As Map

Map String --> Int32:

DTO_FIELD(Fields<Int32>, colors);
-

Map String --> Object:

DTO_FIELD(Fields<Object<MyObject>>, colors);
-

# Core Types

Types defined in oatpp/core/Types.hpp.

# Primitives

Type Underlying Type Default Value
Int8 v_int8 nullptr
UInt8 v_uint8 nullptr
Int16 v_int16 nullptr
UInt16 v_uint16 nullptr
Int32 v_int32 nullptr
UInt32 v_uint32 nullptr
Int64 v_int64 nullptr
UInt64 v_uint64 nullptr
Float32 v_float32 nullptr
Float64 v_float64 nullptr
Boolean bool nullptr
# Examples
oatpp::Int32 a = 32;
-v_int32 va = *a;
-

# Collections

Type Underlying Collection Default Value
Vector<T> std::vector<T> nullptr
List<T> std::list<T> nullptr
UnorderedSet<T> std::unordered_set<T> nullptr
Fields<T> std::list<std::pair<Key, Value>> nullptr
UnorderedFields<T> std::unordered_map<Key, Value> nullptr
# Examples
oatpp::Vector<oatpp::String> porridges = {"Owsianka", "Stirabout", "Zabkása"};
-for(auto& porridge : *porridges) {
-  ...
-}
-

# Special Types

Type Underlying Type Default Value
String oatpp::base::StrBuffer nullptr
Object<T> class which extends oatpp::DTO nullptr
Enum<T> enum declared via ENUM nullptr
Any any other mapping-enabled type nullptr
# Examples
oatpp::Object<MyDto> dto = MyDto::createShared();
-oatpp::Any any = dto;
-...
-auto dto = any.retrieve<oatpp::Object<MyDto>>(); // throws `std::runtime_error` if stored type doesn't match.
-

# Custom Types

To simplify the integration of custom types with oatpp Object-Mapping framework the "Type Interpretation" feature was introduced.
For information about custom object mapping contact us in dev-chat

Let's say you have some struct that is not part of oatpp object-mapping framework.

struct VPoint {
-  v_int32 x;
-  v_int32 y;
-  v_int32 z;
-};
-

To integrate it with oatpp object-mapping you can do the following:

namespace __class {
-  class PointClass;
-}
-
-/* Declare ObjectWrapper for your type */
-/* Mapping-Enabled Point */
-typedef oatpp::data::mapping::type::Primitive<VPoint, __class::PointClass> Point;
-
-namespace __class {
-
-  /**
-   * Type info
-   */
-  class PointClass {
-  private:
-
-    /**
-     * Type interpretation
-     */
-    class Inter : public oatpp::Type::Interpretation<Point, oatpp::UnorderedFields<oatpp::Int32>>  {
-    public:
-
-      oatpp::UnorderedFields<oatpp::Int32> interpret(const Point& value) const override {
-          return {{"x", value->x}, {"y", value->y}, {"z", value->z}};
-      }
-
-      Point reproduce(const oatpp::UnorderedFields<oatpp::Int32> map) const override {
-        return Point({map["x"], map["y"], map["z"]});
-      }
-
-    };
-
-  public:
-
-    static const oatpp::ClassId CLASS_ID;
-
-    static oatpp::Type* getType(){
-      static Type type(CLASS_ID, nullptr, nullptr, {{"my-types", new Inter()}} /* <-- Add type interpretation */ );
-      return &type;
-    }
-
-  };
-
-  const oatpp::ClassId PointClass::CLASS_ID("my-types::Point");
-
-}
-

Now the "Point" struct can be serialized/deserialized with object mappers.

oatpp::parser::json::mapping::ObjectMapper mapper;
-
-{
-  auto config = mapper.getSerializer()->getConfig();
-  config->enabledInterpretations = {"my-types"}; // Enable "my-types" for serializer
-}
-
-{
-  auto config = mapper.getDeserializer()->getConfig();
-  config->enabledInterpretations = {"my-types"}; // Enable "my-types" for deserializer
-}
-
-Point point ({1, 2, 3}); // Create mapping-enabled Point
-
-auto json = mapper.writeToString(point); // Serialize Point
-auto pointClone = mapper.readFromString<Point>(json); // Deserialize Point
-

Note: Type interpretations work through all framework components including REST framework, ORM, and Swagger-UI.

# Example

# Serialize / Deserialize

# Define DTO

#include "oatpp/core/Types.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-#include OATPP_CODEGEN_BEGIN(DTO) ///< Begin DTO codegen section
-
-class User : public oatpp::DTO {
-
-  DTO_INIT(User, DTO /* extends */)
-
-  DTO_FIELD(String, name, "First-Name");
-  DTO_FIELD(String, surname, "Family-Name");
-  DTO_FIELD(Int32, age);
-  DTO_FIELD(Fields<List<Object<User>>>, familyMembers); ///< Map<String, List<User>>
-  DTO_FIELD(Fields<String>, additionalNotes); ///< Map<String, String>
-
-};
-
-#include OATPP_CODEGEN_END(DTO) ///< End DTO codegen section
-

# Create object and set fields

/* create user */
-auto user = User::createShared();
-user->name = "Ivan";
-user->surname = "Ovsyanochka";
-user->age = 24;
-user->familyMembers = {}; // Initialize empty map.
-user->additionalNotes = {}; // Initialize empty map.
-
-/* create user */
-auto brother = User::createShared();
-brother->name = "Yuriy";
-brother->surname = "Ovsyanochka";
-brother->age = 30;
-
-/* create user */
-auto sister = User::createShared();
-sister->name = "Kate";
-sister->surname = "Ovsyanochka";
-sister->age = 20;
-
-/* create list of siblings */
-oatpp::List<oatpp::Object<User>> siblings = {brother, sister};
-
-user->familyMembers->insert({"siblings", siblings});
-user->additionalNotes->insert({"Education", "Master of Computer Science"});
-

# Create JSON object mapper

#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-
-...
-
-/* create json ObjectMapper with default configs */
-auto jsonObjectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
-

# Serialize user to json

oatpp::String json = jsonObjectMapper->writeToString(user); 
-OATPP_LOGD("json", "value='%s'", json->c_str()); ///< print json
-

output:

{
-  "First-Name": "Ivan",
-  "Family-Name": "Ovsyanochka",
-  "age": 24,
-  "familyMembers": {
-    "siblings": [
-      {
-        "First-Name": "Yuriy",
-        "Family-Name": "Ovsyanochka",
-        "age": 30,
-        "familyMembers": null,
-        "additionalNotes": null
-      },
-      {
-        "First-Name": "Kate",
-        "Family-Name": "Ovsyanochka",
-        "age": 20,
-        "familyMembers": null,
-        "additionalNotes": null
-      }
-    ]
-  },
-  "additionalNotes": {
-    "Education": "Master of Computer Science"
-  }
-}
-

Please note: example of above output is beautified with oatpp::parser::json::Beautifier.

# Deserizalize from String

auto cloneOfUser = jsonObjectMapper->readFromString<oatpp::Object<User>>(json);
-

# Use JSON Beautifier

Without the use of beautifier the json serializer output will contain no spaces nor newline character:

{"First-Name":"Ivan","Family-Name":"Ovsyanochka","age":24 ...
-

In order to beautify json output set useBeautifier = true in serializer config:

/* create serializer and deserializer configurations */
-auto serializeConfig = oatpp::parser::json::mapping::Serializer::Config::createShared();
-auto deserializeConfig = oatpp::parser::json::mapping::Deserializer::Config::createShared();
-
-/* enable beautifier */
-serializeConfig->useBeautifier = true;
-
-/* create json object mapper with serializer config */
-auto jsonObjectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(serializeConfig, deserializeConfig);
-

More about json object mapper configuration see:

# Examples of code

https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp

- - - diff --git a/docs/.vuepress/dist/docs/components/orm/index.html b/docs/.vuepress/dist/docs/components/orm/index.html deleted file mode 100644 index 2dd804b1b..000000000 --- a/docs/.vuepress/dist/docs/components/orm/index.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - Oat++ ORM | Oat++ - - - - - - - -

# Object-Relational Mapping (ORM) Framework

TIP

Have got any questions - ask them in the Devs Chat on Gitter

Oat++ ORM framework is a set of generalized interfaces and their implementations to make it easy to work with databases.

It's based on an object-mapping framework and ensures data consistency when manipulating with data. -Also, it integrates perfectly with other Oat++ components ensuring seamless data-flow in the application -(example: from REST to database, from the database to REST).

# High-Level Overview

# Declare DbClient

The main component you are going to work with is the DbClient. -You may treat it as the main point interfacing with your data. Here you declare database queries and manage database schema migrations.

Database queries are declared with the help of code-gen macros.
-DbClient code generation section must begin with -#include OATPP_CODEGEN_BEGIN(DbClient) and must be closed with -#include OATPP_CODEGEN_END(DbClient).
Do not forget to close the code generation section in order to avoid macro conflicts later in the code!

#include "oatpp/orm/SchemaMigration.hpp"
-#include "oatpp/orm/DbClient.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-#include OATPP_CODEGEN_BEGIN(DbClient) ///< Begin code-gen section
-
-class MyClient : public oatpp::orm::DbClient {
-public:
-
-  MyClient(const std::shared_ptr<oatpp::orm::Executor>& executor)
-    : oatpp::orm::DbClient(executor)
-  {}
-  
-  QUERY(createUser,
-        "INSERT INTO users (username, email, role) VALUES (:username, :email, :role);",
-        PARAM(oatpp::String, username), 
-        PARAM(oatpp::String, email), 
-        PARAM(oatpp::Enum<UserRoles>::AsString, role)) 
-
-  QUERY(getUserByName, 
-        "SELECT * FROM users WHERE username=:username;", 
-        PARAM(oatpp::String, username)) 
-        
-};
-
-#include OATPP_CODEGEN_END(DbClient) ///< End code-gen section
-

# Create DbClient Component And Connect to Database

DbClient is a heavy object - you want to instantiate it once and then inject it in whatever places you are going to use it.

#include "db/MyClient.hpp"      //< User-declared DbClient
-#include "oatpp-sqlite/orm.hpp" //< SQLite adapter for oatpp ORM
-
-class AppComponent {
-public:
-  
-  /**
-   * Create DbClient component.
-   * SQLite is used as an example here. For other databases declaration is similar.
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<db::MyClient>, myDatabaseClient)([] {
-
-    /* Create database-specific ConnectionProvider */
-    auto connectionProvider = std::make_shared<oatpp::sqlite::ConnectionProvider>("/path/to/database.sqlite");    
-
-    /* Create database-specific Executor */
-    auto executor = std::make_shared<oatpp::sqlite::Executor>(connectionProvider);
-  
-    /* Create MyClient database client */
-    return std::make_shared<MyClient>(executor);
-
-  }());
-
-};
-

Note:

  • ConnectionProvider and ConnectionPool objects can be reused by multiple Executors unless it's -prohibited by a database-specific implementation.
  • Executor can be reused by multiple DbClients unless it's prohibited by a database-specific implementation.

# DbClient Usage Example

/* Inject MyClient database client */
-OATPP_COMPONENT(std::shared_ptr<db::MyClient>, client);
-
-/* Create new user in the database */
-client->createUser("admin", "admin@domain.com", UserRoles::ADMIN);
-
-/* Find user by username in the database */
-auto result = client->getUserByUsername("admin");
-
-/* Retrieve query result as a vector of UserDto objects */
-/* Of cause, UserDto had to be previously defined */
-/* You can also use oatpp::Fields<oatpp::Any> - instead of oatpp::Object<UserDto> for any arbitrary result */
-auto dataset = result->fetch<oatpp::Vector<oatpp::Object<UserDto>>>();
-
-/* And we can easily serialize result as a json string using json object mapper */
-auto json = jsonObjectMapper.writeToString(dataset);
-
-/* Print the resultant json */
-std::cout << json->c_str() << std::endl;
-

Output:

[
-  {
-    "name": "admin",
-    "email": "admin@domain.com",
-    "role": "ROLE_ADMIN"
-  }
-]
-

# Supported Databases

# Available Database Adaptors

Adaptor Database Limitations Example Project
oatpp-sqlite SQLite Full feature support example-crud
oatpp-postgresql PostgreSQL Doesn't support all postgres types example-postgresql

# Libraries Hierarchy

The main oatpp module contains ORM interfaces only. In order to "plug" a specific database, -you have to link the corresponding adaptor (ex.: oatpp-sqlite).

- oatpp                     # The main oatpp module. ORM interfaces are here.
-    |
-    |- oatpp-sqlite         # Sqlite adapter for oatpp ORM. Sqlite-specific implementation is here.
-    |- oatpp-postgresql     # PostgreSQL adapter for oatpp ORM. PostgreSQL-specific implementation is here.
-    ...
-    ... etc.
-

# DbClient

# Declare a Query

QUERY(selectAllUsers, "SELECT * FROM users;") 
-

# Query With Parameters

QUERY(selectUserByUsername, 
-      "SELECT * FROM users WHERE username=:username;",
-      PARAM(oatpp::String, username)) 
-

During execution the expression username=:username will be changed to username='<username-parameter-value>' and -parameter value will be properly escaped according to its type.

# Query With DTO as a Parameter

For complex queries, it's more convenient to use DTO objects as for parameters set. Thus you ensure the correct order of arguments.

QUERY(insertUser, 
-      "INSERT INTO users "
-      "(username, email, role) VALUES "
-      "(:user.username, :user.email, :user.role);",
-      PARAM(oatpp::Object<UserDto>, user))
-

Note:
-The query template variable names are now starting with user, like user.username - -where user is the name of the DTO parameter, and username is the name of DTO field.

  • Yes, you can specify a path to nested DTO fields like :user.path.to.nested.field.
  • Yes, you can have multiple DTO parameters in the query, and you can mix DTO parameters with regular parameters.

# Query With Prepared Statement

QUERY(selectUserByUsername, 
-      "SELECT * FROM users WHERE username=:username;",
-      PREPARE(true), //<-- set prepare to `true` to use a prepared statement.
-      PARAM(oatpp::String, username)) 
-

Note:
-The database adapter may ignore this. -For example:

  • SQLite is always using prepared statements to execute queries thus oatpp-sqlite will ignore this parameter.
  • PostgreSQL has a special method to execute prepared statements thus oatpp-postgresql will not ignore this parameter.

# Execute An Arbitrary Query

To execute an arbitrary query use DbClient::executeQuery() method.
-Use this method when it's needed to dynamically build a query.

auto dbResult = client.executeQuery("SELECT * FROM users;", {} /* empty params map */);
-

You can add parameters using parameters map:

auto dbResult = client.executeQuery(
-  "SELECT * FROM users WHERE id=:id AND username=:username;", 
-  {
-    {"id", oatpp::Int64(23)},             ///< Yes, you have to explicitly specify parameter type here - oatpp::Int64
-    {"username", oatpp::String("admin")}  ///< Yes, you have to explicitly specify parameter type here - oatpp::String
-  }
-);
-

When building parameters map dynamically you have to use std::unordered_map::insert() method.
-The [] operator WON'T work.

std::unordered_map<oatpp::String, oatpp::Void> params;
-params.insert({"id", oatpp::Int64(23)});
-params.insert({"username", oatpp::String("admin")});
-auto dbResult = client.executeQuery("SELECT * FROM users WHERE id=:id AND username=:username;", params);
-

To build a query string it's recommended to use oatpp::data::stream::BufferOutputStream.

#include "oatpp/core/data/stream/BufferStream.hpp"
-
-...
-
-oatpp::data::stream::BufferOutputStream stream;
-stream 
-<< "SELECT * FROM users "
-<< "WHERE "
-<< "id=:id" << " AND " << "username=:username" << ";" 
-
-std::unordered_map<oatpp::String, oatpp::Void> params;
-params.insert({"id", oatpp::Int64(23)});
-params.insert({"username", oatpp::String("admin")});
-
-auto dbResult = client.executeQuery(stream.toString(), params);
-

# Enable Type Interpretations

When using custom or non-standard types as parameters in QUERY macro, -as well as when reading query results to custom/non-standard structures, you have to -explicitly enable corresponding type interpretations.

The recommended place to do it - is the constructor:

class MyClient : public oatpp::orm::DbClient {
-public:
-
-  MyClient(const std::shared_ptr<oatpp::orm::Executor>& executor)
-    : oatpp::orm::DbClient(executor)
-  {
-    setEnabledInterpretations({"protobuf"});
-  }
-
-  ...
-        
-};
-

# Query With Custom Type Parameter

QUERY(insertUser, 
-      "INSERT INTO users "
-      "(username, email, role) VALUES "
-      "(:user.username, :user.email, :user.role);",
-      PARAM(oatpp::protobuf::Object<User>, user)) // Pass protobuf object
-

# Map Query Result To Custom Type

/* Execute query */
-auto result = client->getUserByUsername("admin");
-
-/* Map result to a vector of protobuf objects */
-auto dataset = res->fetch<oatpp::Vector<oatpp::protobuf::Object<User>>>(); // Map result
-
-for(auto& user : *dataset) {
-  ...
-}
-

# Transactions

Use DbClient::beginTransaction() method to begin a transaction.
-All queries MUST be executed on the same transaction connection.

{
-  auto transaction = client.beginTransaction();
-  
-  client.insertUser(user1, transaction.getConnection());
-  client.insertUser(user2, transaction.getConnection());
-  client.insertUser(user3, transaction.getConnection());
-
-  transaction.commit();
-}
-

Note:
-Transaction will be automatically rollback if Transaction::commit() method -was not called.

# Executing Queries

/* Execute a query */
-auto queryResult = client.selectAllUsers();
-
-/* Check if the operation was successful */
-if(!queryResult->isSuccess()) {
-  auto message = queryResult->getErrorMessage();
-  OATPP_LOGD("Query", "Error, message=%s", message->c_str());
-}
-
-/* Fetch everything as a vector of User objects */
-auto dataset = queryResult->fetch<oatpp::Vector<oatpp::Object<User>>>();
-

The queryResult here is the oatpp::orm::QueryResult object. -All queries return oatpp::orm::QueryResult.

# Mapping Results

Available result mappings depend on the database adapter but here are some examples (that work for oatpp-sqlite and oatpp-postgresql)...

# Map everything using previously decalred UserDto and display results

For more info on how to declare a DTO - see oatpp::DTO

auto dataset = queryResult->fetch<oatpp::Vector<oatpp::Object<oatpp::UserDto>>>();
-
-/* Serialize result as a json string using json object mapper */
-auto json = jsonObjectMapper.writeToString(dataset);
-
-/* Print the resultant json */
-std::cout << json->c_str() << std::endl;
-

Output:

[
-  {
-    "name": "admin",
-    "email": "admin@domain.com",
-    "role": "ROLE_ADMIN"
-  },
-  {
-    "name": "ivan",
-    "email": "ivan@domain.com",
-    "role": "ROLE_GUEST"
-  }
-]
-

# Map everything using oatpp::Any and display results

auto dataset = queryResult->fetch<oatpp::Vector<oatpp::Fields<oatpp::Any>>>();
-
-/* Serialize result as a json string using json object mapper */
-auto json = jsonObjectMapper.writeToString(dataset);
-
-/* Print the resultant json */
-std::cout << json->c_str() << std::endl;
-

Output:

[
-  {
-    "name": "admin",
-    "email": "admin@domain.com",
-    "role": "ROLE_ADMIN"
-  },
-  {
-    "name": "ivan",
-    "email": "ivan@domain.com",
-    "role": "ROLE_GUEST"
-  }
-]
-

# Managing Connections

All declared queries have an oatpp::orm::Connection as the last parameter.
-If the connection is not specified(nullptr), then the new connection will be opened to execute that query.

{
-  auto queryResult = client.selectAllUsers(); //< Open a new connection.
-}
-
-{
-  auto connection = client.getConnection();
-  auto queryResult = client.selectAllUsers(connection); //< Execute using the connection provided.
-}
-
-{
-  auto queryResult = client.selectAllUsers(); //< Open a new connection.
-  ...
-  queryResult = client.insertUser(user, queryResult->getConnection()); //< Execute on the same connection as the last query.
-}
-

Note:

The queryResult object holds a connection. The connection won't return to the connection pool until queryResult is destroyed.

# Connection Pool

It's always a good idea to use a connection pool when working with a database.

#include "db/MyClient.hpp"
-#include "oatpp-sqlite/orm.hpp"
-
-class AppComponent {
-public:
-  
-  /**
-   * Create DbClient component.
-   * SQLite is used as an example here. For other databases declaration is similar.
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<db::MyClient>, myDatabaseClient)([] {
-    /* Create database-specific ConnectionProvider */
-    auto connectionProvider = std::make_shared<oatpp::sqlite::ConnectionProvider>("/path/to/database.sqlite");    
-  
-    /* Create database-specific ConnectionPool */
-    auto connectionPool = oatpp::sqlite::ConnectionPool::createShared(connectionProvider, 
-                                                                      10 /* max-connections */, 
-                                                                      std::chrono::seconds(5) /* connection TTL */);
-    
-    /* Create database-specific Executor */
-    auto executor = std::make_shared<oatpp::sqlite::Executor>(connectionPool);
-  
-    /* Create MyClient database client */
-    return std::make_shared<MyClient>(executor);
-  }());
-
-};
-

Note: -SQLite is used as an example here. For other databases declaration is similar.

# Schema Migration

Use SchemaMigration to do schema migrations!
-The recommended place to do schema migrations is the constructor of your DbClient.

# Overview

class MyClient : public oatpp::orm::DbClient {
-public:
-
-  MyClient(const std::shared_ptr<oatpp::orm::Executor>& executor)
-    : oatpp::orm::DbClient(executor)
-  {
-    oatpp::orm::SchemaMigration migration(executor); 
-    migration.addFile(1 /* version */, "sql/initial_schema.sql" /* migration script */);
-    migration.addFile(2 /* version */, "sql/schema_fix_1.sql"   /* migration script */);
-    ...
-    migration.migrate(); //<-- This guy will throw on error.
-  }
-
-  ...
-        
-};
-

Note:

  • Version MUST start from 1.
  • Version MUST be incremented by 1.
  • In case of an error changes will be rolled back to the last successfully applied version.

# Schema Name

If you have multiple Schemas in your database you can manage migrations of each one independently. -For this specify a version control table suffix:

oatpp::orm::SchemaMigration migration(executor, "suffix");
-

Note: -It is recommended to have one DbClient per schema!

# Examples projects

- - - diff --git a/docs/.vuepress/dist/docs/features/upload-file/index.html b/docs/.vuepress/dist/docs/features/upload-file/index.html deleted file mode 100644 index 2ee2b64fb..000000000 --- a/docs/.vuepress/dist/docs/features/upload-file/index.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - Upload File | Oat++ - - - - - - - -

# Upload File

# Upload and stream to file


-#include "oatpp/core/data/stream/FileStream.hpp"
-
-...
-
-ENDPOINT("POST", "/upload", upload, REQUEST(std::shared_ptr<IncomingRequest>, request)) {
-    oatpp::data::stream::FileOutputStream fileOutputStream("/path/to/file");
-    request->transferBodyToStream(&fileOutputStream); // transfer body chunk by chunk
-    return createResponse(Status::CODE_200, "OK");
-}
-

# Simple API Multipart Upload

# Store Part In Memory


-  #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  #include "oatpp/web/mime/multipart/PartList.hpp"
-  
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-ENDPOINT("POST", "upload/multipart", uploadMultipart,
-    REQUEST(std::shared_ptr<IncomingRequest>, request))
-{
-
-    /* Prepare multipart container. */
-    auto multipart = std::make_shared<multipart::PartList>(request->getHeaders());
-
-    /* Create multipart reader. */
-    multipart::Reader multipartReader(multipart.get());
-
-    /* Configure to read part with name "part1" into memory */
-    multipartReader.setPartReader("part1", multipart::createInMemoryPartReader(256 /* max-data-size */));
-
-    /* Read multipart body */
-    request->transferBody(&multipartReader);
-
-    /* Print value of "part1" */
-    auto part1 = multipart->getNamedPart("part1");
-
-    /* Assert part is not null */
-    OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
-
-    /* Print part value */
-    OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str());
-
-    return createResponse(Status::CODE_200, "OK");
-
-}
-
-

# Stream Part To File


-  #include "oatpp/web/mime/multipart/FileStreamProvider.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  #include "oatpp/web/mime/multipart/PartList.hpp"
-
-  
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-  ENDPOINT("POST", "upload/multipart", uploadMultipart,
-           REQUEST(std::shared_ptr<IncomingRequest>, request))
-  {
-
-    /* Prepare multipart container. */
-    auto multipart = std::make_shared<multipart::PartList>(request->getHeaders());
-
-    /* Create multipart reader. */
-    multipart::Reader multipartReader(multipart.get());
-
-    /* Configure to stream part with name "part1" to file */
-    multipartReader.setPartReader("part1", multipart::createFilePartReader("/path/to/file"));
-
-    /* Read multipart body */
-    request->transferBody(&multipartReader);
-
-    /* Print value of "part1" */
-    auto part1 = multipart->getNamedPart("part1");
-
-    /* Assert part is not null */
-    OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
-
-    /* Get part data input stream */
-    auto inputStream = part1->getInputStream();
-    
-    // TODO - process file stream.
-
-    return createResponse(Status::CODE_200, "OK");
-
-  }
-
-

# Complete Example


-  #include "oatpp/web/mime/multipart/FileStreamProvider.hpp"
-  #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  #include "oatpp/web/mime/multipart/PartList.hpp"
-
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-  ENDPOINT("POST", "test/multipart-all", uploadMultipart,
-           REQUEST(std::shared_ptr<IncomingRequest>, request))
-  {
-
-    /* Prepare multipart container. */
-    auto multipart = std::make_shared<multipart::PartList>(request->getHeaders());
-
-    /* Create multipart reader. */
-    multipart::Reader multipartReader(multipart.get());
-
-    /* Configure to read part with name "part1" into memory */
-    multipartReader.setPartReader("part1", multipart::createInMemoryPartReader(256 /* max-data-size */));
-
-    /* Configure to stream part with name "part2" to file */
-    multipartReader.setPartReader("part2", multipart::createFilePartReader("/path/to/file"));
-
-    /* Configure to read all other parts into memory */
-    multipartReader.setDefaultPartReader(multipart::createInMemoryPartReader(16 * 1024 /* max-data-size */));
-
-    /* Read multipart body */
-    request->transferBody(&multipartReader);
-
-    /* Print number of uploaded parts */
-    OATPP_LOGD("Multipart", "parts_count=%d", multipart->count());
-
-    /* Get part by name "part1" */
-    auto part1 = multipart->getNamedPart("part1");
-
-    /* Assert part is not null */
-    OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
-
-    /* Print in-memory value of "part1" */
-    OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str());
-
-    /* Get part by name "part2"*/
-    auto filePart = multipart->getNamedPart("part2");
-
-    /* Assert part is not null */
-    OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part2 is null");
-
-    /* Get part data input stream */
-    auto inputStream = filePart->getInputStream();
-
-    // TODO - process file stream.
-
-    return createResponse(Status::CODE_200, "OK");
-
-  }
-
-

# Async API Multipart Upload

# Async Store Part In Memory

  #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-  ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) {
-
-    ENDPOINT_ASYNC_INIT(MultipartUpload)
-
-    /* Coroutine State */
-    std::shared_ptr<multipart::Multipart> m_multipart;
-
-    Action act() override {
-
-      m_multipart = std::make_shared<multipart::Multipart>(request->getHeaders());
-      auto multipartReader = std::make_shared<multipart::AsyncReader>(m_multipart);
-
-      /* Configure to read part with name "part1" into memory */
-      multipartReader->setPartReader("part1", multipart::createAsyncInMemoryPartReader(256 /* max-data-size */));
-
-      /* Read multipart body */
-      return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded));
-
-    }
-
-    Action onUploaded() {
-
-      /* Get multipart by name */
-      auto part1 = m_multipart->getNamedPart("part1");
-
-      /* Asser part not-null */
-      OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
-
-      /* Print value of "part1" */
-      OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str());
-
-      return _return(controller->createResponse(Status::CODE_200, "OK"));
-
-    }
-
-  };
-

# Async Stream Part To File

  #include "oatpp/web/mime/multipart/FileStreamProvider.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-  ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) {
-
-    ENDPOINT_ASYNC_INIT(MultipartUpload)
-
-    /* Coroutine State */
-    std::shared_ptr<multipart::Multipart> m_multipart;
-
-    Action act() override {
-
-      m_multipart = std::make_shared<multipart::Multipart>(request->getHeaders());
-      auto multipartReader = std::make_shared<multipart::AsyncReader>(m_multipart);
-
-      /* Configure to stream part with name "part1" to file */
-      multipartReader->setPartReader("part1", multipart::createAsyncFilePartReader("/path/to/file"));
-
-      /* Read multipart body */
-      return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded));
-
-    }
-
-    Action onUploaded() {
-
-      /* Get multipart by name */
-      auto filePart = m_multipart->getNamedPart("part1");
-
-      /* Asser part not-null */
-      OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part1 is null");
-
-      /* Get part data input stream */
-      auto inputStream = filePart->getInputStream();
-
-      // TODO - process file stream.
-
-      return _return(controller->createResponse(Status::CODE_200, "OK"));
-
-    }
-
-  };
-

# Async Complete Example

  #include "oatpp/web/mime/multipart/FileStreamProvider.hpp"
-  #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp"
-  #include "oatpp/web/mime/multipart/Reader.hpp"
-  
-  ...
-  
-  namespace multipart = oatpp::web::mime::multipart;
-  
-  ...
-
-  ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) {
-
-    ENDPOINT_ASYNC_INIT(MultipartUpload)
-
-    /* Coroutine State */
-    std::shared_ptr<multipart::Multipart> m_multipart;
-
-    Action act() override {
-
-      m_multipart = std::make_shared<multipart::Multipart>(request->getHeaders());
-      auto multipartReader = std::make_shared<multipart::AsyncReader>(m_multipart);
-
-      /* Configure to read part with name "part1" into memory */
-      multipartReader->setPartReader("part1", multipart::createAsyncInMemoryPartReader(256 /* max-data-size */));
-
-      /* Configure to stream part with name "part2" to file */
-      multipartReader->setPartReader("part2", multipart::createAsyncFilePartReader("/path/to/file"));
-
-      /* Configure to read all other parts into memory */
-      multipartReader->setDefaultPartReader(multipart::createAsyncInMemoryPartReader(16 * 1024 /* max-data-size */));
-
-      /* Read multipart body */
-      return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded));
-
-    }
-
-    Action onUploaded() {
-
-      /* Print number of uploaded parts */
-      OATPP_LOGD("Multipart", "parts_count=%d", m_multipart->count());
-
-      /* Get multipart by name */
-      auto part1 = m_multipart->getNamedPart("part1");
-
-      /* Asser part not-null */
-      OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
-
-      /* Print value of "part1" */
-      OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str());
-
-      /* Get multipart by name */
-      auto filePart = m_multipart->getNamedPart("part2");
-
-      /* Asser part not-null */
-      OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part2 is null");
-
-      /* Get part data input stream */
-      auto inputStream = filePart->getInputStream();
-
-      // TODO - process file stream.
-
-      return _return(controller->createResponse(Status::CODE_200, "OK"));
-
-    }
-
-  };
-
- - - diff --git a/docs/.vuepress/dist/docs/installation/conan/index.html b/docs/.vuepress/dist/docs/installation/conan/index.html deleted file mode 100644 index d0b4e49ab..000000000 --- a/docs/.vuepress/dist/docs/installation/conan/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Installation with Conan | Oat++ - - - - - - - -

# Conan

Check out the community-maintained Conan packages!

# Credits

nicraMarcin, -theirix, -hoxnox, -SpaceIm, -Alberto-Izquierdo, -frek818

- - - diff --git a/docs/.vuepress/dist/docs/installation/unix-linux/index.html b/docs/.vuepress/dist/docs/installation/unix-linux/index.html deleted file mode 100644 index 185f7fca9..000000000 --- a/docs/.vuepress/dist/docs/installation/unix-linux/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - Installation on Unix/Linux | Oat++ - - - - - - - -

# Installation on Unix/Linux

The installation process of Oat++ is simple and straightforward. -If you have all prerequisites installed, jump straight to Install Oat++.

# Prerequisites

  • Git
  • C++ compiler supporting C++ version >= 11.
  • Make
  • CMake version >= 3.1

For details see Installing Prerequisites.

# Install Oat++

Once all prerequisites installed - install Oat++:

$ git clone https://github.com/oatpp/oatpp.git
-$ cd oatpp/
-
-$ mkdir build && cd build
-
-$ cmake ..
-$ make install
-

# Installation CMake options:

Option Default Description
CMAKE_BUILD_TYPE Debug Build type.
BUILD_SHARED_LIBS OFF Leave this option to OFF. Oat++ is meant to be used as a static library.
OATPP_BUILD_TESTS ON Set it to OFF to disable tests build.
OATPP_LINK_ATOMIC OFF Explicitly link libatomic. This flag is ignored for: MSVC, MINGW, APPLE, FreeBSD.
OATPP_DISABLE_ENV_OBJECT_COUNTERS OFF If ON, do not count oatpp objects (do not detect memory-leaks). This will increase performance.
Note: DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.
OATPP_DISABLE_POOL_ALLOCATIONS OFF If ON, do not use oatpp memory-pools.
OATPP_COMPAT_BUILD_NO_THREAD_LOCAL OFF Build without thread_local feature. See #81.

# Installing Prerequisites

# Ubuntu

Install prerequisites:

$ apt-get install git
-$ apt-get install cmake
-$ apt-get install build-essential
-

# CentOS

Install prerequisites:

$ yum install git
-$ yum install cmake
-$ yum install gcc gcc-c++ make
-$ yum install libatomic
-

# Fedora

Install prerequisites:

$ yum install git
-$ yum install cmake
-$ yum install gcc gcc-c++ make
-$ yum install libatomic
-

# Alpine

Install prerequisites:

$ apk add git
-$ apk add cmake
-$ apk add g++
-$ apk add make
-

# Patches

Some platforms may require patching of build-scripts to properly install oatpp. -You may find what you need in the following repos:

  • OpenWRT - see Oat++ OpenWRT feed -containing build-scripts, options and patches for applications, modules and libraries provided by Oat++.
  • NixOS - see Oat++ NixOS feed - collection of patches to properly install -oatpp on NixOS. Special thanks to David Ibbitson - dibbitson.
- - - diff --git a/docs/.vuepress/dist/docs/installation/vcpkg/index.html b/docs/.vuepress/dist/docs/installation/vcpkg/index.html deleted file mode 100644 index f6354b5d3..000000000 --- a/docs/.vuepress/dist/docs/installation/vcpkg/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Installation with Vcpkg | Oat++ - - - - - - - -

# Vcpkg

The community maintained ports are available for the majority of oatpp modules.

# Credits

- - - diff --git a/docs/.vuepress/dist/docs/installation/windows/index.html b/docs/.vuepress/dist/docs/installation/windows/index.html deleted file mode 100644 index 855808015..000000000 --- a/docs/.vuepress/dist/docs/installation/windows/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Installation on Windows | Oat++ - - - - - - - -

# Installation on Windows

# Requirements

  • Microsoft Visual Studio (Tested with Visual Studio 2017)
  • CMake (Latest version recommended)
  • Git

# Install Oat++

$ git clone https://github.com/oatpp/oatpp.git
-$ cd oatpp\
-$ MD build
-$ cd build\
-
-$ cmake ..
-$ cmake --build . --target INSTALL
-

# Installation CMake options:

Option Default Description
CMAKE_BUILD_TYPE Debug Build type.
BUILD_SHARED_LIBS OFF Leave this option to OFF. Oat++ is meant to be used as a static library.
OATPP_BUILD_TESTS ON Set it to OFF to disable tests build.
OATPP_DISABLE_ENV_OBJECT_COUNTERS OFF If ON, do not count oatpp objects (do not detect memory-leaks). This will increase performance.
Note: DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.
OATPP_DISABLE_POOL_ALLOCATIONS OFF If ON, do not use oatpp memory-pools.
OATPP_COMPAT_BUILD_NO_THREAD_LOCAL OFF Build without thread_local feature. See #81.
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-consul/index.html b/docs/.vuepress/dist/docs/modules/oatpp-consul/index.html deleted file mode 100644 index e1dcfe312..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-consul/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - oatpp-consul (module) | Oat++ - - - - - - - -

# oatpp-consul

Github Repository
Example Project

oatpp-consul - extension of oatpp module.
-It provides Consul integration for oatpp applications.

# KV


-#include "oatpp-consul/Client.hpp"
-
-...
-
-  /* request executor should be previously initialized */
-  auto client = oatpp::consul::Client::createShared(requestExecutor);
-
-  /* put value */
-  client->kvPut("key1", "value1");
-
-  /* get value */
-  auto value = client->kvGet("key1");
-
-  /* print value */
-  OATPP_LOGD("consul", "value='%s'", value->c_str());
-
-  /* get kv metadata */
-  auto meta = client->kvGetMetadata("key1");
-
-  /* decode and pring value from metadata */
-  OATPP_LOGD("consul", "value='%s'", meta->getValueDecoded()->c_str());
-
-...
-
-

# Register Service


-#include "oatpp-consul/Client.hpp"
-
-...
-
-  /* request executor should be previously initialized */
-  auto client = oatpp::consul::Client::createShared(requestExecutor);
-
-  /* get oatpp::consul::rest::Client */
-  auto restClient = client->getRestClient();
-
-  auto checkPayload = oatpp::consul::rest::AgentCheckRegisterPayload::createShared();
-  checkPayload->id = "service_check_id";
-  checkPayload->name = "service_check_name";
-  checkPayload->notes = "Check on the MyService/Health endpoint";
-  checkPayload->http = "http://localhost:8000/check/health";
-  checkPayload->method = "GET";
-  checkPayload->interval = "30s";
-  checkPayload->timeout = "15s";
-
-  auto payload = oatpp::consul::rest::AgentServiceRegisterPayload::createShared();
-  payload->id = "service_id";
-  payload->name = "service_name";
-  payload->port = 8000;
-  payload->check = checkPayload;
-
-  /* make API call */
-  auto response = restClient->agentServiceRegister(payload);
-
-  OATPP_LOGD("consul", "response='%s'", response->readBodyToString()->c_str());
-
-...
-
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-curl/index.html b/docs/.vuepress/dist/docs/modules/oatpp-curl/index.html deleted file mode 100644 index 64a7d89b9..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-curl/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - oatpp-curl (module) | Oat++ - - - - - - - -

# oatpp-curl

Github Repository
Example Project

oatpp-curl - extension of oatpp module.
-It is a wrapper over the libcurl. It adapts libcurl to be used as a RequestExecutor for ApiClient.
-Supports both "Simple" and "Async" oatpp APIs.

# Requires

libcurl installed.

# oatpp ApiClient ?

oatpp ApiClient is a mechanism which enables you to generate Web Api Clients in declarative manner. -Under the hood it uses provided RequestExecutor (ex.: oatpp::curl::RequestExecutor) to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes. -Roughly you may treat oatpp ApiClient as Java Retrofit for C++.

# Example

This example is partially taken from oatpp-consul implementation

# Declare ApiClient

Declare ApiClient for remote service using code-generation

class MyApiClient : public oatpp::web::client::ApiClient {
-#include OATPP_CODEGEN_BEGIN(ApiClient)
-
-  API_CLIENT_INIT(DemoApiClient)
-
-  API_CALL("GET", "v1/kv/{key}", kvGet, PATH(String, key))
-  API_CALL("GET", "v1/kv/{key}", kvGetInDC, PATH(String, key), QUERY(String, datacenter, "dc"))
-
-  API_CALL("GET", "v1/kv/{key}?raw", kvGetRaw, PATH(String, key))
-  API_CALL("GET", "v1/kv/{key}?raw&dc={dc}", kvGetRawInDC, PATH(String, key), PATH(String, datacenter, "dc"))
-
-  API_CALL("PUT", "v1/kv/{key}", kvPut, PATH(String, key), BODY_STRING(String, data))
-  API_CALL("PUT", "v1/kv/{key}", kvPutInDC, PATH(String, key), BODY_STRING(String, data), QUERY(String, datacenter, "dc"))
-
-#include OATPP_CODEGEN_END(ApiClient)
-};
-

# Create ApiClient instance

Create MyApiClient instance and configure it to use oatpp::curl::RequestExecutor

/* Create ObjectMapper for serialization of DTOs  */
-auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
-
-/* Create oatpp-curl RequestExecutor with baseUrl */
-auto requestExecutor = oatpp::curl::RequestExecutor::createShared("http://localhost:8500/");
-
-/* Instantiate MyApiClient */
-auto myApiClient = MyApiClient::createShared(requestExecutor, objectMapper);
-

# Make calls


-// like that...
-
-auto value = myApiClient->kvGetRaw("key")->readBodyToString();
-OATPP_LOGD("response", "value='%s'", value->c_str());
-
-// or like that...
-
-auto response = myApiClient->kvPut("key", "some-value");
-if(response->statusCode == 200){
-  auto body = response->readBodyToString();
-  if(body && body == "true") {
-    OATPP_LOGD("response", "value successfully saved");
-  }
-}
-

# More

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-libressl/index.html b/docs/.vuepress/dist/docs/modules/oatpp-libressl/index.html deleted file mode 100644 index 7c2d17f21..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-libressl/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - oatpp-libressl (module) | Oat++ - - - - - - - -

# oatpp-libressl

Github Repository
Example Project

oatpp-libressl - extension of oatpp module.
-It provides secure server and client connection providers for oatpp applications. Based on LibreSSL.
-Supports both "Simple" and "Async" oatpp APIs.

# Requires

  • LibreSSL - minimum version 3.0.0

# Example

See: Full example project TLS-Libressl

# Create server connection provider


-#include "oatpp-libressl/server/ConnectionProvider.hpp"
-#include "oatpp-libressl/Config.hpp"
-
-...
-
-const char* crtFile = "path/to/file.crt";
-const char* pemFile = "path/to/file.pem";
-
-auto config = oatpp::libressl::Config::createDefaultServerConfigShared(crtFile, pemFile /* private key */);
-auto connectionProvider = oatpp::libressl::server::ConnectionProvider::createShared(config, 8443);
-
-

# Create client connection provider


-#include "oatpp-libressl/client/ConnectionProvider.hpp"
-#include "oatpp-libressl/Config.hpp"
-
-...
-
-auto config = oatpp::libressl::Config::createShared();
-auto connectionProvider = oatpp::libressl::client::ConnectionProvider::createShared(config, "httpbin.org", 443);
-
-

# Don't forget!

Set libressl lockingCallback and SIGPIPE handler on program start!


-#include "oatpp-libressl/Callbacks.hpp"
-
-...
-
-/* set lockingCallback for libressl */
-oatpp::libressl::Callbacks::setDefaultCallbacks();
-
-
#include <csignal>
-
-...
-
-/* ignore SIGPIPE */
-std::signal(SIGPIPE, SIG_IGN);
-

# See more

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-mbedtls/index.html b/docs/.vuepress/dist/docs/modules/oatpp-mbedtls/index.html deleted file mode 100644 index 4ce39c0d8..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-mbedtls/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - oatpp-mbedtls (module) | Oat++ - - - - - - - -

# oatpp-mbedtls

Github Repository

oatpp-mbedtls - extension of oatpp module.
-It provides secure server and client connection providers for oatpp applications. Based on MbedTLS.
-Supports both "Simple" and "Async" oatpp APIs.

# Requires

MbedTLS installed.

# APIs

# Server

# ConnectionProvider

Create ConnectionProvider

const char* serverCertificateFile = "path/to/server/certificate";
-const char* serverPrivateKeyFile = "path/to/server/private/key";
-
-/* Create Config */
-auto config = oatpp::mbedtls::Config::createDefaultServerConfigShared(serverCertificateFile, serverPrivateKeyFile);
-
-/* Create Secure Connection Provider */
-auto connectionProvider = oatpp::mbedtls::server::ConnectionProvider::createShared(config, 443 /* port */);
-
-/* Get Secure Connection Stream */
-auto connection = connectionProvider->getConnection();
-

# Custom Transport Stream

Create ConnectionProvider with custom transport stream.

const char* serverCertificateFile = "path/to/server/certificate";
-const char* serverPrivateKeyFile = "path/to/server/private/key";
-
-/* Create Config */
-auto config = oatpp::mbedtls::Config::createDefaultServerConfigShared(serverCertificateFile, serverPrivateKeyFile);
-
-/* Create Transport Stream Provider */
-/* Replace With Your Custom Transport Stream Provider */
-auto transportStreamProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 443, oatpp::network::Address::IP_4});
-
-/* Create Secure Connection Provider */
-auto connectionProvider = oatpp::mbedtls::server::ConnectionProvider::createShared(config, transportStreamProvider);
-
-/* Get Secure Connection Stream over Custom Transport Stream */
-auto connection = connectionProvider->getConnection();
-

Note: To use oatpp-mbedtls for server connections with custom transport stream you should implement:

# Client

# ConnectionProvider

Create ConnectionProvider

/* Create Config */
-auto config = oatpp::mbedtls::Config::createDefaultClientConfigShared();
-
-/* Create Secure Connection Provider */
-auto connectionProvider = oatpp::mbedtls::client::ConnectionProvider::createShared(config, "httpbin.org", 443 /* port */);
-
-/* Get Secure Connection Stream */
-auto connection = connectionProvider->getConnection();
-

# Custom Transport Stream

Create ConnectionProvider with custom transport stream.

/* Create Config */
-auto config = oatpp::mbedtls::Config::createDefaultClientConfigShared();
-
-/* Create Transport Stream Provider */
-/* Replace With Your Custom Transport Stream Provider */
-auto transportStreamProvider = oatpp::network::tcp::client::ConnectionProvider::createShared({"httpbin.org", 443, oatpp::network::Address::IP_4});
-
-/* Create Secure Connection Provider */
-auto connectionProvider = oatpp::mbedtls::client::ConnectionProvider::createShared(config, transportStreamProvider);
-
-/* Get Secure Connection Stream over Custom Transport Stream */
-auto connection = connectionProvider->getConnection();
-

Note: To use oatpp-mbedtls for client connections with custom transport stream you should implement:

# See more

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-mongo/index.html b/docs/.vuepress/dist/docs/modules/oatpp-mongo/index.html deleted file mode 100644 index 412fb1687..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-mongo/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - oatpp-mongo (module) | Oat++ - - - - - - - -

# oatpp-mongo

Github Repository
Example Project

WARNING

  • BSON ObjectMapper - is ready-to-use.
  • Database driver - is in development. While you can do basic CRUD operations, it's still on POC stage. API is not ready and it's not recommended to use. -To work with MongoDB - use BSON ObjectMapper + mongocxx driver.

oatpp-mongo is the oatpp native client for MongoDB. It contains DTO to BSON mapper plus database driver.

Find the complete example project using oatpp-mongo here

# How To Build

oatpp-mongo has no extrernal dependencies (The main oatpp module is still required).
libmongoxcc is used (and linked) in module tests only. Use -DOATPP_BUILD_TESTS=OFF option to build without tests and without dependency on libmongoxcc.

# Install oatpp-mongo

  • Clone this repository.

  • In the root of the repository run:

    mkdir build && cd build
    -cmake -DOATPP_BUILD_TESTS=OFF ..
    -make install
    -

# API

# Temporary API (using libmongoxcc)

Since oatpp driver is not ready yet, you can use libmongoxcc together with oatpp BSON.

Why using oatpp BSON? - because it's based on oatpp object-mapping framework and -it's extremely easy to use.

# Create bsonxx::document From Any oatpp Object

/**
- * This is the utility function that you'll need while working libmongoxcc
- */
-bsoncxx::document::value Database::createMongoDocument(const oatpp::Void &polymorph) {
-  // if you have huge docs, you may want to increase starting BufferOutputStream size.
-  // Or you may want to use oatpp::data::stream::ChunkedBuffer instead - for no-copy growth.
-  oatpp::data::stream::BufferOutputStream stream;
-  
-  m_objectMapper.write(&stream, polymorph); //< Serialize oatpp object to BSON.
-  
-  bsoncxx::document::view view(stream.getData(), stream.getCurrentPosition());
-  return bsoncxx::document::value(view);
-}
-

Where m_objectMapper - is oatpp::mongo::bson::mapping::ObjectMapper.

# Insert Document

Let's say you have such DTO defined:

class User : public oatpp::DTO {
-
-  DTO_INIT(User, DTO)
-
-  DTO_FIELD(String, _id);
-  DTO_FIELD(String, username);
-  DTO_FIELD(Boolean, active);
-  DTO_FIELD(String, role);
-
-};
-

Then you can insert your DTO in the database like this:

collection.insert_one(createMongoDocument(myDto));
-

You can also insert an arbitrary document using oatpp::Any

collection.insert_one(createMongoDocument(
-  oatpp::Fields<oatpp::Any>({
-
-    {"username", oatpp::String("Mr. Porridge")},
-    {"role", oatpp::String("Admin")},
-    {"jacket-color", oatpp::List<oatpp::String>({"red", "green", "blue"})}
-
-  })
-));
-

# Read Document

Let's say we have the same DTO - User:

  auto result =
-    collection.find_one(createMongoDocument( // <-- Filter
-      oatpp::Fields<oatpp::String>({
-        {"_id", oatpp::String("<id-to-find>")}
-      })
-    ));
-
-  if(result) {
-    auto view = result->view();
-    auto bson = oatpp::String((const char*)view.data(), view.length(), false /* to not copy view data */);
-    auto user = m_objectMapper.readFromString<oatpp::Object<User>>(bson);
-    // TODO - do somthing with user:)
-    // You can then serialize it to JSON using oatpp::parser::json::mapping::ObjectMapper
-  }
-

# Examples

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-postgresql/index.html b/docs/.vuepress/dist/docs/modules/oatpp-postgresql/index.html deleted file mode 100644 index af6315e15..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-postgresql/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - oatpp-postgresql (module) | Oat++ - - - - - - - -

# oatpp-postgresql

Github Repository
Example Project

PostgreSQL adapter for Oat++ ORM..
Note: this alpha version, which means that not all PostgreSQL data-types are supported.

# Build And Install

Note: you need to install the main oatpp module and PostgreSQL dev package first.

  • Clone this repository.
  • In the root of the repository run:
    mkdir build && cd build
    -cmake ..
    -make install
    -

# API

Detailed documentation on Oat++ ORM you can find here.

# Connect to Database

All you need to start using oatpp ORM with PostgreSQL is to create oatpp::postgresql::Executor and provide it to your DbClient.

#include "db/MyClient.hpp"
-#include "oatpp-postgresql/orm.hpp"
-
-class AppComponent {
-public:
-  
-  /**
-   * Create DbClient component.
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<db::MyClient>, myDatabaseClient)([] {
-    /* Create database-specific ConnectionProvider */
-    auto connectionProvider = std::make_shared<oatpp::postgresql::ConnectionProvider>("<connection-string>");    
-  
-    /* Create database-specific ConnectionPool */
-    auto connectionPool = oatpp::postgresql::ConnectionPool::createShared(connectionProvider, 
-                                                                          10 /* max-connections */, 
-                                                                          std::chrono::seconds(5) /* connection TTL */);
-    
-    /* Create database-specific Executor */
-    auto executor = std::make_shared<oatpp::postgresql::Executor>(connectionPool);
-  
-    /* Create MyClient database client */
-    return std::make_shared<MyClient>(executor);
-  }());
-
-};
-
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-sqlite/index.html b/docs/.vuepress/dist/docs/modules/oatpp-sqlite/index.html deleted file mode 100644 index 051397b11..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-sqlite/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - oatpp-sqlite (module) | Oat++ - - - - - - - -

# oatpp-sqlite

Github Repository
Example Project

SQLite adapter for Oat++ ORM.

# Build And Install

Note: you need to install the main oatpp module first.

  • Clone this repository.
  • In the root of the repository run:
    mkdir build && cd build
    -cmake ..
    -make install
    -

This module uses SQLite amalgamation which will be installed as a part of this module.

# API

Detailed documentation on Oat++ ORM you can find here.

# Connect to Database

All you need to start using oatpp ORM with SQLite is to create oatpp::sqlite::Executor and provide it to your DbClient.

#include "db/MyClient.hpp"
-#include "oatpp-sqlite/orm.hpp"
-
-class AppComponent {
-public:
-  
-  /**
-   * Create DbClient component.
-   * SQLite is used as an example here. For other databases declaration is similar.
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<db::MyClient>, myDatabaseClient)([] {
-    /* Create database-specific ConnectionProvider */
-    auto connectionProvider = std::make_shared<oatpp::sqlite::ConnectionProvider>("/path/to/database.sqlite");    
-  
-    /* Create database-specific ConnectionPool */
-    auto connectionPool = oatpp::sqlite::ConnectionPool::createShared(connectionProvider, 
-                                                                      10 /* max-connections */, 
-                                                                      std::chrono::seconds(5) /* connection TTL */);
-    
-    /* Create database-specific Executor */
-    auto executor = std::make_shared<oatpp::sqlite::Executor>(connectionPool);
-  
-    /* Create MyClient database client */
-    return std::make_shared<MyClient>(executor);
-  }());
-
-};
-
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-ssdp/index.html b/docs/.vuepress/dist/docs/modules/oatpp-ssdp/index.html deleted file mode 100644 index 60e334241..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-ssdp/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - oatpp-ssdp (module) | Oat++ - - - - - - - -

# oatpp-ssdp

Github Repository
Example Project

Oat++ extension module to work with SSDP (Simple Service Discovery Protocol) protocol.

# Build And Install

Note: you need to install the main oatpp module first.

  • Clone this repository.
  • In the root of the repository run:
    mkdir build && cd build
    -cmake ..
    -make install
    -

# API

# Declare Necessary Components

In the AppComponent.hpp file:

#include "oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp"
-#include "oatpp-ssdp/SsdpStreamHandler.hpp"
-
-...
-
-/**
- * Create provider of SSDP-UDP packets stream.
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::ssdp::UdpStreamProvider>, ssdpStreamProvider)("ssdp", [] {
-  return oatpp::ssdp::SimpleSsdpUdpStreamProvider::createShared();
-}());
-
-/**
- * We can reuse the HttpRouter for SSDP since SSDP message is complient to HTTP1.1.
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, ssdpRouter)("ssdp", [] {
-  return oatpp::web::server::HttpRouter::createShared();
-}());
-
-/**
- * Create SsdpStreamHandler component which uses Router component to route requests.
- * It looks like a normal ConnectionHandler but is specialized on SsdpStreams and returns something conceptually very different
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::ssdp::SsdpStreamHandler>, ssdpStreamHandler)("ssdp", [] {
-  OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router, "ssdp"); // get Router component
-  return oatpp::ssdp::SsdpStreamHandler::createShared(router);
-}());  
-

# Run SSDP Server

In the App.cpp file:

/* Get stream provider component */
-OATPP_COMPONENT(std::shared_ptr<oatpp::ssdp::UdpStreamProvider>, ssdpStreamProvider, "ssdp");
-
-/* Get stream handler component */
-OATPP_COMPONENT(std::shared_ptr<oatpp::ssdp::SsdpStreamHandler>, ssdpStreamHandler, "ssdp");
-
-/* Create server which takes provided streams and passes them to stream handler */
-oatpp::network::Server server(ssdpStreamProvider, ssdpStreamHandler);
-
-/* Priny info about server port */
-OATPP_LOGD("Server", "Running SSDP on port %s...", ssdpStreamProvider->getProperty("port").getData());
-
-/* Run server */
-server.run();
-

# Handle SSDP Messages

In the Controller.hpp file:

/**
- * Other devices that want to discover you send 'M-SEARCH *' SSDP packages.
- * You have to answer with a corresponding packet on this discovery.
- */
-ENDPOINT("M-SEARCH", "*", star) {
-  auto response = createResponse(Status::CODE_200, "" /* empty body */);
-  // TODO - add correct response headers.
-  return response;
-}
-
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-swagger/index.html b/docs/.vuepress/dist/docs/modules/oatpp-swagger/index.html deleted file mode 100644 index 3c92747eb..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-swagger/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - oatpp-swagger (module) | Oat++ - - - - - - - -

# oatpp-swagger

Github Repository
Example Project

oatpp-swagger - extension of oatpp module.
-It provides Swagger-UI for oatpp applications.
-Supports both "Simple" and "Async" oatpp APIs.

# Brief

  • Use oatpp::swagger::Controller with oatpp::web::server::HttpConnectionHandler

  • Use oatpp::swagger::AsyncController with oatpp::web::server::AsyncHttpConnectionHandler

  • Swagger UI location - http://localhost:<PORT>/swagger/ui

  • OpenApi 3.0.0 specification location - http://localhost:<PORT>/api-docs/oas-3.0.0.json

If you are using oatpp::web::server::api::ApiController most parts of your endpoints are documented automatically like:

  • Endpoint name
  • Parameters
  • Request Body

You may add more information to your endpoint like follows:

ENDPOINT_INFO(createUser) {
-  info->summary = "Create new User";
-  info->addConsumes<Object<UserDto>>("application/json");
-  info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
-}
-ENDPOINT("POST", "demo/api/users", createUser,
-         BODY_DTO(Object<UserDto>, userDto)) {
-  return createDtoResponse(Status::CODE_200, m_database->createUser(userDto));
-}
-

More about endpoint annotation and API documentation read here.

# How to add Swagger UI to your project

  1. Add oatpp::swagger::DocumentInfo and oatpp::swagger::Resources components to your AppComponents:
/**
- *  General API docs info
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::DocumentInfo>, swaggerDocumentInfo)([] {
-
-  oatpp::swagger::DocumentInfo::Builder builder;
-
-  builder
-  .setTitle("User entity service")
-  .setDescription("CRUD API Example project with swagger docs")
-  .setVersion("1.0")
-  .setContactName("Ivan Ovsyanochka")
-  .setContactUrl("https://oatpp.io/")
-
-  .setLicenseName("Apache License, Version 2.0")
-  .setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0")
-
-  .addServer("http://localhost:8000", "server on localhost");
-
-  return builder.build();
-
-}());
-
-
-/**
- *  Swagger-Ui Resources (<oatpp-examples>/lib/oatpp-swagger/res)
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::Resources>, swaggerResources)([] {
-  // Make sure to specify correct full path to oatpp-swagger/res folder !!!
-  return oatpp::swagger::Resources::loadResources("<YOUR-PATH-TO-REPO>/lib/oatpp-swagger/res");
-}());
-
-
  1. Create oatpp::swagger::Controller with list of endpoints you whant to document and add it to router:
auto swaggerController = oatpp::swagger::Controller::createShared(<list-of-endpoints-to-document>);
-swaggerController->addEndpointsToRouter(router);
-

Done!

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-websocket/index.html b/docs/.vuepress/dist/docs/modules/oatpp-websocket/index.html deleted file mode 100644 index f8d6c61a8..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-websocket/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - oatpp-websocket (module) | Oat++ - - - - - - - -

# oatpp-websocket

Github Repository

oatpp-websocket - extension of oatpp module.
-It provides WebSocket server and client functionality.
-Supports both "Simple" and "Async" oatpp APIs.

# API

API Server Client
Simple + +
Async + +
- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp-zlib/index.html b/docs/.vuepress/dist/docs/modules/oatpp-zlib/index.html deleted file mode 100644 index 6d5018ffe..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp-zlib/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - oatpp-zlib (module) | Oat++ - - - - - - - -

# oatpp-zlib

Github Repository

oatpp-zlib - extension of oatpp module.
-It provides functionality for compressing/decompressing content with deflate and gzip.
-Supports both "Simple" and "Async" oatpp APIs.

# How To Build

# Requires

  • ZLib installed.

# Install ZLib

sudo apt-get install zlib1g-dev
-

# Install oatpp-zlib

Clone this repository. In the root of the repository run:

mkdir build && cd build
-cmake ..
-make install
-

# APIs

# Automatically Compress Served Content

Configure server::ConnectionHandler in AppComponent.hpp.

#include "oatpp-zlib/EncoderProvider.hpp"
-
-...
-
-
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-
-  OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-
-  /* Create HttpProcessor::Components */
-  auto components = std::make_shared<oatpp::web::server::HttpProcessor::Components>(router);
-
-  /* Add content encoders */
-  auto encoders = std::make_shared<oatpp::web::protocol::http::encoding::ProviderCollection>();
-
-  encoders->add(std::make_shared<oatpp::zlib::DeflateEncoderProvider>());
-  encoders->add(std::make_shared<oatpp::zlib::GzipEncoderProvider>());
-
-  /* Set content encoders */
-  components->contentEncodingProviders = encoders;
-
-  /* return HttpConnectionHandler */
-  return std::make_shared<oatpp::web::server::HttpConnectionHandler>(components);
-  
-}());
-
-...
-

Now served content will be automatically compressed and streamed to the client if the client sets Accept-Encoding header appropriately.

# Automatically Decompress Uploaded Content

Configure server::ConnectionHandler in AppComponent.hpp.

#include "oatpp-zlib/EncoderProvider.hpp"
-#include "oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp"
-
-...
-
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-
-  OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-
-  /* Create HttpProcessor::Components */
-  auto components = std::make_shared<oatpp::web::server::HttpProcessor::Components>(router);
-
-  /* Add content decoders */
-  auto decoders = std::make_shared<oatpp::web::protocol::http::encoding::ProviderCollection>();
-
-  decoders->add(std::make_shared<oatpp::zlib::DeflateDecoderProvider>());
-  decoders->add(std::make_shared<oatpp::zlib::GzipDecoderProvider>());
-
-  /* Set Body Decoder */
-  components->bodyDecoder = std::make_shared<oatpp::web::protocol::http::incoming::SimpleBodyDecoder>(decoders);
-
-  /* return HttpConnectionHandler */
-  return std::make_shared<oatpp::web::server::HttpConnectionHandler>(components);
-  
-}());
-
-...
-

Now uploaded content will be automatically decompressed if the client sets Content-Encoding header properly.

- - - diff --git a/docs/.vuepress/dist/docs/modules/oatpp/index.html b/docs/.vuepress/dist/docs/modules/oatpp/index.html deleted file mode 100644 index eb00fa8d6..000000000 --- a/docs/.vuepress/dist/docs/modules/oatpp/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - oatpp (module) | Oat++ - - - - - - - -

# Module oatpp

Github Repository

oatpp - Main module. Other modules depend on it.

# Inside

  • Rest framework (ApiController, ApiClient)
  • Simple DI framework
  • Object Mapping framework
  • Simple Test framework (oatpp-test library)
  • Asynchronous Server
  • Multithreaded Server
  • HTTP 1.1

# Examples using standalone oatpp module

- - - diff --git a/docs/.vuepress/dist/docs/monolithization/index.html b/docs/.vuepress/dist/docs/monolithization/index.html deleted file mode 100644 index e8efbc9ef..000000000 --- a/docs/.vuepress/dist/docs/monolithization/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Monolithization | Oat++ - - - - - - - -

# Monolithization

Monolithization is the technique that enables you to scale your microservices better. -You can develop regular microservices in Oat++, and when there is a little to no load in your system, -you can consolidate your services in a single monolith. Also, consolidated services perform better and consume less memory. -Thus you can reduce your infrastructure costs by reducing network overhead and minimizing the number of running instances.

The best way to understand Monolithization and how it works is through example.

# Example

Consider the following system consisting of three trivial microservices:

  • User Service
  • Book Service
  • Facade
Example microservices system

Facade requests user information from User-Service, book information from Book-Service. Then merges the data and returns to the client.

# The Problem

When there is a little load in this system, there is no need to scale its parts. -Thus it would be better to have this system as a monolith in order not to spawn multiple instances or containers. -But you want to keep microservices architecture, in order to be flexible in the future when there is a load.

You could probably deploy all services on a single instance running in separate processes. -But in this case, it's additional dev-ops effort. Plus, you still have the network overhead, as communicating through localhost decreases performance.

# The Concept of Monolithization

The concept is simple. - We are going to put all the services in a single process. -And we are going to make services communicate through the Oat++ virtual connections.

Monolithization concept

The Oat++ virtual connections substitute the network transport layer, so that your application logic can stay isolated. -And they utilize internal buffers so that there is no network overhead as in case of communicating through the localhost.

# Service Interfaces

Consolidated services can keep their network interfaces, to be available for remote services. -And they have to expose the virtual interface to communicate with consolidated services via virtual connections.

Service interfaces

# Build Pipeline

The good thing is that you don't have to change your build pipeline. Each team can develop its microservices independently from others.
-All you need to do is to create a monolithic configuration for each set of microservices you want to consolidate.

Build pipeline

# Scaling

With Monolithization, you can scale gradually. -Step by step, adding new monolithic deployments and decoupling your monolith into smaller pieces so that you can achieve the best configuration for your cloud.

Step 1 Step 2 Step 3
Scaling step 1 Scaling step 2 Scaling step 3

# Performance

Below is the performance comparison of Oat++ microservices(deployed on the same instance) versus same microservices consolidated via Monolithization.

Performance test setup

# Requests Per Second

Requests per second

# Memory Usage (Mb)

Facade User Service Book Service Total
Oat++ (micro-svc) idle 25 3 3 31
Oat++ (micro-svc) load 45 3.2 3.2 49.4
Oat++ (monolith) idle - - - 26.7
Oat++ (monolith) load - - - 37.7

Example Project Repository

- - - diff --git a/docs/.vuepress/dist/docs/oatpp-coroutines/index.html b/docs/.vuepress/dist/docs/oatpp-coroutines/index.html deleted file mode 100644 index 932fda887..000000000 --- a/docs/.vuepress/dist/docs/oatpp-coroutines/index.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - Coroutines | Oat++ - - - - - - - -

# Coroutines in Oat++

Coroutines in Oat++ are not regular coroutines.
-Oat++ implements custom stateless coroutines with scheduling. Scheduling gives additional space for optimization and better CPU utilization.

Coroutines in Oat++ are executed via oatpp::async::Executor. On each iteration, coroutine returns an -oatpp::async::Action which tells executor what to do next. -Based on the Action, the Oat++ async processor reschedules coroutines to the corresponding worker.

# Async Executor

The oatpp::async::Executor allocates three groups of workers with the specified number of threads for each group.

oatpp::async::Executor executor(
-    1 /* data-processing workers */, 
-    1 /* I/O workers */, 
-    1 /* timer workers */
-);
-

All coroutines initially are placed to the "data-processing" worker-group and may be rescheduled to the I/O or Timer workers - depending on the -oatpp::async::Action returned in Coroutine iteration.

TIP

Even though the Oat++ async processor may reschedule coroutine to a different thread - coroutine is guaranteed to be destroyed on the same thread as it was created.

# I/O Worker

For I/O oatpp::async::Executor uses IOEventWorker -with event-based I/O implementations:

  • kqueue based implementation - for Mac/BSD systems.
  • epoll based implementation - for Linux systems.

When coroutine returns Action of type TYPE_IO_WAIT, -it gets rescheduled to I/O worker placing file-descriptor provided in Action to kqueue/epoll.
Thus oatpp-coroutines are not wasting CPU resources spinning and polling long-waiting connections.

# API

In oatpp, Coroutine is the class extended from oatpp::async::Coroutine or from -oatpp::async::CoroutineWithResult.
-Coroutines are processed in the oatpp::async::Executor.

class MyCoroutine : public oatpp::async::Coroutine<MyCoroutine> {
-public:
-
-  /*
-   *  act() - entrypoint of Coroutine
-   *  returns Action - what to do next
-   */
-  Action act() override {
-    OATPP_LOGD("MyCoroutine", "act()");
-    return yieldTo(&MyCoroutine::step2);
-  }
-
-  Action step2() {
-    OATPP_LOGD("MyCoroutine", "step2");
-    return yieldTo(&MyCoroutine::step3);
-  }
-
-  Action step3() {
-    OATPP_LOGD("MyCoroutine", "step3");
-    return finish();
-  }
-
-};
-
-oatpp::async::Executor executor();
-
-executor.execute<MyCoroutine>();
-
-executor.waitTasksFinished();
-executor.stop();
-executor.join();
-

Output:

MyCoroutine:act()
-MyCoroutine:step2
-MyCoroutine:step3
-

# Call Coroutine from Coroutine

class OtherCoroutine : public oatpp::async::Coroutine<OtherCoroutine> {
-public:
-  Action act() override {
-    OATPP_LOGD("OtherCoroutine", "act()");
-    return finish();
-  }
-};
-
-class MyCoroutine : public oatpp::async::Coroutine<MyCoroutine> {
-public:
-
-  Action act() override {
-    OATPP_LOGD("MyCoroutine", "act()");
-    return OtherCoroutine::start().next(finish()); /* Action to do after OtherCoroutine finished */);
-  }
-
-};
-
-oatpp::async::Executor executor();
-
-executor.execute<MyCoroutine>();
-
-executor.waitTasksFinished();
-executor.stop();
-executor.join();
-

Output:

MyCoroutine:act()
-OtherCoroutine:act()
-

# Call Coroutine and return Result

class CoroutineWithResult : public oatpp::async::CoroutineWithResult<CoroutineWithResult, const char* /* result type */> {
-public:
-  Action act() override {
-    OATPP_LOGD("CoroutineWithResult", "act()");
-    return _return("<result>");
-  }
-};
-
-class MyCoroutine : public oatpp::async::Coroutine<MyCoroutine> {
-public:
-
-  Action act() override {
-    OATPP_LOGD("MyCoroutine", "act()");
-    return CoroutineWithResult::startForResult().callbackTo(&MyCoroutine::onResult);
-  }
-
-  Action onResult(const char* result) {
-    OATPP_LOGD("MyCoroutine", "result='%s'", result);
-    return finish();
-  }
-
-};
-
-oatpp::async::Executor executor();
-
-executor.execute<MyCoroutine>();
-
-executor.waitTasksFinished();
-executor.stop();
-executor.join();
-

Output:

MyCoroutine:act()
-CoroutineWithResult:act()
-MyCoroutine:result='<result>'
-

# Counter

class MyCoroutineCounter : public oatpp::async::Coroutine<MyCoroutineCounter> {
-private:
-  const char* m_name;
-  v_int32 m_counter = 0;
-public:
-
-  MyCoroutineCounter(const char* name) : m_name(name) {}
-
-  Action act() override {
-    OATPP_LOGD(m_name, "counter=%d", m_counter);
-    if(m_counter < 10) {
-      m_counter ++;
-      return repeat();
-    }
-    return finish();
-  }
-
-};
-
-oatpp::async::Executor executor();
-
-executor.execute<MyCoroutineCounter>("A");
-executor.execute<MyCoroutineCounter>("B");
-executor.execute<MyCoroutineCounter>("C");
-
-executor.waitTasksFinished();
-executor.stop();
-executor.join();
-

Possible Output:

A:counter=0
-B:counter=0
-C:counter=0
-A:counter=1
-B:counter=1
-C:counter=1
-A:counter=2
-B:counter=2
-C:counter=2
-A:counter=3
-B:counter=3
-C:counter=3
-A:counter=4
-B:counter=4
-C:counter=4
-A:counter=5
-B:counter=5
-C:counter=5
-A:counter=6
-B:counter=6
-C:counter=6
-A:counter=7
-B:counter=7
-C:counter=7
-A:counter=8
-B:counter=8
-C:counter=8
-A:counter=9
-B:counter=9
-C:counter=9
-A:counter=10
-B:counter=10
-C:counter=10
-
- - - diff --git a/docs/.vuepress/dist/docs/simple-vs-async/index.html b/docs/.vuepress/dist/docs/simple-vs-async/index.html deleted file mode 100644 index 57fb43bb6..000000000 --- a/docs/.vuepress/dist/docs/simple-vs-async/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Simple vs Async API | Oat++ - - - - - - - -

# API - Simple vs Async

# Brief

Simple - (multithreading plus blocking-IO approach) smaller latency, simple API, less coding. Disadvantages - comparable smaller limit of max simultaneous connections.
Async - (oatpp-coroutines plus non-blocking-IO approach) High performance, ability to handle tens of thousand simultaneous connections, less resources needed. Disadvantages - comparable higher latency, more complex API, more coding.

# Thread Usage

Simple - (1 thread) / (1 connection) + (1 thread for accepting connections)
Async - (1 thread) / (1 AsyncProcessor) + (1 thread for accepting connections)

# Api Difference

  • Simple

    • ConnectionHandler = HttpConnectionHandler
    • In ApiController - use ENDPOINT
  • Async

    • ConnectionHandler = AsyncHttpConnectionHandler
    • In ApiController - use ENDPOINT_ASYNC

# Simple

# Config

 



























 




#include "oatpp/web/server/HttpConnectionHandler.hpp"
-#include "oatpp/web/server/HttpRouter.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-#include "oatpp/core/macro/component.hpp"
-
-class AppComponent {
-public:
-
-  /**
-   *  Create ConnectionProvider component which listens on the port
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
-    return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-  }());
-
-  /**
-   *  Create Router component
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
-    return oatpp::web::server::HttpRouter::createShared();
-  }());
-
-  /**
-   *  Create ConnectionHandler component which uses Router component to route requests
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-    return oatpp::web::server::HttpConnectionHandler::createShared(router);
-  }());
-
-};
-

# Controller

ENDPOINT("POST", "demo/api/json", postJson,
-         BODY_DTO(Object<MyDto>, dto)) {
-  auto dtoMessage = dto->message;
-  return createResponse(Status::CODE_200, "dtoMessage: " + dtoMessage);
-}
-

# Async

 



























 




#include "oatpp/web/server/AsyncHttpConnectionHandler.hpp"
-#include "oatpp/web/server/HttpRouter.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-#include "oatpp/core/macro/component.hpp"
-
-class AppComponent {
-public:
-
-  /**
-   *  Create ConnectionProvider component which listens on the port
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
-    return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-  }());
-
-  /**
-   *  Create Router component
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
-    return oatpp::web::server::HttpRouter::createShared();
-  }());
-
-  /**
-   *  Create ConnectionHandler component which uses Router component to route requests
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-    return oatpp::web::server::AsyncHttpConnectionHandler::createShared(router);
-  }());
-
-};
-

# Controller

ENDPOINT_ASYNC("POST", "demo/api_async/json", PostJSONAsync) {
-
-  ENDPOINT_ASYNC_INIT(PostJSONAsync)
-
-  Action act() override {
-    return request->readBodyToDtoAsync<oatpp::Object<MyDto>>(controller->getDefaultObjectMapper())
-                   .callbackTo(&PostJSONAsync::onBodyObtained);
-  }
-
-  Action onBodyObtained(const oatpp::Object<MyDto>& dto) {
-    return _return(controller->createResponse(Status::CODE_200, "dtoMessage: " + dto->message));
-  }
-
-};
-
- - - diff --git a/docs/.vuepress/dist/docs/start/high-level-overview/index.html b/docs/.vuepress/dist/docs/start/high-level-overview/index.html deleted file mode 100644 index 1d7731a70..000000000 --- a/docs/.vuepress/dist/docs/start/high-level-overview/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - High Level Overview | Oat++ - - - - - - - -

# High Level Overview

This is the high level overview of Oat++ API.

# API Controller - Request Mapping

For more info see Api Controller

# Declare Endpoint

ENDPOINT("PUT", "/users/{userId}", putUser,
-         PATH(Int64, userId),
-         BODY_DTO(Object<UserDto>, userDto)) 
-{
-  userDto->id = userId;
-  return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto));
-}
-

# Add CORS for Endpoint

For more info see Api Controller / CORS

ADD_CORS(putUser)
-ENDPOINT("PUT", "/users/{userId}", putUser,
-         PATH(Int64, userId),
-         BODY_DTO(Object<UserDto>, userDto)) 
-{
-  userDto->id = userId;
-  return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto));
-}
-

# Endpoint with Authorization

For more info see Api Controller / Authorization

using namespace oatpp::web::server::handler;
-  
-ENDPOINT("PUT", "/users/{userId}", putUser,
-         AUTHORIZATION(std::shared_ptr<DefaultBasicAuthorizationObject>, authObject),
-         PATH(Int64, userId),
-         BODY_DTO(Object<UserDto>, userDto)) 
-{
-  OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized");
-  userDto->id = userId;
-  return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto));
-}
-

# API Client - Retrofit / Feign Like Client

For more info see Api Client

# Declare Client

class UserService : public oatpp::web::client::ApiClient {
-public:
-
-  API_CLIENT_INIT(UserService)
-
-  API_CALL("GET", "/users", getUsers)
-  API_CALL("GET", "/users/{userId}", getUserById, PATH(Int64, userId))
-
-};
-

# Using API Client

auto response = userService->getUserById(id);
-auto user = response->readBodyToDto<oatpp::Object<UserDto>>(objectMapper);
-

# Object Mapping

For more info see Data Transfer Object (DTO).

# Declare DTO

class UserDto : public oatpp::Object {
-
-  DTO_INIT(UserDto, Object)
-
-  DTO_FIELD(Int64, id);
-  DTO_FIELD(String, name);
-
-};
-

# Serialize DTO Using ObjectMapper

using namespace oatpp::parser::json::mapping;
-
-/* Create JSON object mapper */
-ObjectMapper objectMapper;
-
-auto user = UserDto::createShared();
-user->id = 1;
-user->name = "Ivan";
-
-/* Serialize DTO to JSON */
-auto json = objectMapper.writeToString(user);
-

Output:

{
-  "id": 1,
-  "name": "Ivan"
-}
-

# Swagger-UI Annotations

For more info see Endpoint Annotation And API Documentation

# Additional Endpoint Info

ENDPOINT_INFO(putUser) {
-  // general
-  info->summary = "Update User by userId";
-  info->addConsumes<Object<UserDto>>("application/json");
-  info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
-  info->addResponse<String>(Status::CODE_404, "text/plain");
-  // params specific
-  info->pathParams["userId"].description = "User Identifier";
-}
-ENDPOINT("PUT", "/users/{userId}", putUser,
-         PATH(Int64, userId),
-         BODY_DTO(Object<UserDto>, userDto)) 
-{
-  userDto->id = userId;
-  return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto));
-}
-

# ORM Framework

For more info see Oat++ ORM Framework

# Declare DbClient

class MyClient : public oatpp::orm::DbClient {
-public:
-
-  MyClient(const std::shared_ptr<oatpp::orm::Executor>& executor)
-    : oatpp::orm::DbClient(executor)
-  {}
-
-  QUERY(createUser,
-        "INSERT INTO users (username, email, role) VALUES (:username, :email, :role);",
-        PARAM(oatpp::String, username), 
-        PARAM(oatpp::String, email), 
-        PARAM(oatpp::Enum<UserRoles>::AsString, role)) 
-
-  QUERY(getUserByName, 
-        "SELECT * FROM users WHERE username=:username;", 
-        PARAM(oatpp::String, username)) 
-        
-};
-

# DbClient Usage Example

...
-
-/* Create MyClient database client */
-MyClient client(executor);
-
-/* Create new user in the database */
-client.createUser("admin", "admin@domain.com", UserRoles::ADMIN);
-
-/* Find user by username in the database */
-auto result = client.getUserByUsername("admin");
-
-/* Retrieve query result as a vector of UserDto objects */
-/* Of cause, UserDto had to be previously defined */
-auto dataset = result->fetch<oatpp::Vector<oatpp::Object<UserDto>>>();
-
-/* And we can easily serialize result as a json string using json object mapper */
-auto json = jsonObjectMapper.writeToString(dataset);
-
-/* Print the resultant json */
-std::cout << json->c_str() << std::endl;
-

Output:

[
-  {
-    "name": "admin",
-    "email": "admin@domain.com",
-    "role": "ROLE_ADMIN"
-  }
-]
-

# Modules And Build Status

To get an overview of oatpp modules, their hierarchy, and build status - see build status.

- - - diff --git a/docs/.vuepress/dist/docs/start/index.html b/docs/.vuepress/dist/docs/start/index.html deleted file mode 100644 index 6d4d6fdbe..000000000 --- a/docs/.vuepress/dist/docs/start/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Getting started | Oat++ - - - - - - - -

# Getting Started

Welcome to 🌱Oat++

  1. Install oatpp:

  2. Take a look at:

  3. Check out examples and starter-projects:

  4. 👉Join dev community and don't hesitate to ask questions - Chat On Gitter👈✌️

# Examples

# REST-API

  • REST Service - A complete example of a "CRUD" service (UserService) built with Oat++. REST + Swagger-UI + SQLite.
  • REST Client - Example project of how-to use Retrofit-like client wrapper (ApiClient) and how it works.

# WebSocket

  • Can Chat - Feature-complete rooms-based chat for tens of thousands users. Client plus Server.
  • WebSocket - Collection of oatpp WebSocket examples.
  • YUV Websocket Stream - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets.

# Databases

  • SQLite - A complete example of a "CRUD" service. REST + Swagger-UI + SQLite.
  • PostgreSQL - Example of a production-grade entity service storing information in PostgreSQL. With Swagger-UI and configuration profiles.
  • MongoDB - Example project how to work with MongoDB using oatpp-mongo mondule. Project is a web-service with basic CRUD and Swagger-UI.

# IoT

  • Example-IoT-Hue - Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo.

# Streaming

  • HTTP Live Streaming Server - Example project on how to build an HLS-streaming server using Oat++ asynchronous API.
  • YUV Websocket Stream - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets.

# TLS

# Microservices

# Asynchronous API

  • Async Service - Example project on how to use asynchronous API to handle a large number of simultaneous connections.
- - - diff --git a/docs/.vuepress/dist/docs/start/module/index.html b/docs/.vuepress/dist/docs/start/module/index.html deleted file mode 100644 index a9961fca6..000000000 --- a/docs/.vuepress/dist/docs/start/module/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Module starter project | Oat++ - - - - - - - - - - - diff --git a/docs/.vuepress/dist/docs/start/project-async-api/index.html b/docs/.vuepress/dist/docs/start/project-async-api/index.html deleted file mode 100644 index 17a51b319..000000000 --- a/docs/.vuepress/dist/docs/start/project-async-api/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Async Starter Project | Oat++ - - - - - - - -

# Starter Project - Async API

Github Repository

Starter project for Oat++ (AKA oatpp) application. Based on oatpp Async API.

TIP

Async API suits best for services dedicated to a single type of tasks that run at high concurrency levels.
-Example:

  • Simultanious download of multiple files.
  • Streaming to large number of clients (1K or more).
  • Chats.

For all other purposes use simple API.

# Before you start

Read:

# Overview

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing UserController where all endpoints are declared
-|    |- dto/                             // DTOs are declared here
-|    |- AppComponent.hpp                 // Service config
-|    |- App.cpp                          // main() is here
-|    
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Build and Run

# Using CMake

Requires

  • oatpp module installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./my-project-exe                  # - run application.
-
-

# In Docker

$ docker build -t oatpp-starter-async .
-$ docker run -p 8000:8000 -t oatpp-starter-async
-
- - - diff --git a/docs/.vuepress/dist/docs/start/project/index.html b/docs/.vuepress/dist/docs/start/project/index.html deleted file mode 100644 index 728547d78..000000000 --- a/docs/.vuepress/dist/docs/start/project/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Starter Project | Oat++ - - - - - - - -

# Starter Project

Github Repository

Starter project for Oat++ (AKA oatpp) application. Based on oatpp Multithreaded (Simple) API.

# Overview

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing MyController where all endpoints are declared
-|    |- dto/                             // DTOs are declared here
-|    |- AppComponent.hpp                 // Service config
-|    |- App.cpp                          // main() is here
-|
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.  
-

# Build and Run

# Using CMake

Requires

  • oatpp module installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./my-project-exe  # - run application.
-
-

# In Docker

$ docker build -t oatpp-starter .
-$ docker run -p 8000:8000 -t oatpp-starter
-
- - - diff --git a/docs/.vuepress/dist/docs/start/step-by-step/index.html b/docs/.vuepress/dist/docs/start/step-by-step/index.html deleted file mode 100644 index 798869a67..000000000 --- a/docs/.vuepress/dist/docs/start/step-by-step/index.html +++ /dev/null @@ -1,734 +0,0 @@ - - - - - - Step by step | Oat++ - - - - - - - -

# Step By Step Guide

This step-by-step guide will help you start developing using oatpp framework. -After finishing it, you’ll have a well-structured and extendable web-service with basic endpoints.

# Simplest Project

# API - Low Level Components Overview

To get basic components overview let's take a look at the simplest oatpp server application first.

#include "oatpp/web/server/HttpConnectionHandler.hpp"
-
-#include "oatpp/network/Server.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-
-void run() {
-
-  /* Create Router for HTTP requests routing */
-  auto router = oatpp::web::server::HttpRouter::createShared();
-
-  /* Create HTTP connection handler with router */
-  auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
-
-  /* Create TCP connection provider */
-  auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-
-  /* Create server which takes provided TCP connections and passes them to HTTP connection handler */
-  oatpp::network::Server server(connectionProvider, connectionHandler);
-
-  /* Print info about server port */
-  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
-
-  /* Run server */
-  server.run();
-}
-
-int main() {
-
-  /* Init oatpp Environment */
-  oatpp::base::Environment::init();
-
-  /* Run App */
-  run();
-
-  /* Destroy oatpp Environment */
-  oatpp::base::Environment::destroy();
-
-  return 0;
-
-}
-
-

Classes used:

  • HttpRouter - -Router of HTTP requests. It maps URLs to endpoint handlers. -Our app has no endpoints declared so far hence the server will always return 404 not found.
  • HttpConnectionHandler - This is a simple HTTP connection handler. -It handles incoming connections in a multi threaded manner, creating one thread per each connection.
  • ConnectionProvider - Provider of TCP connections. -It binds to a specified port.
  • Server - Server runs a loop which takes connections from ConnectionProvider -and passes them to ConnectionHandler.

# Add Request Handler

Application above does nothing but respond 404 to all client requests.
-To add a custom response we have to add HttpRequestHandler and route -requests to it via Router:






 
 
 
 
 
 
 
 
 
 
 
 
 
 






 
 

































#include "oatpp/web/server/HttpConnectionHandler.hpp"
-
-#include "oatpp/network/Server.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-
-/** 
- * Custom Request Handler
- */
-class Handler : public oatpp::web::server::HttpRequestHandler {
-public:
-
-  /**
-   * Handle incoming request and return outgoing response.
-   */
-  std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
-    return ResponseFactory::createResponse(Status::CODE_200, "Hello World!");
-  }
-
-};
-
-void run() {
-
-  /* Create Router for HTTP requests routing */
-  auto router = oatpp::web::server::HttpRouter::createShared();
-  
-  /* Route GET - "/hello" requests to Handler */
-  router->route("GET", "/hello", std::make_shared<Handler>());
-
-  /* Create HTTP connection handler with router */
-  auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
-
-  /* Create TCP connection provider */
-  auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-
-  /* Create server which takes provided TCP connections and passes them to HTTP connection handler */
-  oatpp::network::Server server(connectionProvider, connectionHandler);
-
-  /* Priny info about server port */
-  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
-
-  /* Run server */
-  server.run();
-}
-
-int main() {
-
-  /* Init oatpp Environment */
-  oatpp::base::Environment::init();
-
-  /* Run App */
-  run();
-
-  /* Destroy oatpp Environment */
-  oatpp::base::Environment::destroy();
-
-  return 0;
-
-}
-
-

Now if we go to http:/localhost:8000/hello in browser - we get Hello World! message.

$ curl http://localhost:8000/hello
-Hello World!
-

# Respond With JSON Object

In order to Serialize/Deserialize objects oatpp uses special Data-Transfer-Objects (DTO) and -ObjectMappers.

The format in which DTO is serialized is defined by Object Mapper.
-In this particular example we are using JSON ObjectMapper. So our message -will be serialized to JSON.

 






 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 






 


 
 
 
 
 
 
 





 
 
 
 







 





 
































#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-
-#include "oatpp/web/server/HttpConnectionHandler.hpp"
-
-#include "oatpp/network/Server.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-
-#include "oatpp/core/macro/codegen.hpp"
-
-/* Begin DTO code-generation */
-#include OATPP_CODEGEN_BEGIN(DTO)
-
-/**
- * Message Data-Transfer-Object
- */
-class MessageDto : public oatpp::DTO {
-
-  DTO_INIT(MessageDto, DTO /* Extends */)
-
-  DTO_FIELD(Int32, statusCode);   // Status code field
-  DTO_FIELD(String, message);     // Message field
-
-};
-
-/* End DTO code-generation */
-#include OATPP_CODEGEN_END(DTO)
-
-/**
- * Custom Request Handler
- */
-class Handler : public oatpp::web::server::HttpRequestHandler {
-private:
-  std::shared_ptr<oatpp::data::mapping::ObjectMapper> m_objectMapper;
-public:
-
-  /**
-   * Constructor with object mapper.
-   * @param objectMapper - object mapper used to serialize objects.
-   */
-  Handler(const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& objectMapper)
-    : m_objectMapper(objectMapper)
-  {}
-
-  /**
-   * Handle incoming request and return outgoing response.
-   */
-  std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
-    auto message = MessageDto::createShared();
-    message->statusCode = 1024;
-    message->message = "Hello DTO!";
-    return ResponseFactory::createResponse(Status::CODE_200, message, m_objectMapper);
-  }
-
-};
-
-void run() {
-
-  /* Create json object mapper */
-  auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
-
-  /* Create Router for HTTP requests routing */
-  auto router = oatpp::web::server::HttpRouter::createShared();
-
-  /* Route GET - "/hello" requests to Handler */
-  router->route("GET", "/hello", std::make_shared<Handler>(objectMapper /* json object mapper */ ));
-
-  /* Create HTTP connection handler with router */
-  auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
-
-  /* Create TCP connection provider */
-  auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-
-  /* Create server which takes provided TCP connections and passes them to HTTP connection handler */
-  oatpp::network::Server server(connectionProvider, connectionHandler);
-
-  /* Priny info about server port */
-  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
-
-  /* Run server */
-  server.run();
-}
-
-int main() {
-
-  /* Init oatpp Environment */
-  oatpp::base::Environment::init();
-
-  /* Run App */
-  run();
-
-  /* Destroy oatpp Environment */
-  oatpp::base::Environment::destroy();
-
-  return 0;
-
-}
-

Now if we go to http:/localhost:8000/hello in browser - we get the JSON response.

$ curl http://localhost:8000/hello
-{"statusCode": 1024, "message": "Hello DTO!"}
-

# Well Structured Project

While creating request handler for each custom endpoint (as described above in simplest example) may be suitable for small projects, -it is recommended to follow oatpp-project-structure in order to have easily configurable and extandable code.

# Project Layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- dto/                             // Folder containing DTOs definitions
-|    |    |
-|    |    |- DTOs.hpp                    // DTOs are declared here
-|    |     
-|    |- controller/                      // Folder containing API Controllers where all endpoints are declared
-|    |    |
-|    |    |- MyController.hpp            // Sample - MyController is declared here
-|    |     
-|    |- AppComponent.hpp                 // Application Components configuration 
-|    |- App.cpp                          // main() is here
-|
-|- test/                                 // test folder
-     |
-     |- app/
-     |    |
-     |    |- MyApiTestClient.hpp         // Api client for test API calls is declared here
-     |    |- TestComponent.hpp           // Test application components configuration
-     |                                   
-     |- MyControllerTest.cpp             // MyController test logic is here
-     |- MyControllerTest.hpp             // MyController test header
-     |- Tests.cpp                        // tests main() is here
-

# Application Components Configuration

Use oatpp provided dependency injection in order to configure your application.

Create environment component via OATPP_CREATE_COMPONENT -and inject it where needed using OATPP_COMPONENT.

# Modify Simple Example to use Dependency Injection

Create file AppComponent.hpp in you projects src folder and move there initialization of all application components.

AppComponent.hpp:

#ifndef AppComponent_hpp
-#define AppComponent_hpp
-
-#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-
-#include "oatpp/web/server/HttpConnectionHandler.hpp"
-#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
-
-#include "oatpp/core/macro/component.hpp"
-
-/**
- *  Class which creates and holds Application components and registers components in oatpp::base::Environment
- *  Order of components initialization is from top to bottom
- */
-class AppComponent {
-public:
-
-  /**
-   *  Create ConnectionProvider component which listens on the port
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
-    return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
-  }());
-
-  /**
-   *  Create Router component
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
-    return oatpp::web::server::HttpRouter::createShared();
-  }());
-
-  /**
-   *  Create ConnectionHandler component which uses Router component to route requests
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-    return oatpp::web::server::HttpConnectionHandler::createShared(router);
-  }());
-
-  /**
-   *  Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
-    return oatpp::parser::json::mapping::ObjectMapper::createShared();
-  }());
-
-};
-
-#endif /* AppComponent_hpp */
-

Now all major components are initialized in one place which makes it easy to configure application by substituting components.

App.cpp (main) can be rewritten as follows:































 

















 






































#include "AppComponent.hpp"
-
-#include "oatpp/network/Server.hpp"
-
-#include "oatpp/core/macro/codegen.hpp"
-
-/* Begin DTO code-generation */
-#include OATPP_CODEGEN_BEGIN(DTO)
-
-/**
- * Message Data-Transfer-Object
- */
-class MessageDto : public oatpp::DTO {
-
-  DTO_INIT(MessageDto, DTO /* Extends */)
-
-  DTO_FIELD(Int32, statusCode);   // Status code field
-  DTO_FIELD(String, message);     // Message field
-
-};
-
-/* End DTO code-generation */
-#include OATPP_CODEGEN_END(DTO)
-
-/**
- * Custom Request Handler
- */
-class Handler : public oatpp::web::server::HttpRequestHandler {
-private:
-  /* Inject object mapper component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, m_objectMapper);
-public:
-
-  /**
-   * Handle incoming request and return outgoing response.
-   */
-  std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
-    auto message = MessageDto::createShared();
-    message->statusCode = 1024;
-    message->message = "Hello DTO!";
-    return ResponseFactory::createResponse(Status::CODE_200, message, m_objectMapper);
-  }
-
-};
-
-void run() {
-
-  /* Register Components in scope of run() method */
-  AppComponent components;
-
-  /* Get router component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
-
-  /* Route GET - "/hello" requests to Handler */
-  router->route("GET", "/hello", std::make_shared<Handler>());
-
-  /* Get connection handler component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, connectionHandler);
-
-  /* Get connection provider component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
-
-  /* Create server which takes provided TCP connections and passes them to HTTP connection handler */
-  oatpp::network::Server server(connectionProvider, connectionHandler);
-
-  /* Priny info about server port */
-  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
-
-  /* Run server */
-  server.run();
-}
-
-int main() {
-
-  /* Init oatpp Environment */
-  oatpp::base::Environment::init();
-
-  /* Run App */
-  run();
-
-  /* Destroy oatpp Environment */
-  oatpp::base::Environment::destroy();
-
-  return 0;
-
-}
-

# Move DTO definitions to a separate file

In folder src/dto/ create file DTOs.hpp.
-Move MessageDto definition to DTOs.hpp:

#ifndef DTOs_hpp
-#define DTOs_hpp
-
-#include "oatpp/core/data/mapping/type/Object.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-/* Begin DTO code-generation */
-#include OATPP_CODEGEN_BEGIN(DTO)
-
-/**
- * Message Data-Transfer-Object
- */
-class MessageDto : public oatpp::DTO {
-
-  DTO_INIT(MessageDto, DTO /* Extends */)
-
-  DTO_FIELD(Int32, statusCode);   // Status code field
-  DTO_FIELD(String, message);     // Message field
-
-};
-
-/* TODO - Add more DTOs here */
-
-/* End DTO code-generation */
-#include OATPP_CODEGEN_END(DTO)
-
-#endif /* DTOs_hpp */
-

# Use API Controller

Instead of using bare HttpRequestHandler creating new Request Handler for every new endpoint, it is recommened to -use Api Controller.

API Controller makes process of adding new endpoints much easier by generating boilerplate code for you. It also helps -to organize your endpoints grouping them in different API Controllers.

# Create Api Controller

In folder src/controller/ create file MyController.hpp.
-Add the following code to MyController.hpp:

#ifndef MyController_hpp
-#define MyController_hpp
-
-#include "dto/DTOs.hpp"
-
-#include "oatpp/web/server/api/ApiController.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-#include "oatpp/core/macro/component.hpp"
-
-#include OATPP_CODEGEN_BEGIN(ApiController) ///< Begin Codegen
-
-/**
- * Sample Api Controller.
- */
-class MyController : public oatpp::web::server::api::ApiController {
-public:
-  /**
-   * Constructor with object mapper.
-   * @param objectMapper - default object mapper used to serialize/deserialize DTOs.
-   */
-  MyController(OATPP_COMPONENT(std::shared_ptr<ObjectMapper>, objectMapper))
-    : oatpp::web::server::api::ApiController(objectMapper)
-  {}
-public:
-  
-  ENDPOINT("GET", "/hello", root) {
-    auto dto = MessageDto::createShared();
-    dto->statusCode = 200;
-    dto->message = "Hello World!";
-    return createDtoResponse(Status::CODE_200, dto);
-  }
-  
-  // TODO Insert Your endpoints here !!!
-  
-};
-
-#include OATPP_CODEGEN_END(ApiController) ///< End Codegen
-
-#endif /* MyController_hpp */
-

# Add Controller Endpoints to Router

In order to serve endpoints declared in Api Controller we have to add those endpoints to the Router.
-And the final look of the App.cpp is as follows:















 
 
































#include "controller/MyController.hpp"
-#include "AppComponent.hpp"
-
-#include "oatpp/network/Server.hpp"
-
-void run() {
-
-  /* Register Components in scope of run() method */
-  AppComponent components;
-
-  /* Get router component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
-
-  /* Create MyController and add all of its endpoints to router */
-  auto myController = std::make_shared<MyController>();
-  myController->addEndpointsToRouter(router);
-
-  /* Get connection handler component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, connectionHandler);
-
-  /* Get connection provider component */
-  OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
-
-  /* Create server which takes provided TCP connections and passes them to HTTP connection handler */
-  oatpp::network::Server server(connectionProvider, connectionHandler);
-
-  /* Priny info about server port */
-  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
-
-  /* Run server */
-  server.run();
-  
-}
-
-int main(int argc, const char * argv[]) {
-
-  /* Init oatpp Environment */
-  oatpp::base::Environment::init();
-
-  /* Run App */
-  run();
-
-  /* Destroy oatpp Environment */
-  oatpp::base::Environment::destroy();
-
-  return 0;
-}
-

# Testing Oat++ Application

Testing of a oatpp application generally means the following:

  • Create application test configuration in order to run application in test-mode.
  • Define ApiClient for Application's API.
  • Create test which runs application using test-configuration and makes API calls via test Api Client.

# Application Test Components Configuration

In folder test/app/ create file TestComponent.hpp (similar to AppComponent):
























 







 







 





























#ifndef TestComponent_htpp
-#define TestComponent_htpp
-
-#include "oatpp/web/server/HttpConnectionHandler.hpp"
-
-#include "oatpp/network/virtual_/client/ConnectionProvider.hpp"
-#include "oatpp/network/virtual_/server/ConnectionProvider.hpp"
-#include "oatpp/network/virtual_/Interface.hpp"
-
-#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
-
-#include "oatpp/core/macro/component.hpp"
-
-/**
- * Test Components config
- */
-class TestComponent {
-public:
-
-  /**
-   * Create oatpp virtual network interface for test networking
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::virtual_::Interface>, virtualInterface)([] {
-    return oatpp::network::virtual_::Interface::createShared("virtualhost");
-  }());
-
-  /**
-   * Create server ConnectionProvider of oatpp virtual connections for test
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::network::virtual_::Interface>, interface);
-    return oatpp::network::virtual_::server::ConnectionProvider::createShared(interface);
-  }());
-
-  /**
-   * Create client ConnectionProvider of oatpp virtual connections for test
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ClientConnectionProvider>, clientConnectionProvider)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::network::virtual_::Interface>, interface);
-    return oatpp::network::virtual_::client::ConnectionProvider::createShared(interface);
-  }());
-
-  /**
-   *  Create Router component
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
-    return oatpp::web::server::HttpRouter::createShared();
-  }());
-
-  /**
-   *  Create ConnectionHandler component which uses Router component to route requests
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
-    OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
-    return oatpp::web::server::HttpConnectionHandler::createShared(router);
-  }());
-
-  /**
-   *  Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API
-   */
-  OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
-    return oatpp::parser::json::mapping::ObjectMapper::createShared();
-  }());
-
-};
-
-
-#endif // TestComponent_htpp
-

Notice usage of:

oatpp virtual network stack enables you to run application tests down to low (protocol) level without occupying the "real" -port of the host.

# API Test Client

Create test ApiClient in order to test application API.
-In folder test/app/ create file MyApiTestClient.hpp with api calls corresponding to application APIs:


















 











#ifndef MyApiTestClient_hpp
-#define MyApiTestClient_hpp
-
-#include "oatpp/web/client/ApiClient.hpp"
-#include "oatpp/core/macro/codegen.hpp"
-
-/* Begin Api Client code generation */
-#include OATPP_CODEGEN_BEGIN(ApiClient)
-
-/**
- * Test API client.
- * Use this client to call application APIs.
- */
-class MyApiTestClient : public oatpp::web::client::ApiClient {
-
-  API_CLIENT_INIT(MyApiTestClient)
-
-  API_CALL("GET", "/hello", getHello)
-
-  // TODO - add more client API calls here
-
-};
-
-/* End Api Client code generation */
-#include OATPP_CODEGEN_END(ApiClient)
-
-#endif // MyApiTestClient_hpp
-
-

# Create Test

In folder test/ create file MyControllerTest.hpp:

#ifndef MyControllerTest_hpp
-#define MyControllerTest_hpp
-
-#include "oatpp-test/UnitTest.hpp"
-
-class MyControllerTest : public oatpp::test::UnitTest {
-public:
-
-  MyControllerTest() : UnitTest("TEST[MyControllerTest]" /* Test TAG for logs */){}
-  void onRun() override;
-
-};
-
-#endif // MyControllerTest_hpp
-

In folder test/ create file MyControllerTest.cpp:















 





 


















 



















#include "MyControllerTest.hpp"
-
-#include "controller/MyController.hpp"
-
-#include "app/MyApiTestClient.hpp"
-#include "app/TestComponent.hpp"
-
-#include "oatpp/web/client/HttpRequestExecutor.hpp"
-
-#include "oatpp-test/web/ClientServerTestRunner.hpp"
-
-void MyControllerTest::onRun() {
-
-  /* Register test components */
-  TestComponent component;
-
-  /* Create client-server test runner */
-  oatpp::test::web::ClientServerTestRunner runner;
-
-  /* Add MyController endpoints to the router of the test server */
-  runner.addController(std::make_shared<MyController>());
-
-  /* Run test */
-  runner.run([this, &runner] {
-
-    /* Get client connection provider for Api Client */
-    OATPP_COMPONENT(std::shared_ptr<oatpp::network::ClientConnectionProvider>, clientConnectionProvider);
-
-    /* Get object mapper component */
-    OATPP_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, objectMapper);
-
-    /* Create http request executor for Api Client */
-    auto requestExecutor = oatpp::web::client::HttpRequestExecutor::createShared(clientConnectionProvider);
-
-    /* Create Test API client */
-    auto client = MyApiTestClient::createShared(requestExecutor, objectMapper);
-
-    /* Call server API */
-    /* Call hello endpoint of MyController */
-    auto response = client->getHello();
-
-    /* Assert that server responds with 200 */
-    OATPP_ASSERT(response->getStatusCode() == 200);
-
-    /* Read response body as MessageDto */
-    auto message = response->readBodyToDto<oatpp::Object<MessageDto>>(objectMapper);
-
-    /* Assert that received message is as expected */
-    OATPP_ASSERT(message);
-    OATPP_ASSERT(message->statusCode->getValue() == 200);
-    OATPP_ASSERT(message->message == "Hello World!");
-
-  }, std::chrono::minutes(10) /* test timeout */);
-
-  /* wait all server threads finished */
-  std::this_thread::sleep_for(std::chrono::seconds(1));
-
-}
-

The test above tests that on API call GET /hello server responds with expected message.
-It uses ClientServerTestRunner to run test server.

# Run Tests

In folder test/ create file Tests.cpp:

#include "MyControllerTest.hpp"
-
-#include <iostream>
-
-void runTests() {
-
-  OATPP_RUN_TEST(MyControllerTest);
-  
-  // TODO - Add more tests here:
-  // OATPP_RUN_TEST(MyAnotherTest);
-  
-}
-
-int main() {
-
-  oatpp::base::Environment::init();
-
-  runTests();
-
-  /* Print how much objects were created during app running, and what have left-probably leaked */
-  /* Disable object counting for release builds using '-D OATPP_DISABLE_ENV_OBJECT_COUNTERS' flag for better performance */
-  std::cout << "\nEnvironment:\n";
-  std::cout << "objectsCount = " << oatpp::base::Environment::getObjectsCount() << "\n";
-  std::cout << "objectsCreated = " << oatpp::base::Environment::getObjectsCreated() << "\n\n";
-
-  OATPP_ASSERT(oatpp::base::Environment::getObjectsCount() == 0);
-
-  oatpp::base::Environment::destroy();
-
-  return 0;
-}
-

At the end of each test (and at the end of all tests) oatpp Environment is checked for leaking objects.
-Test will fail if objects leaks found (Counts only objects extending Countable).

WARNING

Tests binary should NOT link oatpp built with -DOATPP_DISABLE_ENV_OBJECT_COUNTERS flag.

# Complete Project Code

Github Repository

- - - diff --git a/docs/.vuepress/dist/examples/api-client/index.html b/docs/.vuepress/dist/examples/api-client/index.html deleted file mode 100644 index d2f49eea5..000000000 --- a/docs/.vuepress/dist/examples/api-client/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Example ApiClient | Oat++ - - - - - - - -

# ApiClient Example

Github Repository

Example project how-to use oatpp ApiClient and how it works

# About ApiClient

Oatpp ApiClient is a mechanism which enables you to generate Web Api Clients in declarative manner. -Under the hood it uses provided RequestExecutor to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes. -Roughly you may treat oatpp ApiClient as Java Retrofit for C++.

In this example you can configure to use such RequestExecutors:

# Example overview

In this example you will find:

  • ApiClient built for http://httpbin.org/ web service.
  • Simple (Synchronous) API calls example.
  • Async API calls example processed with oatpp::async::Executor. See Oatpp Coroutines.

# Project layout

|- CMakeLists.txt                          // projects CMakeLists.txt
-|- src/
-|   |- DemoApiClient.hpp                   // ApiClient built for http://httpbin.org/ web service
-|   |- DemoApiModels.hpp                   // DTOs objects for DemoApiClient
-|   |- SimpleExample.hpp                   // Simple (Synchronous) API calls example
-|   |- AsyncExample.hpp                    // Async API calls example
-|   |- App.cpp                             // main is here
-|   
-|- test/                                   // test folder
-|- utility/install-oatpp-modules.sh        // utility script to install required oatpp-modules.
-

# Build and Run

# Using CMake

Requires

  • Curl installed. You may refer to this sh script - how to install curl - -install-curl.sh.
    -Or try something like $ apk add curl-dev

  • oatpp and oatpp-curl modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.

$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-api-client-exe      # - run application.
-

# In Docker

$ docker build -t example-api-client .
-$ docker run -t example-api-client
-

# ApiClient declaration overview

Use API_CALL for simple (synchronous) calls.
-Use API_CALL_ASYNC for non-blocking Async calls.

class DemoApiClient : public oatpp::web::client::ApiClient {
-#include OATPP_CODEGEN_BEGIN(ApiClient)
-  
-  API_CLIENT_INIT(DemoApiClient)
-  
-  ...
-  
-  API_CALL("GET", "get", doGet)
-  API_CALL("POST", "post", doPost, BODY_STRING(String, body))
-  
-  ...
-  
-  API_CALL_ASYNC("GET", "get", doGetAsync)
-  API_CALL_ASYNC("POST", "post", doPostAsync, BODY_STRING(String, body))
-
-  ...
-  
-#include OATPP_CODEGEN_END(ApiClient)
-};
-

# Example calls overview

# SimpleExample.hpp

{
-  auto data = client->doGet()->readBodyToString();
-  OATPP_LOGD(TAG, "[doGet] data='%s'", data->c_str());
-}
-
-{
-  auto data = client->doPost("Some data passed to POST")->readBodyToString();
-  OATPP_LOGD(TAG, "[doPost] data='%s'", data->c_str());
-}
-

# AsyncExample.hpp

class SendCoroutine : public oatpp::async::Coroutine<SendCoroutine> {
-private:
-  std::shared_ptr<DemoApiClient> m_client;
-public:
-
-  SendCoroutine(const std::shared_ptr<DemoApiClient> client) : m_client(client) {}
-
-  Action act() override {
-    return m_client->doPostAsync("<POST-DATA-HERE>").callbackTo(&SendDtoCoroutine::onResponse);
-  }
-
-  Action onResponse(const std::shared_ptr<Response>& response) {
-    return response->readBodyToStringAsync().callbackTo(&SendDtoCoroutine::onBody);
-  }
-
-  Action onBody(const oatpp::String& body) {
-    OATPP_LOGD(TAG, "[SendCoroutine. doPostAsync] data='%s'", body->c_str());
-    return finish();
-  }
-
-};
-

# Request executor configuration

In App.cpp method run. -Try to substitute different RequestExecutors by switching from Curl to oatpp built-in request executor.


-void run(){
-  
-  /* Create ObjectMapper for serialization of DTOs  */
-  auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
-  
-  /* Create RequestExecutor which will execute ApiClient's requests */
-  //auto requestExecutor = createOatppExecutor();  // <-- Uncomment this
-  auto requestExecutor = createCurlExecutor();     // <-- Comment this
-  
-  /* DemoApiClient uses DemoRequestExecutor and json::mapping::ObjectMapper */
-  /* ObjectMapper passed here is used for serialization of outgoing DTOs */
-  auto client = DemoApiClient::createShared(requestExecutor, objectMapper);
-  
-  SimpleExample::runExample(client);
-  AsyncExample::runExample(client);
-  
-}
-
-
- - - diff --git a/docs/.vuepress/dist/examples/async-api/index.html b/docs/.vuepress/dist/examples/async-api/index.html deleted file mode 100644 index 21ee9da10..000000000 --- a/docs/.vuepress/dist/examples/async-api/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Example Async API | Oat++ - - - - - - - -

# Async API Example

Github Repository

Example project how-to use oatpp asynchronous API.

# Overview

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing controller where all endpoints are declared
-|    |- dto/                             // DTOs are declared here
-|    |- AppComponent.hpp                 // Service config
-|    |- App.cpp                          // main() is here
-|
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Build and Run

# Using CMake

Requires

  • oatpp module installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-async-api-exe  # - run application.
-
-

# In Docker

$ docker build -t example-async-api .
-$ docker run -p 8000:8000 -t example-async-api
-

# Read More

- - - diff --git a/docs/.vuepress/dist/examples/consul/index.html b/docs/.vuepress/dist/examples/consul/index.html deleted file mode 100644 index c971c44df..000000000 --- a/docs/.vuepress/dist/examples/consul/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Example Consul Integration | Oat++ - - - - - - - -

# Consul Integration Example

Github Repository

Example project how-to use oatpp-consul module.

# Overview

This project is using oatpp and oatpp-consul modules.

Currently this is trivial example.- Read/Write from/to Consul KV via endpoints declared in Controller. -More complex example later.

In this example Consul is expected to run at port 8500.

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing controller where all endpoints are declared
-|    |- dto/                             // DTOs are declared here
-|    |- AppComponent.hpp                 // Service config
-|    |- App.cpp                          // main() is here
-|
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Build and Run

# Using CMake

Requires

  • oatpp and oatpp-consul modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-consul-exe          # - run application.
-

# In Docker

$ docker build -t example-consul .
-$ docker run -p 8000:8000 -t example-consul
-
- - - diff --git a/docs/.vuepress/dist/examples/crud/index.html b/docs/.vuepress/dist/examples/crud/index.html deleted file mode 100644 index b09196304..000000000 --- a/docs/.vuepress/dist/examples/crud/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - Example CRUD | Oat++ - - - - - - - -

# Example-CRUD

Github Repository

A complete example of a "CRUD" service (UserService) built with Oat++.

In this example:

  • How to create CRUD endpoint.
  • How to use oatpp ORM - SQLite example.
  • How to document API with Swagger-UI and OpenApi 3.0.0.

# Overview

This project is using the following oatpp modules:

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- sql/                                  // SQL migration scripts for SQLite database
-|- src/
-|   |
-|   |- controller/                       // Folder containing REST Controllers (UserController)
-|   |- db/                               // Folder containing the database client
-|   |- dto/                              // DTOs are declared here
-|   |- service/                          // Service business logic classes (UserService)
-|   |- AppComponent.hpp                  // Service config
-|   |- DatabaseComponent.hpp             // Database config
-|   |- SwaggerComponent.hpp              // Swagger-UI config
-|   |- App.cpp                           // main() is here
-|
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Build and Run

# Using CMake

Requires

  • oatpp, oatpp-swagger and oatpp-sqlite modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./crud-exe        # - run application.
-

# In Docker

$ docker build -t example-crud .
-$ docker run -p 8000:8000 -t example-crud
-

# Endpoints

# HTML

HTTP Method URL Description
GET http://localhost:8000/ Root page
GET http://localhost:8000/swagger/ui Swagger UI page

# User Service

HTTP Method URL Description
POST http://localhost:8000/users Create new User
PUT http://localhost:8000/users/{userId} Update User by ID
GET http://localhost:8000/users/{userId} Get User by ID
DELETE http://localhost:8000/users/{userId} Delete User by ID
GET http://localhost:8000/users/offset/{offset}/limit/{limit} Get All Users with Paging
- - - diff --git a/docs/.vuepress/dist/examples/hls-media-stream/index.html b/docs/.vuepress/dist/examples/hls-media-stream/index.html deleted file mode 100644 index 3273077e2..000000000 --- a/docs/.vuepress/dist/examples/hls-media-stream/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - Example HLS Stream | Oat++ - - - - - - - -

# Example-HLS-Media-Stream

Github Repository

Example project how-to build HLS-streaming server using oat++ Async-API. -Live stream tested with Safari-Browser and VLC-player.

# Overview

Server generates infinite .m3u8 playlist from the pre-generated -playlist_live.m3u8 file in the video folder.
-File video/playlist_live.m3u8 together with video chunks is generated using ffmpeg.

Server is built using oat++ Async-Api and has following endpoints:

  • ("GET", "/", Root) - Starting html-page aka index.html
  • ("GET", "video/*", Video) - Embedded video html-page
  • ("GET", "media/live", Live) - Infinite HLS playlist for live-stream describing video chunks
  • ("GET", "media/*", Static) - Endpoint serving media files with range requests support

# Project layout


-|- CMakeLists.txt                       // projects CMakeLists.txt
-|- src/                                 // source folder
-|- test/                                // test folder
-|- utility/install-oatpp-modules.sh     // utility script to install required oatpp-modules.
-|
-|- video/                               // media files and playlists here
-     |- generate_pls.sh                 // example how to use ```ffmpeg``` to generate initial playlist and video chunks
-     |- playlist_live.m3u8              // playlist used to generate infinite playlist for http-live-streaming
-
-
- src/
-    |
-    |- controller/              // Folder containing UserController where all endpoints are declared
-    |- hls/                     // Playlist generator is here
-    |- Utils.hpp                // Utils
-    |- AppComponent.hpp         // Service config
-    |- App.cpp                  // main() is here
-    
-

# Build and Run

# Using CMake

Requires

  • oatpp module installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./hls-example-exe             # - run application.
-

# In Docker

$ docker build -t example-hls .
-$ docker run -p 8000:8000 -t example-hls
-

# Screenshots


# Notes

# Urls

  • localhost:8000 - Index page
  • localhost:8000/media/live - Live stream made from {repo}/video/video1.mp4 and {repo}/video/video2.mp4 played in the loop

# Files

  • {repo}/video/playlist_live.m3u8 - playlist used for live HLS streaming
  • {repo}/video/generate_pls.sh - example script used to generate sub-playlists and video fragmets using ffmpeg tool. #EXTINF sections of sub-playlists then have to be manualy moved to playlist_live.m3u8.

# Note

If app can't find playlist of video files then specify full-file-paths for {repo}/video/playlist_live.m3u8 file and {repo}/video folder in AppComponent.hpp

- - - diff --git a/docs/.vuepress/dist/examples/iot-hue-ssdp/index.html b/docs/.vuepress/dist/examples/iot-hue-ssdp/index.html deleted file mode 100644 index 63f9dcdcc..000000000 --- a/docs/.vuepress/dist/examples/iot-hue-ssdp/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - IoT-Hue-SSDP Example | Oat++ - - - - - - - -

# Example-IoT-Hue

Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo.

It demonstrates how Oat++ can be used to develop an Amazon Alexa or Google Home compatible REST-API which emulates Philips Hue bulbs. -Oat++ answers to search requests of you favorite SmartHome hub and you can register your fake bulbs to it. -After the registration of your fake bulbs to your Hub/Alexa/Google Home, you can control your Oat++ application -with 🗣️"Alexa, turn on <your fake device name>"!

For this discoverability, the oatpp-ssdp module is used to receive and answer SSDP searches.

This REST-API was implemented with the help of the Hue API unofficial reference documentation by burgestrand.se

# Overview

This project is using oatpp, oatpp-swagger and oatpp-ssdp modules.

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|   |
-|   |- controller/                       // Folder containing HueDeviceController and SsdpController where all endpoints are declared
-|   |- db/                               // Folder with database mock
-|   |- dto/                              // DTOs are declared here
-|   |- SwaggerComponent.hpp              // Swagger-UI config
-|   |- DeviceDescriptorComponent.hpp     // Component describing your "Hue Hub" (YOU HAVE TO CONFIGURE THIS FILE TO FIT YOUR ENVIRONMENT)
-|   |- AppComponent.hpp                  // Service config
-|   |- App.cpp                           // main() is here
-|
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Build and Run

Before you run this example you have to edit src/DeviceDescriptorComponent.hpp to match your IP address. -Since this is only an example and to keep it simple this is not automated or parameterised! -You have to come up with your own implementation that fits your environment.

OATPP_CREATE_COMPONENT(std::shared_ptr<DeviceDescriptor>, deviceDescriptor)("deviceDescriptor", [] {
-auto desc = std::make_shared<DeviceDescriptor>();
-// ToDo: Add your machines Address and Port here! You have to come up with your own way to automate this...
-desc->ipPort = "192.168.100.100:80"; // your real IP and Port your HTTP-Controller is running on
-
-// assignable
-desc->mac = "be5t0a70cafe"; // can be a fake one
-
-// fixed
-desc->sn = "1000000471337";
-desc->uuid = "2f402f80-da50-11e1-9b23-" + desc->mac;
-return desc;
-}());
-

# Using CMake

Requires

  • oatpp, oatpp-ssdp and oatpp-swagger modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-iot-hue-ssdp-exe        # - run application.
-

# In Docker

$ docker build -t example-iot-hue-ssdp .
-$ docker run -p 8000:8000 -t example-iot-hue-ssdp
-

# Usage

Configure the example (src/DeviceDescriptorComponent.hpp) and run it. Now tell your Alexa or Echo to search for new devices. -They should come up with two new Devices Oat and Grain. -After you configured them in your Smart-Home App just say something like "Alexa, turn on Oat" and you should see the correspoding PUT request in the console.


# Endpoints declaration

All implemented endpoints are compatible to a Philips Hue bridge (V1 and V3). -Their path and structure are fixed!

# SSDP: Search Responder

ENDPOINT("M-SEARCH", "*", star)
-

This Endpoint accepts and answers to M-SEARCH SSDP packets like a Philips Hue hub would do.

# HTTP: description.xml

ENDPOINT("GET", "/description.xml", description)
-

In the discovery answer, a reference to this endpoint is send back. -This endpoints emulates a static desciption.xml which includes all necessary information required to act as an Philips Hue hub.

See Bridge discovery (burgestrand.se)

# HTTP: One-Shot 'user' registration

ENDPOINT("POST", "/api", appRegister, BODY_DTO(oatpp::Object<UserRegisterDto>, userRegister))
-

This endpoint just emulates a valid user-registration on a Philips Hue hub.

See Application registration (burgestrand.se)

# HTTP: Get all 'lights'

ENDPOINT("GET", "/api/{username}/lights", getLights, PATH(String, username))
-

This endpoint returns a object of all devices in a Philips Hue compatible fashion. -However, formally this endpoint should just return the names. But returning the full list is fine too.

See Lights (burgestrand.se)

# HTTP: Get state of a specific light

ENDPOINT("GET", "/api/{username}/lights/{hueId}", getLight, PATH(String, username), PATH(Int32, hueId))
-

This endpoint returns the state of the light given in {hueId} in a Philips Hue compatible fashion.

See Lights (burgestrand.se)

# HTTP: Set state of a specific light

ENDPOINT("PUT", "/api/{username}/lights/{hueId}/state", updateState,
-         PATH(String, username),
-         PATH(Int32, hueId),
-         BODY_DTO(Object<HueDeviceStateDto>, state))
-

This endpoint accepts a Philips Hue compatible state-object and sets the state in the internal database accordingly. -It is called e.g. by Alexa if you tell it 🗣️"Alexa, turn on <devicename>". -Finally it returns a "success" or "error" object.

See Lights (burgestrand.se)

- - - diff --git a/docs/.vuepress/dist/examples/libressl/index.html b/docs/.vuepress/dist/examples/libressl/index.html deleted file mode 100644 index ab9c4f752..000000000 --- a/docs/.vuepress/dist/examples/libressl/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - Example TLS-Libressl | Oat++ - - - - - - - -

# TLS-LibreSSL Example

Github Repository

Example project how-to use oatpp-libressl module.

  • Serve via HTTPS
  • Make client calls via HTTPS.
  • Using oatpp Async API.

# Overview

This project is using oatpp and oatpp-libressl modules.

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing Controller where all endpoints are declared
-|    |- client/                          // HTTP client is here. Used in "proxy" endpoint /api/get
-|    |- dto/                             // DTOs are declared here
-|    |- AppComponent.hpp                 // Service config
-|    |- App.cpp                          // main() is here
-|    
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-|- cert/                                 // folder with test certificates 
-

# Build and Run

# Using CMake

Requires

  • LibreSSL installed. You may refer to this sh script - how to install libressl - -install-libressl.sh.
    -Or try something like $ apk add libressl-dev

  • oatpp and oatpp-libressl modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.

$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ././example-libressl-exe  # - run application.
-

# In Docker

$ docker build -t example-libressl .
-$ docker run -p 8443:8443 -t example-libressl
-

# Configure AppComponent

Configure server secure connection provider

/**
- *  Create ConnectionProvider component which listens on the port
- */
-OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
-  /* non_blocking connections should be used with AsyncHttpConnectionHandler for AsyncIO */
-  auto config = oatpp::libressl::Config::createDefaultServerConfig("cert/test_key.pem", "cert/test_cert.crt");
-  return oatpp::libressl::server::ConnectionProvider::createShared(config, 8443, true /* true for non_blocking */);
-}());
-
-

Configure client secure connection provider

OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ClientConnectionProvider>, sslClientConnectionProvider) ([] {
-  auto config = oatpp::libressl::Config::createShared();
-  tls_config_insecure_noverifycert(config->getTLSConfig());
-  tls_config_insecure_noverifyname(config->getTLSConfig());
-  return oatpp::libressl::client::ConnectionProvider::createShared(config, "httpbin.org", 443);
-}());
-

# Endpoints


"Hello Async" root endpoint with json response

ENDPOINT_ASYNC("GET", "/", Root) {
-
-  ENDPOINT_ASYNC_INIT(Root)
-  
-  Action act() override {
-    auto dto = HelloDto::createShared();
-    dto->message = "Hello Async!";
-    dto->server = Header::Value::SERVER;
-    dto->userAgent = request->getHeader(Header::USER_AGENT);
-    return _return(controller->createDtoResponse(Status::CODE_200, dto));
-  }
-
-};
-

result:

$ curl -X GET "https://localhost:8443/" --insecure
-{"user-agent": "curl\/7.54.0", "message": "Hello Async!", "server": "oatpp\/0.19.1"}
-

Async proxy endpoint to https://httpbin.org/get

ENDPOINT_ASYNC("GET", "/api/get", TestApiGet) {
-
-  ENDPOINT_ASYNC_INIT(TestApiGet)
-
-  Action act() override {
-    return controller->myApiClient->apiGetAsync().callbackTo(&TestApiGet::onResponse);
-  }
-
-  Action onResponse(const std::shared_ptr<IncomingResponse>& response){
-    return response->readBodyToStringAsync().callbackTo(&TestApiGet::returnResult);
-  }
-
-  Action returnResult(const oatpp::String& body) {
-    return _return(controller->createResponse(Status::CODE_200, body));
-  }
-
-};
-

result:

$ curl -X GET "https://localhost:8443/api/get" --insecure
-{
-  "args": {}, 
-  "headers": {
-    "Connection": "close", 
-    "Host": "httpbin.org"
-  }, 
-  "origin": "176.37.47.230", 
-  "url": "https://httpbin.org/get"
-}
-
- - - diff --git a/docs/.vuepress/dist/examples/microservices/index.html b/docs/.vuepress/dist/examples/microservices/index.html deleted file mode 100644 index 702cd223b..000000000 --- a/docs/.vuepress/dist/examples/microservices/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Example Microservices | Oat++ - - - - - - - -

# Microservices Example

Github Repository

This is an example project on how to build microservices with Oat++ Web Framework, and how to utilize the Monolithization feature.

# Note

For more information about this example, see the Monolithization article.

# Inside This Repository

|- user-service/                          // User-Service source code
-|- book-service/                          // Book-Service source code
-|- facade/                                // Facade source code
-|- monolith/all-services/                 // Monolithic config to build all services as a Monolith
-|- build_all.sh                           // Utility script. Build all services
-|- run_all_microservices.sh               // Utility script. Run all services as separate applications
-

# Build And Run

# Pre Requirements

# Build all

$ ./build_all.sh 
-

# Run as microservices

$ ./run_all_microservices.sh 
-

# Run as monolith

$ ./monolith/all-services/build/all-services-exe
-

# Overview

Facade takes book info from book-service, user info from user-service, merges data, and returns to the client.

# Service ports

  • Facade - 8000
  • User - 8001
  • Book - 8002

# Example curl

$ curl http://localhost:8000/books/4
-{"id": 4, "title": "1984", "author": {"id": 4, "name": "George Orwell"}}
-
- - - diff --git a/docs/.vuepress/dist/examples/mongodb/index.html b/docs/.vuepress/dist/examples/mongodb/index.html deleted file mode 100644 index 7390ff855..000000000 --- a/docs/.vuepress/dist/examples/mongodb/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - Example MongoDB | Oat++ - - - - - - - -

# MongoDB Example

Github Repository

Example project how to work with MongoDB using oatpp-mongo mondule.
-Project is a web-service with basic CRUD and Swagger-UI.
Dockerfile and docker-compose.yaml files included.

# Overview

# Dependencies

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing Controller where all endpoints are declared
-|    |- db/                              // Database class is here 
-|    |- dto/                             // DTOs are declared here
-|    |- App.cpp                          // main() is here
-|    |- AppComponent.hpp                 // Service configuration is loaded here
-|    |- SwaggerComponent.hpp             // Configuration for swagger-ui
-|    
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-|- Dockerfile                            // Dockerfile
-|- docker-compose.yaml                   // Docker-compose with this service and postgresql
-

# Build and Run

# Using CMake

Requires

  • mongocxx installed. To install mongocxx:

  • oatpp, oatpp-swagger, oatpp-mongo modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.

$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-mongodb  # - run application.
-

# In Docker

# Dockerfile

To run the web-service only:

$ docker build -t example-mongodb .
-$ docker run -p 8000:8000 -e DEMO_MONGO_CONN_STR='mongodb://localhost/UserDB' -t example-mongodb
-

# docker-compose

To run both web-service and mongodb:

$ docker-compose up
-

# After run

Go to http://localhost:8000/swagger/ui to try endpoints.

# Installing mongocxx on Linux

Installing mongocxx on Linux is an unclear and painful process. -See ubuntu-cmake-mongocxx/Dockerfile -for instructions that worked for us.

- - - diff --git a/docs/.vuepress/dist/examples/postgresql/index.html b/docs/.vuepress/dist/examples/postgresql/index.html deleted file mode 100644 index 109ccab80..000000000 --- a/docs/.vuepress/dist/examples/postgresql/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - Example PostgreSQL | Oat++ - - - - - - - -

# PostgreSQL Example

Github Repository

A complete example of a "CRUD" service (UserService) built with Oat++ and using oatpp ORM with PostgreSQL.

In this example:

  • How to create CRUD endpoints.
  • How to use oatpp ORM - PostgreSQL example.
  • How to document API with Swagger-UI and OpenApi 3.0.0.

# Overview

This project is using the following oatpp modules:

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|    |
-|    |- controller/                      // Folder containing Controller where all endpoints are declared
-|    |- db/                              // Folder containing the database client
-|    |- dto/                             // DTOs are declared here
-|    |- service/                         // Service business logic classes (UserService)
-|    |- ServiceComponent.hpp             // Service configuration (port, ObjectMapper, Database)
-|    |- SwaggerComponent.hpp             // Configuration for swagger-ui
-|    |- AppComponent.hpp                 // Service configuration is loaded here
-|    |- DatabaseComponent.hpp            // Database config
-|    |- App.cpp                          // main() is here
-|    
-|- test/                                 // test folder
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-|- resources/config.json                 // configuration file with configuration profiles
-|- Dockerfile                            // Dockerfile
-|- docker-compose.yaml                   // Docker-compose with this service and postgresql
-

# Build and Run

# Using CMake

Requires

  • This example also requires the PostgreSQL package installed.

    • On Alpine $ apk add postgresql-dev
    • On Ubuntu $ apt-get install postgresql-server-dev-all

    For more info see oatpp-postgresql/README.md

  • oatpp, oatpp-swagger and oatpp-postgresql modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.

$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-postgresql-exe  # - run application.
-

PostgreSQL is expected running as for dev config profile

# In Docker

# Dockerfile

$ docker build -t example-postgresql .
-$ docker run -p 8000:8000 -e CONFIG_PROFILE='dev' -t example-postgresql
-

# docker-compose

$ docker-compose up
-

docker-compose will run service with local-docker config profile

# After run

Go to http://localhost:8000/swagger/ui to try endpoints.

- - - diff --git a/docs/.vuepress/dist/examples/websocket/index.html b/docs/.vuepress/dist/examples/websocket/index.html deleted file mode 100644 index 2f260ddf9..000000000 --- a/docs/.vuepress/dist/examples/websocket/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - WebSocket Example | Oat++ - - - - - - - -

# example-websocket

Github Repository

Collection of oatpp WebSocket examples.

In the box:

- - - diff --git a/docs/.vuepress/dist/examples/yuv-websocket-stream/index.html b/docs/.vuepress/dist/examples/yuv-websocket-stream/index.html deleted file mode 100644 index b206900a3..000000000 --- a/docs/.vuepress/dist/examples/yuv-websocket-stream/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - YUV-WebSocket-Stream Example | Oat++ - - - - - - - -

# Example-YUV-Websocket-Stream

Github Repository

Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets. -The raw YUV image stream is send via a websocket connection. In the example Webpage, this YUV stream is converted to an HTML5 Canvas using JavaScript. -If you experience lag in the video its either your PC not being fast enough for the JavaScript conversion or the V4L2 stack. -The example webpage also runs fine on newer Smartphones!

# Overview

This project is using oatpp, oatpp-websocket and oatpp-swagger modules.

# Project layout

|- CMakeLists.txt                        // projects CMakeLists.txt
-|- src/
-|   |
-|   |- controller/                       // Folder containing CamAPIController where all endpoints are declared
-|   |- backend/                          // Folder with "business logic"
-|   |- dto/                              // DTOs are declared here
-|   |- SwaggerComponent.hpp              // Swagger-UI config
-|   |- AppComponent.hpp                  // Service config
-|   |- App.cpp                           // main() is here
-|
-|- utility/install-oatpp-modules.sh      // utility script to install required oatpp-modules.
-

# Usage

When running this example, a Oat++ REST-API is launched and a demo webpage is accessible under <yourip/localhost>:8000/v0/cam/stream. -The raw data is send out on the websocket (<yourip/localhost>:8000/v0/cam/stream/ws) as soon as one client is connected and stops if all clients have disconnected. -Each websocket frame contains a whole image as received from V4L2.

# Quirks

# Hardcoded Dimensions

The dimensions are Hardcoded to 640x480 interlaced YUYV. Thus each image complete image is 614400 bytes. -You can change the dimensions in src/backend/V4LGrabber.cpp:589 and have to update them in res/cam/wsImageView.html:31-32

src/backend/V4LGrabber.cpp:589

fmt.fmt.pix.width       = 640;
-fmt.fmt.pix.height      = 480;
-fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
-fmt.fmt.pix.field       = V4L2_FIELD_INTERLACED;
-

res/cam/wsImageView.html:31-32

const imgData = ctx.createImageData(640, 480);
-const grayScale = new Uint8Array(640*480);
-

# Partial Images

Some webcams or V4L2 implementations are buggy and (sometimes) transfer partial images (only). -When you know your image size, you must come up with your own stiching mechanism.

# Video Lags

Depending on the used IO method (read, mmap or userptr) between V4L2<->Oat++ some lag can occur or the stream does not work at all. -The example is programmed to use mmap in src/controller/CamAPIController.cpp:31.

m_grabber = std::make_shared<V4LGrabber>(device, &CamAPIController::handle_frame, m_imageReceivers.get(), V4LGrabber::IO_METHOD_MMAP);
-

The methods can roughly be described by:

  • read: Simple read calls on /dev/videoX (most simple, widely supported)
  • mmap: Memory mapping the data to the user-memory (should be a lot faster, memory efficient)
  • userptr: User created memory region is given to kernel and the kernel uses this region as buffer (potentially dangerous, memory efficient)

# Build and Run

# Using CMake

Requires

  • oatpp, oatpp-websocket and oatpp-swagger modules installed. You may run utility/install-oatpp-modules.sh -script to install required oatpp modules.
  • Linux with V4L2 development libraries installed
$ mkdir build && cd build
-$ cmake ..
-$ make 
-$ ./example-yuv-websocket-stream-exe        # - run application.
-

# In Docker

$ docker build -t example-yuv-websocket-stream .
-$ docker run -p 8000:8000 -t example-yuv-websocket-stream-exe
-
- - - diff --git a/docs/.vuepress/dist/index.html b/docs/.vuepress/dist/index.html deleted file mode 100644 index e6874c1d6..000000000 --- a/docs/.vuepress/dist/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Oat++ - - - - - - - -
hero

- Oat++ -

- An Open Source C++ Web Framework -

- Get Started -

Version: 1.3.0
-License: Apache-2.0 License

Run It Anywhere

Oat++ has zero-dependencies and it's easy-portable with a wide range of supported platforms.

Build Robust APIs

With Oat++ Simple-API it's easy and fun to build flexible and robust APIs. See high-level overview.

Handle 5M Connections

With Oat++ Async-API you can handle over 5 Million concurrent connections on a single server. See benchmark.

Access Databases

Oat++ ORM provides an easy and unified way to access databases. Read more.

Keep Code Consistent

Oat++ relies on Object-Mapping throughout its codebase to ensure consistency of APIs and data models. Read more.

Document Your APIs

Automatically document endpoints with Swagger-UI and OpenAPI 3.0.0. Read more.

How It Looks

ENDPOINT("POST", "/users", createUser, 
-         BODY_DTO(Object<UserDto>, userDto)) 
-{
-  return createDtoResponse(Status::CODE_200, m_database->createUser(userDto));
-}
-

Oat++ Users

Join Our Community

Use Oat++

Start using Oat++ and share your experience. Get Started!

Contribute

Oat++ is an open-source project and your contributions matter. Contribute!

Share Your Feedback

If you are using Oat++, we would love to hear from you! contact@oatpp.io

Frequently Asked Questions

Q: "Oat++" name?

  • "Oat" is something light, organic, and green. It can be easily cooked and consumed with no effort.
  • "++" gives a hint that it is "something" for C++.

Q: What is the main area of Oat++ application?

Oat++ is used for many different purposes, from building REST APIs that run on embedded devices to -building microservices and highly-loaded cloud applications.

But the majority of use cases appears to be in IoT and Robotics.

Q: How portable is Oat++?

Theoretically, Oat++ can be easily ported everywhere where you have threads and network stack. -With an additional comparably small effort, it can be ported almost everywhere depending on how -much you strip it and what would be the final binary size.

See supported platforms for additional info.

Q: What is the size of a minimal Oat++ application?

About 1Mb, depending on C/C++ std-lib and oatpp version.

Q: Which Oat++ API to choose, Simple or Async?

Always choose Simple API wherever possible. Simple API is more developed and makes the code cleaner.

Async API is designed for small, specific tasks that run at high concurrency levels ex.:

  • Serving file downloads to a large number of concurrent users (1K users and more).
  • Streaming to a large number of clients (1K or more).
  • Websocket Chat servers.

For all other purposes use simple API.

- - - diff --git a/docs/.vuepress/dist/status/build/index.html b/docs/.vuepress/dist/status/build/index.html deleted file mode 100644 index 665b5f7f4..000000000 --- a/docs/.vuepress/dist/status/build/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Build status | Oat++ - - - - - - - -

# Project Build Status

# Modules

Module Status Dependencies 3rd party libs
oatpp oatpp build status
oatpp-consul Build Status oatpp
oatpp-curl Build Status oatpp Curl
oatpp-libressl oatpp build status oatpp LibreSSL
oatpp-mbedtls Build Status oatpp MbedTLS
oatpp-mongo Build Status oatpp libmongoxcc
oatpp-openssl Build Status oatpp OpenSSL
oatpp-postgresql Build Status oatpp PostgreSQL
oatpp-protobuf oatpp protobuf
oatpp-sqlite Build Status oatpp SQLite
oatpp-ssdp Build Status oatpp
oatpp-swagger oatpp build status oatpp
oatpp-websocket Build Status oatpp
oatpp-zlib Build Status oatpp zlib

# Starters

Starter Status Dependencies 3rd party libs
oatpp-starter Build Status oatpp
oatpp-starter-async Build Status oatpp
oatpp-starter-module oatpp build status oatpp

# Examples

Example Status Dependencies 3rd party libs
example-api-client Build Status oatpp Curl
example-async-api Build Status oatpp
example-consul Build Status oatpp, oatpp-consul
example-crud Build Status oatpp, oatpp-swagger, oatpp-sqlite SQLite
example-hls-media-stream Build Status oatpp
example-iot-hue-ssdp Build Status oatpp, oatpp-ssdp
example-libressl Build Status oatpp, oatpp-libressl LibreSSL
example-microservices Build Status oatpp, oatpp-swagger
example-mongodb Build Status oatpp, oatpp-swagger, oatpp-mongo libmongoxcc
example-postgresql Build Status oatpp, oatpp-swagger, oatpp-postgresql PostgreSQL
example-websocket Build Status oatpp, oatpp-websocket, oatpp-mbedtls MbedTLS
example-yuv-websocket-stream Build Status oatpp, oatpp-swagger, oatpp-websocket

# Benchmark Projects

Project Status Dependencies 3rd party libs
benchmark-websocket Build Status oatpp, oatpp-websocket
- - - diff --git a/docs/.vuepress/dist/support/index.html b/docs/.vuepress/dist/support/index.html deleted file mode 100644 index 1ceb8b390..000000000 --- a/docs/.vuepress/dist/support/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Support | Oat++ - - - - - - - -

# Support

Oat++ community is always willing to help!

Connect with Oat++ developers and Oat++ users on the following public channels:

Our services:

  • Private email support from Oat++ developers.
  • Tailored modifications of oatpp and its modules.
  • Custom software development.

For more information contact us - 📬 consultancy@oatpp.io

- - - diff --git a/docs/.vuepress/dist/supported-platforms/index.html b/docs/.vuepress/dist/supported-platforms/index.html deleted file mode 100644 index cc28c097b..000000000 --- a/docs/.vuepress/dist/supported-platforms/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Supported Platforms | Oat++ - - - - - - - -

# Supported Platforms

# Maintained on regular basis

  • Linux
  • BSD
  • MacOS
  • Windows - special thanks to Benedikt-Alexander Mokroß - bamkrs

# Special Support

  • OpenWRT - see Oat++ OpenWRT feed -containing build-scripts, options and patches for applications, modules and libraries provided by Oat++.

# Known Builds

- - - diff --git a/docs/.vuepress/theme/index.js b/docs/.vuepress/theme/index.js deleted file mode 100644 index 321266d9c..000000000 --- a/docs/.vuepress/theme/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - - extend: '@vuepress/theme-default' - -} diff --git a/docs/.vuepress/theme/styles/index.styl b/docs/.vuepress/theme/styles/index.styl deleted file mode 100644 index 571ae7b0f..000000000 --- a/docs/.vuepress/theme/styles/index.styl +++ /dev/null @@ -1,119 +0,0 @@ -#my-style { - -} - -div[class*="language-"] - .highlight-lines - .highlighted - box-shadow inset 5px 0px #00DD00, inset -5px 0px #00DD00 - -.home .hero img - max-height 200px !important - -.sidebar-heading - font-size 0.9rem !important - -.sidebar-link - font-size 0.8rem !important - -.navbar - - .logo - margin-right 0 !important - - .search-box input - border-radius 0 !important - - -.contact_icon - opacity: 0.5 - padding: 3px - padding-bottom: 0px - background-color #CCCCCC - border-radius: 2px; - position: absolute - -.contact_icon:hover - opacity: 1 - background-color #FFFFFF - -.contributor_img - margin: 1px - opacity: 0.8 - -.contributor_img:hover - opacity: 1 - -.maintainer_name - font-size: 1.2rem; - padding: 0; - margin: 0; - -.maintainer_desc - font-size: 1rem; - padding: 0; - margin: 0 0 5px; - -.maintainer_root - display: inline-block; - margin-bottom: 10px; - margin-right: 25px; - -.maintainer_info - display: inline-block; - -.user_root - margin: 5px 5px 0 0; - padding: 0; - display: inline-block; - background-color: rgba(0,0,0,0.02); - width: 160px; - height: 160px; - -.user_root a { - width: 100%; - height: 100%; - display: inline-grid; - vertical-align: middle; -} - -.user_logo - margin: auto; - width: 80%; - transition-duration: 0.5s; - -.user_root:hover .user_logo - width: 90% - -.margin1 - margin-top: 100px !important; - -.margin2 - margin-top: 150px !important; - -.h2-main - border-bottom: none; - text-align: center; - -.users-main - text-align: center; - -.users-main .user_root - margin: 15px 15px 0 0; - -.f-community - border-top: none !important; - padding-top: 0 !important; - -@media (min-width: 719px) - .f-community .feature - flex-basis: 25% !important; - max-width: 23% !important; - -.icon - width: 19px; - height: 19px; - margin-right: 7px; - -.footer-margin - margin-bottom: 150px; \ No newline at end of file diff --git a/docs/.vuepress/theme/styles/palette.styl b/docs/.vuepress/theme/styles/palette.styl deleted file mode 100644 index 2a2ae4736..000000000 --- a/docs/.vuepress/theme/styles/palette.styl +++ /dev/null @@ -1,6 +0,0 @@ -$accentColor = #009688 -$arrowBgColor = #00bfa5 -$textColor = #2c3e50 -$borderColor = #eaecef - -$contentWidth = 100% \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index adb67075d..000000000 --- a/docs/README.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: oat++ -home: true -heroImage: data:image/png;base64,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 -heroText: Oat++ -tagline: An Open Source C++ Web Framework -actionText: Get Started -actionLink: /docs/start/ -footer: This website is built with VuePress and served by Oat++ server ---- - - - -Version: `1.3.0` -License: `Apache-2.0 License` - -
-
-

Run It Anywhere

-

Oat++ has zero-dependencies and it's easy-portable with a wide range of supported platforms.

-
-
-

Build Robust APIs

-

With Oat++ Simple-API it's easy and fun to build flexible and robust APIs. See high-level overview.

-
-
-

Handle 5M Connections

-

With Oat++ Async-API you can handle over 5 Million concurrent connections on a single server. See benchmark.

-
-
-

Access Databases

-

Oat++ ORM provides an easy and unified way to access databases. Read more.

-
-
-

Keep Code Consistent

-

Oat++ relies on Object-Mapping throughout its codebase to ensure consistency of APIs and data models. Read more.

-
-
-

Document Your APIs

-

Automatically document endpoints with Swagger-UI and OpenAPI 3.0.0. Read more.

-
-
- -

How It Looks

- -```cpp -ENDPOINT("POST", "/users", createUser, - BODY_DTO(Object, userDto)) -{ - return createDtoResponse(Status::CODE_200, m_database->createUser(userDto)); -} -``` - -

Oat++ Users

- -
- -
- -

Join Our Community

- -
-
-

Use Oat++

-

Start using Oat++ and share your experience. Get Started!

-
-
-

Contribute

-

Oat++ is an open-source project and your contributions matter. Contribute!

-
-
-

Connect

- -
-
-

Share Your Feedback

-

If you are using Oat++, we would love to hear from you! contact@oatpp.io

-
-
- -

Frequently Asked Questions

- -

Q: "Oat++" name?

- -- "Oat" is something light, organic, and green. It can be easily cooked and consumed with no effort. -- "++" gives a hint that it is "something" for C++. - -

Q: What is the main area of Oat++ application?

- -Oat++ is used for many different purposes, from building REST APIs that run on embedded devices to -building microservices and highly-loaded cloud applications. - -But the majority of use cases appears to be in **IoT** and **Robotics**. - -

Q: How portable is Oat++?

- -Theoretically, Oat++ can be **easily** ported everywhere where you have **threads** and **network stack**. -With an additional comparably small effort, it can be ported almost everywhere depending on how -much you strip it and what would be the final binary size. - -See supported platforms for additional info. - -

Q: What is the size of a minimal Oat++ application?

- -About **1Mb**, depending on C/C++ std-lib and oatpp version. - -

Q: Which Oat++ API to choose, Simple or Async?

- -Always choose **Simple API** wherever possible. Simple API is more developed and makes the code cleaner. - -Async API is designed for small, specific tasks that run at high concurrency levels ex.: -- Serving file downloads to a large number of concurrent users (1K users and more). -- Streaming to a large number of clients (1K or more). -- Websocket Chat servers. - -For all other purposes use simple API. - - diff --git a/docs/about/README.md b/docs/about/README.md deleted file mode 100644 index d78d0a24d..000000000 --- a/docs/about/README.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: About -sidebarDepth: 0 ---- - -# About Oat++ - -
-
- - -
- -Latest version `1.3.0` :tada: - -Oat++ is an open-source C++ web framework for highly scalable and resource-efficient web applications. -It provides all the necessary components for production-grade development, including: - -- Advanced REST framework with request parameters mapping and Swagger-UI annotations. -See [Api Controller](/docs/components/api-controller/) and [Api Client](/docs/components/api-client/). -- ORM Framework. See [Object-Relational Mapping (ORM)](/docs/components/orm/) -- WebSocket framework. See [5-million connections benchmark](/benchmark/websocket/5-million/). -- Object Mapping. See [Data Transfer Object (DTO)](/docs/components/dto/). -- Dependency Injection -- Swagger-UI. See [oatpp-swagger](/docs/modules/oatpp-swagger/) module. - -It's zero-dependency, easy-portable, and high-performance. - -## Maintainers -
- - -## Contributors -
- - -Contribute to Oat++ with us! -[Clone Oat++ on Github](https://github.com/oatpp/oatpp) and join our [Dev-Chat on Gitter](https://gitter.im/oatpp-framework/Lobby) - -## Oat++ User Community - - - -Join Oat++ user community! -Tell us about your use-case - :mailbox_with_mail: [contact@oatpp.io](mailto:contact@oatpp.io) diff --git a/docs/benchmark/aws/README.md b/docs/benchmark/aws/README.md deleted file mode 100644 index 78b180013..000000000 --- a/docs/benchmark/aws/README.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Benchmark - Amazon Web Services -description: Oatpp benchmark for Amazon Web Services cloud -sidebarDepth: 0 ---- - -# Benchmark oatpp - AWS cloud - -## AWS t2.micro instance. 1vCPU 1GB Ubuntu 18.04 - free tier - -Performance test of "Hello World" endpoint. - -**Machine** - AWS t2.micro instance. 1vCPU 1GB Ubuntu 18.04 - free tier -**Tool** - wrk - -oatpp-async compiled with: `-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=1` option. - -![benchmark aws t2.micro](https://github.com/lganzzzo/oatpp-website-res/blob/master/aws-1.png?raw=true) - -- **go net/http** service performs clearly till 10 concurrent connection. At higher concurrency levels performs with "timeout" errors. Down at concurrency level > 15K. -- **oatpp-async** service performs clearly and stays available up till 20K concurrent connections load. At higher loads no response. Service available if load drops. -- **oatpp-multithreaded** service shows very high performance and works clearly up to 2.5K concurrent connections. Then down at load 5K concurrent connections. - - -## AWS t3.xlarge instance. 4vCPUs 16GB Ubuntu 18.04 - $121.81/Month - -Performance test of "Hello World" endpoint. - -**Machine** - AWS t3.xlarge instance. 4vCPUs 16GB Ubuntu 18.04 - $121.81/Month -**Tool** - wrk - -oatpp-async compiled with: -`-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=3` option. - -![benchmark aws t3.xlarge](https://github.com/lganzzzo/oatpp-website-res/blob/master/aws-2.png?raw=true) - -- **go net/http** service performs clearly till 10 concurrent connection. At higher concurrency levels (till 25K connections) performs with "timeout" errors. At 30K load no response. Service available if load drops. -- **oatpp-async** service performs clearly and stays available up till 25K concurrent connections load. At 30K load no response. Service available if load drops. -- **oatpp-multithreaded** service shows very high performance and works clearly up to 2.5K concurrent connections. At higher concurrency levels (till 20K connections) performs with "timeout" errors. Down at higher load. \ No newline at end of file diff --git a/docs/benchmark/digital-ocean/README.md b/docs/benchmark/digital-ocean/README.md deleted file mode 100644 index d9fcfa656..000000000 --- a/docs/benchmark/digital-ocean/README.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Benchmark - Digital Ocean -description: Oatpp Benchmark for Digital Ocean cloud -sidebarDepth: 0 ---- - -# Benchmark oatpp - Digital Ocean cloud - -## Digital Ocean droplet 1vCPU 1GB Ubuntu 16.04 - $5/Month - -Performance test of "Hello World" endpoint. - -**Machine** - Digital Ocean droplet. 1vCPU 1GB Ubuntu 16.04 - $5/Month -**Tool** - wrk - -oatpp-async compiled with: `-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=1` option. - -![Digital Ocean 1vCPU 1GB](https://github.com/lganzzzo/oatpp-website-res/blob/master/do-1.png?raw=true) - -- **go net/http** service performs clearly till 10 concurrent connection. At higher concurrency levels performs with "timeout" errors. Down at concurrency level 20K. -- **oatpp-async** service performs clearly and stays available on the whole distance. -- **oatpp-multithreaded** service performs clearly up to 5K concurrent connections. Then down at load 10K concurrent connections. - - -## Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month - -Performance test of "Hello World" endpoint. - -**Machine** - Digital Ocean droplet 4vCPUs 8GB Ubuntu 16.04 - $40/Month -**Tool** - wrk - -oatpp-async compiled with: `-D OATPP_ASYNC_HTTP_CONNECTION_HANDLER_THREAD_NUM_DEFAULT=3` option. - -![benchmark Digital Ocean droplet 4vCPUs](https://github.com/lganzzzo/oatpp-website-res/blob/master/do-2.png?raw=true) - -- **go net/http** service performs clearly and stays available up till 30K concurrent connections load. -- **oatpp-async** service performs clearly and stays available up till 30K concurrent connections load. -- **oatpp-multithreaded** service performs clearly up till 1K concurrent connections load. Then down at load 2.5K concurrent connections. \ No newline at end of file diff --git a/docs/benchmark/info/README.md b/docs/benchmark/info/README.md deleted file mode 100644 index c3ef836b2..000000000 --- a/docs/benchmark/info/README.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Benchmark Info -description: About Oatpp Benchmark -sidebarDepth: 0 ---- - -# Benchmarks info - -Benchmarks were taken for oatpp version `0.18.9` - - -Source code of services prepared for tests can be found here: [https://github.com/oatpp/benchmark](https://github.com/oatpp/benchmark). - - -If you are interested in some particular framework vs oatpp please let me know by opening issue here: [https://github.com/oatpp/benchmark/issues](https://github.com/oatpp/benchmark/issues). Specify platform/framework in the issue. \ No newline at end of file diff --git a/docs/benchmark/websocket/2-million/README.md b/docs/benchmark/websocket/2-million/README.md deleted file mode 100644 index 1a052121b..000000000 --- a/docs/benchmark/websocket/2-million/README.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Benchmark 2-million Websockets -description: oatpp benchmark for 2 Million fully-loaded concurrent websocket connections. -sidebarDepth: 0 ---- - -# 2 Million WebSockets - -Date - `May 5, 2019` -Oatpp version - `0.19.4` - -This article describes oatpp benchmark for 2 Million **fully-loaded** concurrent websocket connections. - -## Setup - -Setup diagram - -- Server Machine - Google-Cloud **n1-highmem-8 (8 vCPUs, 52 GB memory)** running Debian GNU/Linux 9. -- Client Machine - Google-Cloud **n1-highmem-8 (8 vCPUs, 52 GB memory)** running Debian GNU/Linux 9. - -**Server application** listens to 100 ports from 8000 to 8099 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 2m clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding `"Hello from oatpp!"` at the beginning. - -**Client application** opens 20k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one. - -Both server and client applications are running asynchronous oatpp server/client based on [oatpp coroutines](/docs/oatpp-coroutines/). - -## Results - -Server showed stable performance through all the benchmark test delivering about `9 Million` messages per minute (`~32.7 Mb/Second`): - -Server monitoring graph - -### Server Stats - -#### Resource consumption - -Server memory consumption was stable at about 15GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 2000000 # - Number of connected clients -FRAMES_TOTAL: 2055762317 # - Frames received by server (total) -MESSAGES_TOTAL: 2055711187 # - Messages received by server (total) -FRAMES_PER_MIN: 9198391.630007 # - Frames received rate per minute -MESSAGES_PER_MIN: 9194998.122585 # - Messages received rate per minute -``` - -### Client Stats - -#### Resource consumption - -Client memory consumption was stable at about 10GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 2000000 # - Number of connected clients -FRAMES_TOTAL: 1986591173 # - Frames received by client (total) -MESSAGES_TOTAL: 1986358027 # - Messages received by client (total) -FRAMES_PER_MIN: 8971818.390638 # - Frames received rate per minute -MESSAGES_PER_MIN: 8973755.731700 # - Messages received rate per minute -``` - -## Steps to Reproduce - -Create two `n1-highmem-8 (8 vCPUs, 52 GB memory) - Debian GNU/Linux 9` instances in same VPC on Google Cloud. - -### Execute the following commands for both instances (SSH). - -- Install git - -```bash -$ sudo su -$ apt-get update -... -$ apt-get install -y git -... -``` - -- Clone [benchmark-websocket repo](https://github.com/oatpp/benchmark-websocket) and `cd` to repo folder - -```bash -$ git clone https://github.com/oatpp/benchmark-websocket -... -$ cd benchmark-websocket -``` - -- Install `oatpp` and `oatpp-websocket` modules (run ./prepare.sh script). - -```bash -$ ./prepare.sh -``` - -- Configure environment (run ./sock-config.sh script) - -```bash -$ ./sock-config.sh -$ ulimit -n 3000000 -``` - -### Build and Run Server - -Commands for server instance only: - -- Build server - -```bash -$ cd server/build/ -$ cmake .. -$ make -``` - -- Run server - -```bash -$ ./wsb-server-exe --tp 9 --tio 3 -``` -where: -`--tp` - number of data-processing threads. -`--tio` - number of I/O workers. - -### Build and Run Client - -Commands for client instance only: - -- Build client - -```bash -$ cd client/build/ -$ cmake .. -$ make -``` - -- Run client - -```bash -$ ./wsb-client-exe --tp 9 --tio 3 -h --socks-max 2000000 --socks-port 20000 --si 1000 --sf 50 -``` -where: -`--tp` - number of data-processing threads. -`--tio` - number of I/O workers. -`-h ` - substitute **private-ip** of server instance here. -`--socks-max` - how many client connections to establish. -`--socks-port` - how many client connections per port. -`--si 1000 --sf 50` - control how fast clients will connect to server. Here - each `1000` iterations sleep for `50` milliseconds. - -**Note** - clients will not start load until all clients are connected. -**Note** - client app will fail with assertion if any of clients has failed. - -## Links - -- [This benchmark repo](https://github.com/oatpp/benchmark-websocket) -- [About oatpp coroutines](/docs/oatpp-coroutines/) -- [oatpp-websocket repo](https://github.com/oatpp/oatpp-websocket) -- [oatpp repo](https://github.com/oatpp/oatpp) diff --git a/docs/benchmark/websocket/5-million/README.md b/docs/benchmark/websocket/5-million/README.md deleted file mode 100644 index 9ea5c0cdc..000000000 --- a/docs/benchmark/websocket/5-million/README.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Benchmark 5-million Websockets -description: oatpp benchmark for 5 Million fully-loaded concurrent websocket connections. -sidebarDepth: 0 ---- - -# 5 Million WebSockets - -Date - `May 20, 2019` -Oatpp version - `0.19.4` - -This article describes oatpp benchmark for 5 Million **fully-loaded** concurrent websocket connections. - -It consists of two parts: -- [4 Million WebSockets test](#_4m-websockets). -- [5 Million WebSockets test](#_5m-websockets). - -## The Purpose - -This benchmark is aimed to determine scalability of oatpp with increase of load and computing powers with respect to **previous** -[2-million WebSockets benchmark](/benchmark/websocket/2-million/). - -| |Previous, 2M benchmark|This, 4M / 5M benchmark| -|---|---|---| -|Computing power|**8 vCPUs, 52 GB memory** |**16 vCPUs, 104 GB memory**| -|Load |**2M connections** |**4M / 5M connections** | - -## 4M WebSockets - -### Setup - -Setup diagram - -- Server Machine - Google-Cloud **n1-highmem-16 (16 vCPUs, 104 GB memory)** running Debian GNU/Linux 9. -- Client Machine - Google-Cloud **n1-highmem-16 (16 vCPUs, 104 GB memory)** running Debian GNU/Linux 9. - -**Server application** listens to 400 ports from 8000 to 8399 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 4M clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding `"Hello from oatpp!"` at the beginning. - -**Client application** opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one. - -Both server and client applications are running asynchronous oatpp server/client based on [oatpp coroutines](/docs/oatpp-coroutines/). - -### Results - -Server showed stable performance through all the benchmark test delivering about `17 Million` messages per minute (`~57.5 Mb/Second`): - -Server monitoring graph - -### Server Stats - -#### Resource consumption - -Server memory consumption was stable at about 30GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 4000000 # - Number of connected clients -FRAMES_TOTAL: 573911830 # - Frames received by server (total) -MESSAGES_TOTAL: 573905877 # - Messages received by server (total) -FRAMES_PER_MIN: 17373801.439247 # - Frames received rate per minute -MESSAGES_PER_MIN: 17372968.482111 # - Messages received rate per minute -``` - -### Client Stats - -#### Resource consumption - -Client memory consumption was stable at about 20.5GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 4000000 # - Number of connected clients -FRAMES_TOTAL: 516770460 # - Frames received by client (total) -MESSAGES_TOTAL: 516405193 # - Messages received by client (total) -FRAMES_PER_MIN: 16801610.114129 # - Frames received rate per minute -MESSAGES_PER_MIN: 16472169.881512 # - Messages received rate per minute -``` - - -## 5M WebSockets - -### Setup - -Setup diagram - -- Server Machine - Google-Cloud **n1-highmem-16 (16 vCPUs, 104 GB memory)** running Debian GNU/Linux 9. -- Client Machine - Google-Cloud **n1-highmem-16 (16 vCPUs, 104 GB memory)** running Debian GNU/Linux 9. - -**Server application** listens to 500 ports from 8000 to 8499 -(in order to prevent ephemeral ports exhaustion on the client - as we running all 5m clients on the same machine). -Once there is a message on WebSocket, server will echo client's message adding `"Hello from oatpp!"` at the beginning. - -**Client application** opens 10k connections on each port, waits all connections are ready (all WebSocket handshakes are done) then starts the load. -Each of 2-million websocket clients continuously sends messages to server. Once message is sent client sends another one. - -Both server and client applications are running asynchronous oatpp server/client based on [oatpp coroutines](/docs/oatpp-coroutines/). - -
- -As main point of memory consumption is linux sockets buffers, for 5M connections it was required to reduce `net.ipv4.tcp_rmem` in -order for the test to be stable - -```bash -sysctl -w net.ipv4.tcp_rmem='2048 2048 2048' -``` - -*Here we reduce read buffers as it appeared to have minimal performance impact in this particular case.* - -## Results - -Server showed stable performance through all the benchmark test delivering about `18 Million` messages per minute (`~58 Mb/Second`): - -Server monitoring graph - -### Server Stats - -#### Resource consumption - -Server memory consumption was stable at about 36GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 5000000 # - Number of connected clients -FRAMES_TOTAL: 1179521220 # - Frames received by server (total) -MESSAGES_TOTAL: 1177610133 # - Messages received by server (total) -FRAMES_PER_MIN: 19625257.718400 # - Frames received rate per minute -MESSAGES_PER_MIN: 19619426.046304 # - Messages received rate per minute -``` - -### Client Stats - -#### Resource consumption - -Client memory consumption was stable at about 24GB. - -Server resource consumption - -#### Throughput - -``` -SOCKETS: 5000000 # - Number of connected clients -FRAMES_TOTAL: 1108906831 # - Frames received by client (total) -MESSAGES_TOTAL: 1097120434 # - Messages received by client (total) -FRAMES_PER_MIN: 17878571.176088 # - Frames received rate per minute -MESSAGES_PER_MIN: 17612701.369327 # - Messages received rate per minute -``` - -## Steps to Reproduce - -Create two `n1-highmem-16 (16 vCPUs, 104 GB memory) - Debian GNU/Linux 9` instances in same VPC on Google Cloud. - -### Execute the following commands for both instances (SSH). - -- Install git - -```bash -$ sudo su -$ apt-get update -... -$ apt-get install -y git -... -``` - -- Clone [benchmark-websocket repo](https://github.com/oatpp/benchmark-websocket) and `cd` to repo folder - -```bash -$ git clone https://github.com/oatpp/benchmark-websocket -... -$ cd benchmark-websocket -``` - -- Install `oatpp` and `oatpp-websocket` modules (run ./prepare.sh script). - -```bash -$ ./prepare.sh -``` - -- Configure environment (run ./sock-config-5m.sh script) - -```bash -$ ./sock-config.sh -$ ulimit -n 6000000 -``` - -### Build and Run Server - -Commands for server instance only: - -- Build server - -```bash -$ cd server/build/ -$ cmake .. -$ make -``` - -- Run server - -```bash -$ ./wsb-server-exe --tp 16 --tio 8 --pc 500 -``` -where: -`--tp` - number of data-processing threads. -`--tio` - number of I/O workers. -`--pc` - number of ports to listen to. - -### Build and Run Client - -Commands for client instance only: - -- Build client - -```bash -$ cd client/build/ -$ cmake .. -$ make -``` - -- Run client - -```bash -$ ./wsb-client-exe --tp 16 --tio 8 -h --socks-max 5000000 --socks-port 10000 --si 1000 --sf 30 --pc 500 -``` -where: -`--tp` - number of data-processing threads. -`--tio` - number of I/O workers. -`-h ` - substitute **private-ip** of server instance here. -`--socks-max` - how many client connections to establish. -`--socks-port` - how many client connections per port. -`--si 1000 --sf 30` - control how fast clients will connect to server. Here - each `1000` iterations sleep for `30` milliseconds. -`--pc` - number of available server ports to connect to. - -**Note** - clients will not start load until all clients are connected. -**Note** - client app will fail with assertion if any of clients has failed. - -## Conclusion - -Previous results for 2M WebSockets were **9 Million messages per minute ~32.7 Mb/Second**. So it was **expected** to -get something aroud **18 Million messages per minute ~64 Mb/Second** in this benchmark (As computing power was increased x2). - -Actual results are **17-18 Million messages per minute, with about ~58 Mb/Second** - which is a good result, almost as expected. - -At this point oatpp has shown almost constant I/O performance with respect load increase. - - -## Links - -- [oatpp repo](https://github.com/oatpp/oatpp) -- [This benchmark repo](https://github.com/oatpp/benchmark-websocket) -- [oatpp-websocket repo](https://github.com/oatpp/oatpp-websocket) diff --git a/docs/contact/README.md b/docs/contact/README.md deleted file mode 100644 index 1206a0437..000000000 --- a/docs/contact/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Contact -description: Contact team of Oat++ web framework. -sidebarDepth: 0 ---- - -# Contact - -## Communities - -- Developers chat on **Gitter**. [oat++ framework/Lobby](https://gitter.im/oatpp-framework/Lobby) -- Follow us on **Twitter** for latest news. [@oatpp_io](https://twitter.com/oatpp_io) -- Join community on **Reddit**. [r/oatpp](https://www.reddit.com/r/oatpp/) - -## Mailing - -- PR, questions, propositions, feedback, etc. - [contact@oatpp.io](mailto:contact@oatpp.io) -- Request consultancy or a tailored solution - [consultancy@oatpp.io](mailto:consultancy@oatpp.io) diff --git a/docs/contributing/README.md b/docs/contributing/README.md deleted file mode 100644 index d21d4ea8e..000000000 --- a/docs/contributing/README.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Contributing -description: Contributing to oatpp web framework. -sidebarDepth: 0 ---- - -# Contributing to Oat++ - -Thank you for your interest in the project, and for taking time to contribute. - -## How to contribute - -All kind of contributions are very welcome. - -### Join the community - -- Any questions, propositions, etc. **Email**. [contact@oatpp.io](mailto:contact@oatpp.io) -- Join discussion on **Gitter**. [oat++ framework/Lobby](https://gitter.im/oatpp-framework/Lobby) -- Follow us on **Twitter** for latest news. [@oatpp_io](https://twitter.com/oatpp_io) -- Join community on **Reddit**. [r/oatpp](https://www.reddit.com/r/oatpp/) - -### Try to use Oat++ - -- Grab example project from the [list of examples](https://github.com/oatpp/oatpp-examples) -- Take starter project and try to build something on top of it - - [Starter project with Simple API](https://github.com/oatpp/oatpp-starter) - - [Starter project with Async API](https://github.com/oatpp/oatpp-starter-async) -- Try to reproduce benchmark results [2 Million WebSockets](/benchmark/websocket/2-million/) - -### Open an issue - -Ask question or report a bug [here](https://github.com/oatpp/oatpp/issues) - -### Create a pull request - -All kind of [pull requests](https://github.com/oatpp/oatpp/pulls) are very welcome. -Even if it's just fixing typos, or adding documentation. - -*Please make sure your pull requests confirming to overall project code-style.* -*Please make sure to notify the community if you are working on an issue so we don't duplicate work!* - -### Create Oat++ extension module - -Use [oatpp-starter-module](https://github.com/oatpp/oatpp-starter-module) to create oatpp extensions. - -## Code of Conduct - -Follow [Code of Conduct](https://github.com/oatpp/oatpp/blob/master/CODE_OF_CONDUCT.md) at all times. -Please report unacceptable behavior to [oatpp.io@gmail.com](mailto:oatpp.io@gmail.com). diff --git a/docs/docs/async/README.md b/docs/docs/async/README.md deleted file mode 100644 index 001ce1a57..000000000 --- a/docs/docs/async/README.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Async API -description: About Oatpp Asynchronous API -sidebarDepth: 0 ---- - -# Async - -Roughly, the Async approach can be described as iterating through NON-BLOCKING operations in the loop. -Async operation should NOT block. If async operation blocks, it makes the entire loop and the whole Async system wait for that operation to finish. -While it brings in some challenges to code-writing, it also leads to better CPU utilization and some performance increase. - -If you go with Async approach you should always make sure: - -- That you are using NON-BLOCKING I/O. -- Calls that you make from within Async methods are NON-BLOCKING. - -All asynchronous logic in oatpp is based on [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/) and [oatpp coroutines](/docs/oatpp-coroutines/). - -Entities that provide Async API are named "**Async**Entity", Async methods are named "doSomething**Async**", -code-gen macros that generate Async code are named "MACRO_**ASYNC**" - -For better understanding and examples see [oatpp coroutines](/docs/oatpp-coroutines/) - diff --git a/docs/docs/components/api-client/README.md b/docs/docs/components/api-client/README.md deleted file mode 100644 index 4fb609132..000000000 --- a/docs/docs/components/api-client/README.md +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: ApiClient -description: HTTP calls with oatpp Api Client. -sidebarDepth: 2 ---- - -# Api Client - -`ApiClient` is the class which extends [oatpp::web::client::ApiClient](/api/latest/oatpp/web/client/ApiClient/). -It provides convenient declaration of remote API calls. - -[[toc]] - -## Declaration - -API calls are created with the help of code-gen macros. -API calls code generation section must begin with -`#include OATPP_CODEGEN_BEGIN(ApiClient)` and must be closed with -`#include OATPP_CODEGEN_END(ApiClient)`. -*Do not forget to close the code generation section in order to avoid macro conflicts later in the code!* - -```cpp -#include "oatpp/web/client/ApiClient.hpp" -#include "oatpp/core/macro/codegen.hpp" - -#include OATPP_CODEGEN_BEGIN(ApiClient) ///< Begin code-gen section - -class MyApiClient : public oatpp::web::client::ApiClient { - - API_CLIENT_INIT(MyApiClient) - - API_CALL("GET", "resource", getResource) - -}; - -#include OATPP_CODEGEN_END(ApiClient) ///< End code-gen section -``` - -## API Call Types - -There are two types of generated API calls: - -- `API_CALL` - Used with **Simple API** (multithreaded API). Generates method which returns `std::shared_ptr` - [incoming::Response](/api/latest/oatpp/web/protocol/http/incoming/Response/). -- `API_CALL_ASYNC` - Used with **Async API**. Generates `oatpp::async::CoroutineWithResult` with `std::shared_ptr` return type. -See [oatpp coroutines](/docs/oatpp-coroutines/) for more information. - - -## Declaration of API Calls - -Parameters and declarations of `API_CALL` and `API_CALL_ASYNC` are absolutely identical. The difference is in the return type only. - -```cpp -API_CALL ("", "", , ) -API_CALL_ASYNC ("", "", , ) -``` - -### Path Variables Mapping - -```cpp -API_CALL("GET", "users/{userId}", getUserById, PATH(Int64, userId)) -``` - -#### Path Variable Name Qualifier - -```cpp -API_CALL("GET", "users/{user-id}", getUserById, PATH(Int64, userId, "user-id")) -``` - -### Headers Mapping - -```cpp -API_CALL("GET", "users", getUsers, HEADER(String, userId, "X-USER-ID")) -``` - -### Query Parameters Mapping - -```cpp -API_CALL("GET", "users", getUsers, QUERY(Int32, age)) -``` - -Here the destination URL will be: - -``` -/users?age= -``` - -If more query parameters specified: - -```cpp -API_CALL("GET", "users", getUsers, QUERY(Int32, age), QUERY(String, firstName)) -``` - -the destination URL will be: - -``` -/users?age=&firstName= -``` - -#### Query Parameter Name Qualifier - -```cpp -API_CALL("GET", "users", getUsers, QUERY(Int32, age, "user-age")) -``` - -the destination URL will be: - -``` -/users?user-age= -``` - -### Body Parameter Mapping - -#### Body As String - -```cpp -API_CALL("POST", "users", createUser, BODY_STRING(String, userInfo)) -``` - -#### Body As DTO - -*DTO will be serialized using ObjectMapper given to the ApiClient constructor* - -```cpp -API_CALL("POST", "users", createUser, BODY_DTO(Object, userInfo)) -``` - -## Create Api Client - -To create API client you need `network::client::ConnectionProvider`, `web::client::RequestExecutor`, and `ObjectMapper`: - -```cpp -#include "oatpp/web/client/HttpRequestExecutor.hpp" -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" -#include "oatpp/network/tcp/client/ConnectionProvider.hpp" - -... - -using namespace oatpp::network; -using namespace oatpp::web; -using namespace oatpp::parser; - -/* create connection provider */ -auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4}); - -/* create HTTP request executor */ -auto requestExecutor = client::HttpRequestExecutor::createShared(connectionProvider); - -/* create JSON object mapper */ -auto objectMapper = json::mapping::ObjectMapper::createShared(); - -/* create API client */ -auto client = MyApiClient::createShared(requestExecutor, objectMapper); -``` - -### Connection Pool - -To use connection pool for API client requests - wrap connection provider with [ConnectionPool](/api/latest/oatpp/network/ConnectionPool/) and pass it to `RequestExecutor`: - -```cpp -#include "oatpp/network/ConnectionPool.hpp" - -... - -using namespace oatpp::network; -using namespace oatpp::web; - -/* create connection provider */ -auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4}); - -/* create connection pool */ -auto connectionPool = std::make_shared( - connectionProvider /* connection provider */, - 10 /* max connections */, - std::chrono::seconds(5) /* max lifetime of idle connection */ -); - -/* create request executor */ -auto requestExecutor = client::HttpRequestExecutor::createShared(connectionPool /* pass connection pool */); - -/* create API client */ -auto client = MyApiClient::createShared(requestExecutor, objectMapper); -``` - -### Automatic Retries - -To enable automatic retries - provide [RetryPolicy](/api/latest/oatpp/web/client/RetryPolicy/) to the API client. - -*Note: Connection pools and automatic retries can work together with no conflicts - invalid connections are dismissed from the pool right away. And after retry interval client will request a new valid connection.* - -```cpp -#include "oatpp/network/ConnectionPool.hpp" - -... - -using namespace oatpp::network; -using namespace oatpp::web; - -/* create connection provider */ -auto connectionProvider = tcp::client::ConnectionProvider::createShared({"httpbin.org", 80, oatpp::network::Address::IP_4}); - -/* create connection pool */ -auto connectionPool = std::make_shared( - connectionProvider /* connection provider */, - 10 /* max connections */, - std::chrono::seconds(5) /* max lifetime of idle connection */ -); - -/* create retry policy */ -auto retryPolicy = std::make_shared(2 /* max retries */, std::chrono::seconds(1) /* retry interval */); - -/* create request executor */ -auto requestExecutor = client::HttpRequestExecutor::createShared(connectionPool, retryPolicy /* retry policy */); - -/* create API client */ -auto client = MyApiClient::createShared(requestExecutor, objectMapper); -``` - -## Examples of code -- [https://github.com/oatpp/example-api-client](https://github.com/oatpp/example-api-client) -- [https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp](https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/Client.hpp) - diff --git a/docs/docs/components/api-controller/README.md b/docs/docs/components/api-controller/README.md deleted file mode 100644 index db823e25c..000000000 --- a/docs/docs/components/api-controller/README.md +++ /dev/null @@ -1,556 +0,0 @@ ---- -title: ApiController -description: Detailed description of REST API controllers in Oat++ Web Framework. -sidebarDepth: 2 ---- - -# Api Controller - -`ApiController` is the class which extends [oatpp::web::server::api::ApiController](/api/latest/oatpp/web/server/api/ApiController/). It implements and manages endpoints. - -[[toc]] - -## Declaration - -Endpoints are created with the help of code-gen macros. -Endpoints code generation section must begin with -`#include OATPP_CODEGEN_BEGIN(ApiController)` and must be closed with -`#include OATPP_CODEGEN_END(ApiController)`. -*Do not forget to close the code generation section in order to avoid macro conflicts later in the code!* - -```cpp -#include "oatpp/web/server/api/ApiController.hpp" -#include "oatpp/core/macro/codegen.hpp" - -#include OATPP_CODEGEN_BEGIN(ApiController) ///< Begin ApiController codegen section - -class MyController : public oatpp::web::server::api::ApiController { -public: - - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper) /* Inject object mapper */) - : oatpp::web::server::api::ApiController(objectMapper) - {} - - ENDPOINT("GET", "/", root) { - return createResponse(Status::CODE_200, "Hello World!"); - } - - // TODO - more endpoints here - -}; - -#include OATPP_CODEGEN_END(ApiController) ///< End ApiController codegen section -``` - -## Endpoint Types - -There are two types of generated endpoints: - -- `ENDPOINT` - Used with **Simple API** (multithreaded API). Generates method which returns `std::shared_ptr` -- `ENDPOINT_ASYNC` - Used with **Async API**. Generates `oatpp::async::CoroutineWithResult` with `std::shared_ptr` return type. -See [oatpp coroutines](/docs/oatpp-coroutines/) for more information. - -## ENDPOINT Specifics - -`ENDPOINT` macro has the following params: - -```cpp -ENDPOINT("", "", , ) -``` - -### Path Variables Mapping - -```cpp -ENDPOINT("GET", "/users/{userId}", getUserById, - PATH(Int64, userId)) -{ - OATPP_LOGD("Test", "userId=%d", userId->getValue()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -#### Path Variable Name Qualifier - -```cpp -ENDPOINT("GET", "/users/{my-path-variable}", getUserById, - PATH(Int64, userId, "my-path-variable")) -{ - OATPP_LOGD("Test", "userId=%d", userId->getValue()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -### Headers Mapping - -```cpp -ENDPOINT("GET", "/users", getUsers, - HEADER(String, userAgent, "User-Agent")) -{ - OATPP_LOGD("Test", "userAgent=%s", userAgent->getData()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -### Query Parameters Mapping - -```cpp -ENDPOINT("GET", "/users", getUsers, - QUERY(Int32, age)) -{ - OATPP_LOGD("Test", "age=%d", age->getValue()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -Note: -- `age` - is **required** query parameter here. **Case sensitive.** -- Accessible URL example - `/users?age=21`. - -#### Query Parameter Name Qualifier - -```cpp -ENDPOINT("GET", "/users", getUsers, - QUERY(Int32, age, "user-age")) -{ - OATPP_LOGD("Test", "age=%d", age->getValue()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -Note: -- `user-age` - is **required** query parameter here. **Case sensitive.** -- Accessible URL example - `/users?user-age=21`. - -#### Optional Query Parameters - -```cpp -ENDPOINT("GET", "/users", getUsers, - QUERIES(QueryParams, queryParams)) -{ - for(auto& param : queryParams.getAll()) { - OATPP_LOGD("param", "%s=%s", param.first.getData(), param.second.getData()); - } - return createResponse(Status::CODE_200, "OK"); -} -``` - -See also [QueryParams](/api/latest/oatpp/web/protocol/http/Http/#queryparams) data type. - -### Request Body Mapping - -#### Body As String - -```cpp -ENDPOINT("POST", "/users", postUsers, - BODY_STRING(String, userInfo)) -{ - OATPP_LOGD("Test", "body='%s'", userInfo->getData()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -Note: -- Empty body is allowed here. -- Binary data is allowed here. - -#### Body As DTO - -```cpp -ENDPOINT("POST", "/users", postUsers, - BODY_DTO(Object, userDto)) -{ - OATPP_LOGD("Test", "user-name='%s'", userDto->name->getData()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -Note: -- The body is parsed using default ObjectMapper (the one passed to the constructor of ApiController). - - -### The Whole Request Object Mapping - -```cpp -ENDPOINT("GET", "/test", testEndpoint, - REQUEST(const std::shared_ptr&, request)) -{ - OATPP_LOGD("test", "user-agent='%s'", request->getHeader("user-agent")->getData()); - return createResponse(Status::CODE_200, "OK"); -} -``` - -### Authorization - Basic - -#### Default Basic Authorization - -```cpp -using namespace oatpp::web::server::handler; - -class MyController : public oatpp::web::server::api::ApiController { -public: - - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper) /* Inject object mapper */) - : oatpp::web::server::api::ApiController(objectMapper) - { - setDefaultAuthorizationHandler(std::make_shared("my-realm")); - } - - ENDPOINT("GET", "/my/secret/resource", getResource, - AUTHORIZATION(std::shared_ptr, authObject)) - { - OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - -}; -``` - -#### Custom Basic Authorization - -##### Define Authorization Object - -```cpp -class MyAuthorizationObject : public oatpp::web::server::handler::AuthorizationObject { -public: - - MyAuthorizationObject(const oatpp::String& pUserId) - : userId(pUserId) - {} - - oatpp::String userId; - -}; -``` - -##### Define Authorization Handler - -```cpp -class MyBasicAuthorizationHandler : public oatpp::web::server::handler::BasicAuthorizationHandler { -public: - - MyBasicAuthorizationHandler() - : BasicAuthorizationHandler("my-realm") - {} - - std::shared_ptr authorize(const oatpp::String& userId, const oatpp::String& password) override { - if(userId == "admin" && password == "admin") { - return std::make_shared("uid-admin"); - } - return nullptr; - } - -}; -``` - -##### Endpoint With Custom Basic Authorization - -```cpp -class MyController : public oatpp::web::server::api::ApiController { -public: - - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper) /* Inject object mapper */) - : oatpp::web::server::api::ApiController(objectMapper) - { - setDefaultAuthorizationHandler(std::make_shared()); - } - - ENDPOINT("GET", "/my/secret/resource", getResource, - AUTHORIZATION(std::shared_ptr, authObject)) - { - OATPP_ASSERT_HTTP(authObject->userId == "uid-admin", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - -}; -``` - -### Authorization - Bearer - -#### Default Bearer Authorization - -```cpp -using namespace oatpp::web::server::handler; - -class MyController : public oatpp::web::server::api::ApiController { -public: - - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper) /* Inject object mapper */) - : oatpp::web::server::api::ApiController(objectMapper) - { - setDefaultAuthorizationHandler(std::make_shared("my-realm")); - } - - ENDPOINT("GET", "/my/secret/resource", getResource, - AUTHORIZATION(std::shared_ptr, authObject)) - { - OATPP_ASSERT_HTTP(authObject->token == "4e99e8c12de7e01535248d2bac85e732", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - -}; -``` - -#### Custom Bearer Authorization - -##### Define Authorization Object - -```cpp -class MyAuthorizationObject : public oatpp::web::server::handler::AuthorizationObject { -public: - - MyAuthorizationObject(const oatpp::String& pUserId) - : userId(pUserId) - {} - - oatpp::String userId; - -}; -``` - -##### Define Authorization Handler - -```cpp -class MyBearerAuthorizationHandler : public oatpp::web::server::handler::BearerAuthorizationHandler { -public: - - MyBearerAuthorizationHandler() - : BearerAuthorizationHandler("my-realm") - {} - - std::shared_ptr authorize(const oatpp::String& token) override { - if(token == "4e99e8c12de7e01535248d2bac85e732") { - return std::make_shared("uid-admin"); - } - return nullptr; - } - -}; -``` - -##### Endpoint With Custom Bearer Authorization - -```cpp -class MyController : public oatpp::web::server::api::ApiController { -public: - - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper) /* Inject object mapper */) - : oatpp::web::server::api::ApiController(objectMapper) - { - setDefaultAuthorizationHandler(std::make_shared()); - } - - ENDPOINT("GET", "/my/secret/resource", getResource, - AUTHORIZATION(std::shared_ptr, authObject)) - { - OATPP_ASSERT_HTTP(authObject->userId == "uid-admin", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - -}; -``` - -### Authorization - Custom - -To implement your custom Authorization - you have to extend [AuthorizationHandler](/api/latest/oatpp/web/server/handler/AuthorizationHandler/#authorizationhandler) class. - -### Authorization Handler Qualifier - -You may specify the exact `AuthorizationHandler` to be used on the endpoint. - -```cpp -class MyController : public oatpp::web::server::api::ApiController { -private: - std::shared_ptr m_basicAuthHandler = std::make_shared("my-realm"); - std::shared_ptr m_bearerAuthHandler = std::make_shared("my-realm"); -public: - - ... - - ENDPOINT("GET", "/basic/auth/resource", getBasicAuthResource, - AUTHORIZATION(std::shared_ptr, authObject, m_basicAuthHandler /* qualifier */)) - { - OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - - ENDPOINT("GET", "/bearer/auth/resource", getBearerAuthResource, - AUTHORIZATION(std::shared_ptr, authObject, m_bearerAuthHandler /* qualifier */)) - { - OATPP_ASSERT_HTTP(authObject->token == "4e99e8c12de7e01535248d2bac85e732", Status::CODE_401, "Unauthorized"); - return createResponse(Status::CODE_200, "OK"); - } - -}; -``` - - -### CORS - -#### Add CORS To Endpoint - -```cpp -ADD_CORS(getHello) -ENDPOINT("GET", "hello", getHello) { - return createResponse(Status::CODE_200, "Hello!"); -} -``` - -#### ADD_CORS Macro Params - -```cpp -ADD_CORS(, - , - , - , - -); -``` - -## ENDPOINT_ASYNC Specifics - -`ENDPOINT_ASYNC` macro has the following structure: - -```cpp -ENDPOINT_ASYNC("GET", "/", Root /* Name of the Coroutine */) { - - //shared_ptr request; - is available as a property of the class - - ENDPOINT_ASYNC_INIT(Root) ///< Generate constructor and default fields - - Action act() override { - return _return(controller->createResponse(Status::CODE_200, "Hello Async")); - } - -}; -``` - -In order to be able to access MyController's fields from the inside of the endpoint's Coroutine without additional casts add the following typedef to the controller: - -```cpp -class MyController : public oatpp::web::server::api::ApiController { -public: - typedef MyController __ControllerType; - -... -... - -}; -``` - -## Endpoint Annotation And API Documentation - -`ApiController` code-gen also supports the annotation of endpoints with additional info. -This info is then can be used to generate API documentation for Swagger-UI or for other API-documentation tools. -*For how-to integrate Swagger-UI in oatpp application, see [oatpp-swagger](/docs/modules/oatpp-swagger/)*. - -Additional endpoint info can be added in `ENDPOINT_INFO()` block. - -**example:** - -- Simple API: - ```cpp - ENDPOINT_INFO(createUser) { - info->summary = "Create new User"; - info->addConsumes>("application/json"); - info->addResponse>(Status::CODE_200, "application/json"); - } - ENDPOINT("POST", "demo/api/users", createUser, - BODY_DTO(Object, userDto)) { - return createDtoResponse(Status::CODE_200, m_database->createUser(userDto)); - } - ``` - -- Async API: - ```cpp - ENDPOINT_INFO(CreateUser) { - info->summary = "Create new User"; - info->addConsumes>("application/json"); - info->addResponse>(Status::CODE_200, "application/json"); - } - ENDPOINT_ASYNC("POST", "demo/api/users", CreateUser) { - - ENDPOINT_ASYNC_INIT(CreateUser) - - Action act() override { - return request->readBodyToDtoAsync>( - controller->getDefaultObjectMapper() - ).callbackTo(&CreateUser::returnResponse); - } - - Action returnResponse(const oatpp::Object& body){ - return _return(createDtoResponse(Status::CODE_200, m_database->createUser(userDto))); - } - - }; - ``` - -Note that endpoint-name in `ENDPOINT_INFO()` block should be the same as endpoint-name in corresponding -`ENDPOINT` or `ENDPOINT_ASYNC` block. - - -### Endpoint Parameters Annotation - -You can annotate three types of endpoint parameters: - -- Headers - can be accessed as `info->headers` -- Path Parameters - can be accessed as `info->pathParams` -- Query Parameters - can be accessed as `info->queryParams` - -Parameters have next the attributes as for [Parameter Object in OpenAPI 3.0.0 specification](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameter-object): - -|Field Name|Type|Description| -|---|---|---| -|name |`oatpp::String` |The name of the parameter. Parameter names are case sensitive.| -|description |`oatpp::String` |A brief description of the parameter.| -|required |`oatpp::Boolean` |Default value `true`. Determines whether this parameter is mandatory. If the parameter is "Path Parameter", its value MUST be `true`.| -|deprecated |`oatpp::Boolean` |Default value `false`. Specifies that a parameter is deprecated and SHOULD be transitioned out of usage.| -|allowEmptyValue |`oatpp::Boolean` |Default value `null`. Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value.| - -**Example:** -Add description to "userId" path parameter: - -```cpp - ENDPOINT_INFO(getUserById) { - // general - info->summary = "Get one User by userId"; - info->addResponse>(Status::CODE_200, "application/json"); - info->addResponse(Status::CODE_404, "text/plain"); - // params specific - info->pathParams["userId"].description = "User Identifier"; - } - ENDPOINT("GET", "demo/api/users/{userId}", getUserById, - PATH(Int32, userId)) { - auto user = m_database->getUserById(userId); - OATPP_ASSERT_HTTP(user, Status::CODE_404, "User not found"); - return createDtoResponse(Status::CODE_200, user); - } -``` - -Add parameters which are not present in the mapping - -use `add(param-name)` instead of `[]` operator: - -```cpp - ENDPOINT_INFO(ConcatParams) { - info->summary = "Example. Documenting path params for async APIs."; - info->addResponse(Status::CODE_200, "text/plain"); - info->pathParams.add("param1").description = "just the first parameter"; // add param1 info - info->pathParams.add("param2").description = "just the second parameter"; // add param2 info - } - ENDPOINT_ASYNC("GET", "/params/{param1}/{param2}", ConcatParams) { - - ENDPOINT_ASYNC_INIT(ConcatParams) - - Action act() override { - auto p1 = request->getPathVariable("param1"); - auto p2 = request->getPathVariable("param2"); - OATPP_ASSERT_HTTP(p1 && p2, Status::CODE_400, "param1 and param2 should not be null"); - return _return(controller->createResponse(Status::CODE_200, "param1 + param2 = '" + p1 + p2 + "'")); - } - - }; -``` - -### Examples and Q&A - -- [How to upload and access a file. [Endpoint documentation]. [Swagger-UI]](https://github.com/oatpp/oatpp/issues/47) -- [Simple example how to document Async-Controller endpoints with Swagger-UI](https://github.com/lganzzzo/oatpp-swagger-with-async-api) diff --git a/docs/docs/components/dto/README.md b/docs/docs/components/dto/README.md deleted file mode 100644 index 89221231a..000000000 --- a/docs/docs/components/dto/README.md +++ /dev/null @@ -1,392 +0,0 @@ ---- -title: Data Transfer Object -description: Oatpp Data-Transfer-Object (DTO) and object mapping. -sidebarDepth: 2 ---- - -# Data Transfer Object (DTO) - -DTO is any object of the class which extends [oatpp::DTO](/api/latest/oatpp/core/Types/#dto). -It is a special object which can be Serialized and Deserialized with the help of -[oatpp::data::mapping::ObjectMapper](/api/latest/oatpp/core/data/mapping/ObjectMapper/). - -[[toc]] - -## Declaration - -DTO objects are generated within DTO-code-gen section. DTO code generation section must begin with -`#include OATPP_CODEGEN_BEGIN(DTO)` and must be closed with `#include OATPP_CODEGEN_END(DTO)`. -*Do not forget to close code generation section in order to avoid macro conflicts later in the code!* - -```cpp -#include "oatpp/core/Types.hpp" -#include "oatpp/core/macro/codegen.hpp" - -#include OATPP_CODEGEN_BEGIN(DTO) ///< Begin DTO codegen section - -class User : public oatpp::DTO { - - DTO_INIT(User, DTO /* extends */) - - DTO_FIELD(String, name); - DTO_FIELD(Int32, age); - -}; - -#include OATPP_CODEGEN_END(DTO) ///< End DTO codegen section -``` - -### Field Name Qualifier - -```cpp -DTO_FIELD(String, name, "user-name"); -``` - -### Default Value - -By default all values are set to `nullptr`. You can override default values by assigning values to DTO fields. - -```cpp -DTO_FIELD(String, name) = "Ivan"; -``` - -### Additional Field Info - -```cpp -DTO_FIELD_INFO(name) { - info->description = "user first name"; //<-- Fields description is integrated with Swagger-UI. -} -DTO_FIELD(String, name) = "Ivan"; -``` - -### Declare Field As Object - -```cpp -DTO_FIELD(Object, user); -``` - -### Declare Field As List - -List of primitives: - -```cpp -DTO_FIELD(List, colors); -``` - -List of Objects: - -```cpp -DTO_FIELD(List>, colors); -``` - -### Declare Field As Map - - -Map `String --> Int32`: - -```cpp -DTO_FIELD(Fields, colors); -``` - -Map `String --> Object`: - -```cpp -DTO_FIELD(Fields>, colors); -``` - -### Core Types - -Types defined in `oatpp/core/Types.hpp`. - -#### Primitives - -|Type|Underlying Type|Default Value| -|-|-|-| -|[Int8](/api/latest/oatpp/core/Types/#int8)|`v_int8`|`nullptr`| -|[UInt8](/api/latest/oatpp/core/Types/#uint8)|`v_uint8`|`nullptr`| -|[Int16](/api/latest/oatpp/core/Types/#int16)|`v_int16`|`nullptr`| -|[UInt16](/api/latest/oatpp/core/Types/#uint16)|`v_uint16`|`nullptr`| -|[Int32](/api/latest/oatpp/core/Types/#int32)|`v_int32`|`nullptr`| -|[UInt32](/api/latest/oatpp/core/Types/#uint32)|`v_uint32`|`nullptr`| -|[Int64](/api/latest/oatpp/core/Types/#int64)|`v_int64`|`nullptr`| -|[UInt64](/api/latest/oatpp/core/Types/#uint64)|`v_uint64`|`nullptr`| -|[Float32](/api/latest/oatpp/core/Types/#float32)|`v_float32`|`nullptr`| -|[Float64](/api/latest/oatpp/core/Types/#float64)|`v_float64`|`nullptr`| -|[Boolean](/api/latest/oatpp/core/Types/#boolean)|`bool`|`nullptr`| - -##### Examples - -```cpp -oatpp::Int32 a = 32; -v_int32 va = *a; -``` - -#### Collections - -|Type|Underlying Collection|Default Value| -|-|-|-| -|[Vector<T>](/api/latest/oatpp/core/Types/#vector)|`std::vector`|`nullptr`| -|[List<T>](/api/latest/oatpp/core/Types/#list)|`std::list`|`nullptr`| -|[UnorderedSet<T>](/api/latest/oatpp/core/Types/#unorderedset)|`std::unordered_set`|`nullptr`| -|[Fields<T>](/api/latest/oatpp/core/Types/#fields)|`std::list>`|`nullptr`| -|[UnorderedFields<T>](/api/latest/oatpp/core/Types/#unorderedfields)|`std::unordered_map`|`nullptr`| - -##### Examples - -```cpp -oatpp::Vector porridges = {"Owsianka", "Stirabout", "Zabkása"}; -for(auto& porridge : *porridges) { - ... -} -``` - -#### Special Types - -|Type|Underlying Type|Default Value| -|-|-|-| -|[String](/api/latest/oatpp/core/Types/#string)|[oatpp::base::StrBuffer](/api/latest/oatpp/core/base/StrBuffer/)|`nullptr`| -|[Object<T>](/api/latest/oatpp/core/Types/#object)|class which extends [oatpp::DTO](/api/latest/oatpp/core/Types/#dto)|`nullptr`| -|[Enum<T>](/api/latest/oatpp/core/Types/#enum)|`enum` declared via [ENUM](/api/latest/oatpp/codegen/dto/enum_define/#enum)|`nullptr`| -|[Any](/api/latest/oatpp/core/Types/#any)|any other mapping-enabled type|`nullptr`| - -##### Examples - -```cpp -oatpp::Object dto = MyDto::createShared(); -oatpp::Any any = dto; -... -auto dto = any.retrieve>(); // throws `std::runtime_error` if stored type doesn't match. -``` - -### Custom Types - -To simplify the integration of custom types with oatpp Object-Mapping framework the "**Type Interpretation**" feature was introduced. -*For information about custom object mapping contact us in [dev-chat](https://gitter.im/oatpp-framework/Lobby)* - -Let's say you have some struct that is not part of oatpp object-mapping framework. - -```cpp -struct VPoint { - v_int32 x; - v_int32 y; - v_int32 z; -}; -``` - -To integrate it with oatpp object-mapping you can do the following: - -```cpp -namespace __class { - class PointClass; -} - -/* Declare ObjectWrapper for your type */ -/* Mapping-Enabled Point */ -typedef oatpp::data::mapping::type::Primitive Point; - -namespace __class { - - /** - * Type info - */ - class PointClass { - private: - - /** - * Type interpretation - */ - class Inter : public oatpp::Type::Interpretation> { - public: - - oatpp::UnorderedFields interpret(const Point& value) const override { - return {{"x", value->x}, {"y", value->y}, {"z", value->z}}; - } - - Point reproduce(const oatpp::UnorderedFields map) const override { - return Point({map["x"], map["y"], map["z"]}); - } - - }; - - public: - - static const oatpp::ClassId CLASS_ID; - - static oatpp::Type* getType(){ - static Type type(CLASS_ID, nullptr, nullptr, {{"my-types", new Inter()}} /* <-- Add type interpretation */ ); - return &type; - } - - }; - - const oatpp::ClassId PointClass::CLASS_ID("my-types::Point"); - -} -``` - -Now the "Point" struct can be serialized/deserialized with object mappers. - -```cpp -oatpp::parser::json::mapping::ObjectMapper mapper; - -{ - auto config = mapper.getSerializer()->getConfig(); - config->enabledInterpretations = {"my-types"}; // Enable "my-types" for serializer -} - -{ - auto config = mapper.getDeserializer()->getConfig(); - config->enabledInterpretations = {"my-types"}; // Enable "my-types" for deserializer -} - -Point point ({1, 2, 3}); // Create mapping-enabled Point - -auto json = mapper.writeToString(point); // Serialize Point -auto pointClone = mapper.readFromString(json); // Deserialize Point -``` - -**Note:** Type interpretations work through all framework components including REST framework, ORM, and Swagger-UI. - -## Example - -### Serialize / Deserialize - -#### Define DTO - -```cpp -#include "oatpp/core/Types.hpp" -#include "oatpp/core/macro/codegen.hpp" - -#include OATPP_CODEGEN_BEGIN(DTO) ///< Begin DTO codegen section - -class User : public oatpp::DTO { - - DTO_INIT(User, DTO /* extends */) - - DTO_FIELD(String, name, "First-Name"); - DTO_FIELD(String, surname, "Family-Name"); - DTO_FIELD(Int32, age); - DTO_FIELD(Fields>>, familyMembers); ///< Map> - DTO_FIELD(Fields, additionalNotes); ///< Map - -}; - -#include OATPP_CODEGEN_END(DTO) ///< End DTO codegen section -``` - -#### Create object and set fields - -```cpp -/* create user */ -auto user = User::createShared(); -user->name = "Ivan"; -user->surname = "Ovsyanochka"; -user->age = 24; -user->familyMembers = {}; // Initialize empty map. -user->additionalNotes = {}; // Initialize empty map. - -/* create user */ -auto brother = User::createShared(); -brother->name = "Yuriy"; -brother->surname = "Ovsyanochka"; -brother->age = 30; - -/* create user */ -auto sister = User::createShared(); -sister->name = "Kate"; -sister->surname = "Ovsyanochka"; -sister->age = 20; - -/* create list of siblings */ -oatpp::List> siblings = {brother, sister}; - -user->familyMembers->push_back({"siblings", siblings}); -user->additionalNotes->push_back({"Education", "Master of Computer Science"}); -``` - -#### Create JSON object mapper - -```cpp -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" - -... - -/* create json ObjectMapper with default configs */ -auto jsonObjectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); -``` - -#### Serialize user to json - -```cpp -oatpp::String json = jsonObjectMapper->writeToString(user); -OATPP_LOGD("json", "value='%s'", json->c_str()); ///< print json -``` - -output: - -```json -{ - "First-Name": "Ivan", - "Family-Name": "Ovsyanochka", - "age": 24, - "familyMembers": { - "siblings": [ - { - "First-Name": "Yuriy", - "Family-Name": "Ovsyanochka", - "age": 30, - "familyMembers": null, - "additionalNotes": null - }, - { - "First-Name": "Kate", - "Family-Name": "Ovsyanochka", - "age": 20, - "familyMembers": null, - "additionalNotes": null - } - ] - }, - "additionalNotes": { - "Education": "Master of Computer Science" - } -} -``` -*Please note: example of above output is beautified with [oatpp::parser::json::Beautifier](/api/latest/oatpp/parser/json/Beautifier/)*. - -#### Deserizalize from String - -```cpp -auto cloneOfUser = jsonObjectMapper->readFromString>(json); -``` - -### Use JSON Beautifier - -Without the use of beautifier the json serializer output will contain no spaces nor newline character: - -```json -{"First-Name":"Ivan","Family-Name":"Ovsyanochka","age":24 ... -``` - -In order to beautify json output set `useBeautifier = true` in serializer config: - -```cpp -/* create serializer and deserializer configurations */ -auto serializeConfig = oatpp::parser::json::mapping::Serializer::Config::createShared(); -auto deserializeConfig = oatpp::parser::json::mapping::Deserializer::Config::createShared(); - -/* enable beautifier */ -serializeConfig->useBeautifier = true; - -/* create json object mapper with serializer config */ -auto jsonObjectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(serializeConfig, deserializeConfig); -``` - -More about json object mapper configuration see: - -- [Serializer::Config](/api/latest/oatpp/parser/json/mapping/Serializer/#serializer-config) -- [Deserializer::Config](/api/latest/oatpp/parser/json/mapping/Deserializer/#deserializer-config) - -## Examples of code - -[https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp](https://github.com/oatpp/oatpp-consul/blob/master/src/oatpp-consul/rest/DTOs.hpp) diff --git a/docs/docs/components/orm/README.md b/docs/docs/components/orm/README.md deleted file mode 100644 index 1e8742be3..000000000 --- a/docs/docs/components/orm/README.md +++ /dev/null @@ -1,527 +0,0 @@ ---- -title: Oat++ ORM -description: About Oat++ object-relational mapping (ORM) framework. -sidebarDepth: 2 ---- - -# Object-Relational Mapping (ORM) Framework - -:::tip -Have got any questions - ask them in the [Devs Chat on Gitter](https://gitter.im/oatpp-framework/Lobby) -::: - -Oat++ ORM framework is a set of generalized interfaces and their implementations to make it easy to work with databases. - -It's based on an [object-mapping framework](/docs/components/dto/) and ensures data consistency when manipulating with data. -Also, it integrates perfectly with other Oat++ components ensuring seamless data-flow in the application -(example: from REST to database, from the database to REST). - -[[toc]] - -## High-Level Overview - -### Declare DbClient - -The main component you are going to work with is the [DbClient](/api/latest/oatpp/orm/DbClient/). -You may treat it as the main point interfacing with your data. Here you declare database queries and manage database schema migrations. - -Database queries are declared with the help of code-gen macros. -DbClient code generation section must begin with -`#include OATPP_CODEGEN_BEGIN(DbClient)` and must be closed with -`#include OATPP_CODEGEN_END(DbClient)`. -*Do not forget to close the code generation section in order to avoid macro conflicts later in the code!* - -```cpp -#include "oatpp/orm/SchemaMigration.hpp" -#include "oatpp/orm/DbClient.hpp" -#include "oatpp/core/macro/codegen.hpp" - -#include OATPP_CODEGEN_BEGIN(DbClient) ///< Begin code-gen section - -class MyClient : public oatpp::orm::DbClient { -public: - - MyClient(const std::shared_ptr& executor) - : oatpp::orm::DbClient(executor) - {} - - QUERY(createUser, - "INSERT INTO users (username, email, role) VALUES (:username, :email, :role);", - PARAM(oatpp::String, username), - PARAM(oatpp::String, email), - PARAM(oatpp::Enum::AsString, role)) - - QUERY(getUserByName, - "SELECT * FROM users WHERE username=:username;", - PARAM(oatpp::String, username)) - -}; - -#include OATPP_CODEGEN_END(DbClient) ///< End code-gen section -``` - -### Create DbClient Component And Connect to Database - -DbClient is a heavy object - you want to instantiate it once and then inject it in whatever places you are going to use it. - -```cpp -#include "db/MyClient.hpp" //< User-declared DbClient -#include "oatpp-sqlite/orm.hpp" //< SQLite adapter for oatpp ORM - -class AppComponent { -public: - - /** - * Create DbClient component. - * SQLite is used as an example here. For other databases declaration is similar. - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, myDatabaseClient)([] { - - /* Create database-specific ConnectionProvider */ - auto connectionProvider = std::make_shared("/path/to/database.sqlite"); - - /* Create database-specific Executor */ - auto executor = std::make_shared(connectionProvider); - - /* Create MyClient database client */ - return std::make_shared(executor); - - }()); - -}; -``` - -**Note:** -- `ConnectionProvider` and `ConnectionPool` objects can be reused by multiple `Executors` unless it's -prohibited by a database-specific implementation. -- `Executor` can be reused by multiple DbClients unless it's prohibited by a database-specific implementation. - - -### DbClient Usage Example - -```cpp -/* Inject MyClient database client */ -OATPP_COMPONENT(std::shared_ptr, client); - -/* Create new user in the database */ -client->createUser("admin", "admin@domain.com", UserRoles::ADMIN); - -/* Find user by username in the database */ -auto result = client->getUserByUsername("admin"); - -/* Retrieve query result as a vector of UserDto objects */ -/* Of cause, UserDto had to be previously defined */ -/* You can also use oatpp::Fields - instead of oatpp::Object for any arbitrary result */ -auto dataset = result->fetch>>(); - -/* And we can easily serialize result as a json string using json object mapper */ -auto json = jsonObjectMapper.writeToString(dataset); - -/* Print the resultant json */ -std::cout << json->c_str() << std::endl; -``` - -Output: - -```json -[ - { - "name": "admin", - "email": "admin@domain.com", - "role": "ROLE_ADMIN" - } -] -``` - -## Supported Databases - -### Available Database Adaptors - -|Adaptor|Database|Limitations|Example Project| -|---|---|---|---| -|[oatpp-sqlite](https://github.com/oatpp/oatpp-sqlite)|SQLite|**Full feature support**|[example-crud](https://github.com/oatpp/example-crud)| -|[oatpp-postgresql](https://github.com/oatpp/oatpp-postgresql)|PostgreSQL|Doesn't support all postgres types|[example-postgresql](https://github.com/oatpp/example-postgresql)| - - -### Libraries Hierarchy - -The main **oatpp** module contains ORM interfaces only. In order to "plug" a specific database, -you have to link the corresponding adaptor (ex.: **oatpp-sqlite**). - -``` -- oatpp # The main oatpp module. ORM interfaces are here. - | - |- oatpp-sqlite # Sqlite adapter for oatpp ORM. Sqlite-specific implementation is here. - |- oatpp-postgresql # PostgreSQL adapter for oatpp ORM. PostgreSQL-specific implementation is here. - ... - ... etc. -``` - -## DbClient - -### Declare a Query - -```cpp -QUERY(selectAllUsers, "SELECT * FROM users;") -``` - -### Query With Parameters - -```cpp -QUERY(selectUserByUsername, - "SELECT * FROM users WHERE username=:username;", - PARAM(oatpp::String, username)) -``` - -During execution the expression `username=:username` will be changed to `username=''` and -parameter value will be properly escaped according to its type. - -### Query With DTO as a Parameter - -For complex queries, it's more convenient to use DTO objects as for parameters set. Thus you ensure the correct order of arguments. - -```cpp -QUERY(insertUser, - "INSERT INTO users " - "(username, email, role) VALUES " - "(:user.username, :user.email, :user.role);", - PARAM(oatpp::Object, user)) -``` - -**Note:** -The query template variable names are now starting with `user`, like `user.username` - -where `user` is the name of the DTO parameter, and `username` is the name of DTO field. - -- **Yes**, you can specify a path to nested DTO fields like `:user.path.to.nested.field`. -- **Yes**, you can have multiple DTO parameters in the query, and you can mix DTO parameters with regular parameters. - - -### Query With Prepared Statement - -```cpp -QUERY(selectUserByUsername, - "SELECT * FROM users WHERE username=:username;", - PREPARE(true), //<-- set prepare to `true` to use a prepared statement. - PARAM(oatpp::String, username)) -``` - -**Note**: -The database adapter may ignore this. -For example: -- SQLite is always using prepared statements to execute queries thus **oatpp-sqlite** will ignore this parameter. -- PostgreSQL has a special method to execute prepared statements thus **oatpp-postgresql** will not ignore this parameter. - -### Execute An Arbitrary Query - -To execute an arbitrary query use [DbClient::executeQuery()](/api/latest/oatpp/orm/DbClient/#dbclient-executequery) method. -Use this method when it's needed to dynamically build a query. - -```cpp -auto dbResult = client.executeQuery("SELECT * FROM users;", {} /* empty params map */); -``` - -You can add parameters using parameters map: - -```cpp -auto dbResult = client.executeQuery( - "SELECT * FROM users WHERE id=:id AND username=:username;", - { - {"id", oatpp::Int64(23)}, ///< Yes, you have to explicitly specify parameter type here - oatpp::Int64 - {"username", oatpp::String("admin")} ///< Yes, you have to explicitly specify parameter type here - oatpp::String - } -); -``` - -When building parameters map dynamically you have to use `std::unordered_map::insert()` method. -The `[]` operator WON'T work. - -```cpp -std::unordered_map params; -params.insert({"id", oatpp::Int64(23)}); -params.insert({"username", oatpp::String("admin")}); -auto dbResult = client.executeQuery("SELECT * FROM users WHERE id=:id AND username=:username;", params); -``` - -To build a query string it's recommended to use [oatpp::data::stream::BufferOutputStream](/api/latest/oatpp/core/data/stream/BufferStream/#bufferoutputstream). - -```cpp -#include "oatpp/core/data/stream/BufferStream.hpp" - -... - -oatpp::data::stream::BufferOutputStream stream; -stream -<< "SELECT * FROM users " -<< "WHERE " -<< "id=:id" << " AND " << "username=:username" << ";" - -std::unordered_map params; -params.insert({"id", oatpp::Int64(23)}); -params.insert({"username", oatpp::String("admin")}); - -auto dbResult = client.executeQuery(stream.toString(), params); -``` - -### Enable Type Interpretations - -When using custom or non-standard types as parameters in `QUERY` macro, -as well as when reading query results to custom/non-standard structures, you have to -explicitly enable corresponding type interpretations. - -The recommended place to do it - is the constructor: - -```cpp -class MyClient : public oatpp::orm::DbClient { -public: - - MyClient(const std::shared_ptr& executor) - : oatpp::orm::DbClient(executor) - { - setEnabledInterpretations({"protobuf"}); - } - - ... - -}; -``` - -#### Query With Custom Type Parameter - -```cpp -QUERY(insertUser, - "INSERT INTO users " - "(username, email, role) VALUES " - "(:user.username, :user.email, :user.role);", - PARAM(oatpp::protobuf::Object, user)) // Pass protobuf object -``` - -#### Map Query Result To Custom Type - -```cpp -/* Execute query */ -auto result = client->getUserByUsername("admin"); - -/* Map result to a vector of protobuf objects */ -auto dataset = res->fetch>>(); // Map result - -for(auto& user : *dataset) { - ... -} -``` - -### Transactions - -Use [DbClient::beginTransaction()](/api/latest/oatpp/orm/DbClient/#dbclient-begintransaction) method to begin a transaction. -All queries MUST be executed on the same transaction connection. - -```cpp -{ - auto transaction = client.beginTransaction(); - - client.insertUser(user1, transaction.getConnection()); - client.insertUser(user2, transaction.getConnection()); - client.insertUser(user3, transaction.getConnection()); - - transaction.commit(); -} -``` - -**Note:** -Transaction will be automatically rollback if [Transaction::commit()](/api/latest/oatpp/orm/Transaction/#transaction-commit) method -was not called. - - -## Executing Queries - -```cpp -/* Execute a query */ -auto queryResult = client.selectAllUsers(); - -/* Check if the operation was successful */ -if(!queryResult->isSuccess()) { - auto message = queryResult->getErrorMessage(); - OATPP_LOGD("Query", "Error, message=%s", message->c_str()); -} - -/* Fetch everything as a vector of User objects */ -auto dataset = queryResult->fetch>>(); -``` - -The `queryResult` here is the [oatpp::orm::QueryResult](/api/latest/oatpp/orm/QueryResult/) object. -All queries return `oatpp::orm::QueryResult`. - -### Mapping Results - -Available result mappings depend on the database adapter but here are some examples (that work for oatpp-sqlite and oatpp-postgresql)... - -#### Map everything using previously decalred `UserDto` and display results - -For more info on how to declare a DTO - see [oatpp::DTO](/docs/components/dto/) - -```cpp -auto dataset = queryResult->fetch>>(); - -/* Serialize result as a json string using json object mapper */ -auto json = jsonObjectMapper.writeToString(dataset); - -/* Print the resultant json */ -std::cout << json->c_str() << std::endl; -``` - -Output: - -```json -[ - { - "name": "admin", - "email": "admin@domain.com", - "role": "ROLE_ADMIN" - }, - { - "name": "ivan", - "email": "ivan@domain.com", - "role": "ROLE_GUEST" - } -] -``` - -#### Map everything using `oatpp::Any` and display results - -```cpp -auto dataset = queryResult->fetch>>(); - -/* Serialize result as a json string using json object mapper */ -auto json = jsonObjectMapper.writeToString(dataset); - -/* Print the resultant json */ -std::cout << json->c_str() << std::endl; -``` - -Output: - -```json -[ - { - "name": "admin", - "email": "admin@domain.com", - "role": "ROLE_ADMIN" - }, - { - "name": "ivan", - "email": "ivan@domain.com", - "role": "ROLE_GUEST" - } -] -``` - -### Managing Connections - -All declared queries have an [oatpp::orm::Connection](/api/latest/oatpp/orm/Connection/) as the last parameter. -If the connection is not specified(`nullptr`), then the new connection will be opened to execute that query. - -```cpp -{ - auto queryResult = client.selectAllUsers(); //< Open a new connection. -} - -{ - auto connection = client.getConnection(); - auto queryResult = client.selectAllUsers(connection); //< Execute using the connection provided. -} - -{ - auto queryResult = client.selectAllUsers(); //< Open a new connection. - ... - queryResult = client.insertUser(user, queryResult->getConnection()); //< Execute on the same connection as the last query. -} -``` - -**Note:** - -The `queryResult` object holds a connection. The connection won't return to the connection pool until `queryResult` is destroyed. - -## Connection Pool - -It's always a good idea to use a connection pool when working with a database. - -```cpp -#include "db/MyClient.hpp" -#include "oatpp-sqlite/orm.hpp" - -class AppComponent { -public: - - /** - * Create DbClient component. - * SQLite is used as an example here. For other databases declaration is similar. - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, myDatabaseClient)([] { - /* Create database-specific ConnectionProvider */ - auto connectionProvider = std::make_shared("/path/to/database.sqlite"); - - /* Create database-specific ConnectionPool */ - auto connectionPool = oatpp::sqlite::ConnectionPool::createShared(connectionProvider, - 10 /* max-connections */, - std::chrono::seconds(5) /* connection TTL */); - - /* Create database-specific Executor */ - auto executor = std::make_shared(connectionPool); - - /* Create MyClient database client */ - return std::make_shared(executor); - }()); - -}; -``` - -**Note:** -SQLite is used as an example here. For other databases declaration is similar. - -## Schema Migration - -Use [SchemaMigration](/api/latest/oatpp/orm/SchemaMigration/) to do schema migrations! -The recommended place to do schema migrations is the constructor of your DbClient. - -### Overview - -```cpp -class MyClient : public oatpp::orm::DbClient { -public: - - MyClient(const std::shared_ptr& executor) - : oatpp::orm::DbClient(executor) - { - oatpp::orm::SchemaMigration migration(executor); - migration.addFile(1 /* version */, "sql/initial_schema.sql" /* migration script */); - migration.addFile(2 /* version */, "sql/schema_fix_1.sql" /* migration script */); - ... - migration.migrate(); //<-- This guy will throw on error. - } - - ... - -}; -``` - -**Note:** - -- Version MUST start from `1`. -- Version MUST be incremented by `1`. -- In case of an error changes will be rolled back to the last successfully applied version. - -### Schema Name - -If you have multiple Schemas in your database you can manage migrations of each one independently. -For this specify a version control table suffix: - -```cpp -oatpp::orm::SchemaMigration migration(executor, "suffix"); -``` - -**Note:** -It is recommended to have one DbClient per schema! - -## Examples projects - -- [example-crud](https://github.com/oatpp/example-crud) - Using oatpp ORM with SQLite. -- [example-postgresql](https://github.com/oatpp/example-postgresql) - Using oatpp ORM with PostgreSQL. diff --git a/docs/docs/features/upload-file/README.md b/docs/docs/features/upload-file/README.md deleted file mode 100644 index 8c33e7b65..000000000 --- a/docs/docs/features/upload-file/README.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Upload File -description: How to upload files to server using oatpp web framework. -sidebarDepth: 0 ---- - -# Upload File - -[[toc]] - -## Upload and stream to file -```cpp - -#include "oatpp/core/data/stream/FileStream.hpp" - -... - -ENDPOINT("POST", "/upload", upload, REQUEST(std::shared_ptr, request)) { - oatpp::data::stream::FileOutputStream fileOutputStream("/path/to/file"); - request->transferBodyToStream(&fileOutputStream); // transfer body chunk by chunk - return createResponse(Status::CODE_200, "OK"); -} -``` - -## Simple API Multipart Upload - -### Store Part In Memory - -```cpp - - #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - #include "oatpp/web/mime/multipart/PartList.hpp" - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - -ENDPOINT("POST", "upload/multipart", uploadMultipart, - REQUEST(std::shared_ptr, request)) -{ - - /* Prepare multipart container. */ - auto multipart = std::make_shared(request->getHeaders()); - - /* Create multipart reader. */ - multipart::Reader multipartReader(multipart.get()); - - /* Configure to read part with name "part1" into memory */ - multipartReader.setPartReader("part1", multipart::createInMemoryPartReader(256 /* max-data-size */)); - - /* Read multipart body */ - request->transferBody(&multipartReader); - - /* Print value of "part1" */ - auto part1 = multipart->getNamedPart("part1"); - - /* Assert part is not null */ - OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null"); - - /* Print part value */ - OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str()); - - return createResponse(Status::CODE_200, "OK"); - -} - -``` - -### Stream Part To File - -```cpp - - #include "oatpp/web/mime/multipart/FileStreamProvider.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - #include "oatpp/web/mime/multipart/PartList.hpp" - - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - - ENDPOINT("POST", "upload/multipart", uploadMultipart, - REQUEST(std::shared_ptr, request)) - { - - /* Prepare multipart container. */ - auto multipart = std::make_shared(request->getHeaders()); - - /* Create multipart reader. */ - multipart::Reader multipartReader(multipart.get()); - - /* Configure to stream part with name "part1" to file */ - multipartReader.setPartReader("part1", multipart::createFilePartReader("/path/to/file")); - - /* Read multipart body */ - request->transferBody(&multipartReader); - - /* Print value of "part1" */ - auto part1 = multipart->getNamedPart("part1"); - - /* Assert part is not null */ - OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null"); - - /* Get part data input stream */ - auto inputStream = part1->getInputStream(); - - // TODO - process file stream. - - return createResponse(Status::CODE_200, "OK"); - - } - -``` - -### Complete Example - -```cpp - - #include "oatpp/web/mime/multipart/FileStreamProvider.hpp" - #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - #include "oatpp/web/mime/multipart/PartList.hpp" - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - - ENDPOINT("POST", "test/multipart-all", uploadMultipart, - REQUEST(std::shared_ptr, request)) - { - - /* Prepare multipart container. */ - auto multipart = std::make_shared(request->getHeaders()); - - /* Create multipart reader. */ - multipart::Reader multipartReader(multipart.get()); - - /* Configure to read part with name "part1" into memory */ - multipartReader.setPartReader("part1", multipart::createInMemoryPartReader(256 /* max-data-size */)); - - /* Configure to stream part with name "part2" to file */ - multipartReader.setPartReader("part2", multipart::createFilePartReader("/path/to/file")); - - /* Configure to read all other parts into memory */ - multipartReader.setDefaultPartReader(multipart::createInMemoryPartReader(16 * 1024 /* max-data-size */)); - - /* Read multipart body */ - request->transferBody(&multipartReader); - - /* Print number of uploaded parts */ - OATPP_LOGD("Multipart", "parts_count=%d", multipart->count()); - - /* Get part by name "part1" */ - auto part1 = multipart->getNamedPart("part1"); - - /* Assert part is not null */ - OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null"); - - /* Print in-memory value of "part1" */ - OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str()); - - /* Get part by name "part2"*/ - auto filePart = multipart->getNamedPart("part2"); - - /* Assert part is not null */ - OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part2 is null"); - - /* Get part data input stream */ - auto inputStream = filePart->getInputStream(); - - // TODO - process file stream. - - return createResponse(Status::CODE_200, "OK"); - - } - -``` - -## Async API Multipart Upload - -### Async Store Part In Memory - -```cpp - #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - - ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) { - - ENDPOINT_ASYNC_INIT(MultipartUpload) - - /* Coroutine State */ - std::shared_ptr m_multipart; - - Action act() override { - - m_multipart = std::make_shared(request->getHeaders()); - auto multipartReader = std::make_shared(m_multipart); - - /* Configure to read part with name "part1" into memory */ - multipartReader->setPartReader("part1", multipart::createAsyncInMemoryPartReader(256 /* max-data-size */)); - - /* Read multipart body */ - return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded)); - - } - - Action onUploaded() { - - /* Get multipart by name */ - auto part1 = m_multipart->getNamedPart("part1"); - - /* Asser part not-null */ - OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null"); - - /* Print value of "part1" */ - OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str()); - - return _return(controller->createResponse(Status::CODE_200, "OK")); - - } - - }; -``` - -### Async Stream Part To File - -```cpp - #include "oatpp/web/mime/multipart/FileStreamProvider.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - - ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) { - - ENDPOINT_ASYNC_INIT(MultipartUpload) - - /* Coroutine State */ - std::shared_ptr m_multipart; - - Action act() override { - - m_multipart = std::make_shared(request->getHeaders()); - auto multipartReader = std::make_shared(m_multipart); - - /* Configure to stream part with name "part1" to file */ - multipartReader->setPartReader("part1", multipart::createAsyncFilePartReader("/path/to/file")); - - /* Read multipart body */ - return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded)); - - } - - Action onUploaded() { - - /* Get multipart by name */ - auto filePart = m_multipart->getNamedPart("part1"); - - /* Asser part not-null */ - OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part1 is null"); - - /* Get part data input stream */ - auto inputStream = filePart->getInputStream(); - - // TODO - process file stream. - - return _return(controller->createResponse(Status::CODE_200, "OK")); - - } - - }; -``` - -### Async Complete Example - - -```cpp - #include "oatpp/web/mime/multipart/FileStreamProvider.hpp" - #include "oatpp/web/mime/multipart/InMemoryPartReader.hpp" - #include "oatpp/web/mime/multipart/Reader.hpp" - - ... - - namespace multipart = oatpp::web::mime::multipart; - - ... - - ENDPOINT_ASYNC("POST", "test/multipart-all", MultipartUpload) { - - ENDPOINT_ASYNC_INIT(MultipartUpload) - - /* Coroutine State */ - std::shared_ptr m_multipart; - - Action act() override { - - m_multipart = std::make_shared(request->getHeaders()); - auto multipartReader = std::make_shared(m_multipart); - - /* Configure to read part with name "part1" into memory */ - multipartReader->setPartReader("part1", multipart::createAsyncInMemoryPartReader(256 /* max-data-size */)); - - /* Configure to stream part with name "part2" to file */ - multipartReader->setPartReader("part2", multipart::createAsyncFilePartReader("/path/to/file")); - - /* Configure to read all other parts into memory */ - multipartReader->setDefaultPartReader(multipart::createAsyncInMemoryPartReader(16 * 1024 /* max-data-size */)); - - /* Read multipart body */ - return request->transferBodyAsync(multipartReader).next(yieldTo(&MultipartUpload::onUploaded)); - - } - - Action onUploaded() { - - /* Print number of uploaded parts */ - OATPP_LOGD("Multipart", "parts_count=%d", m_multipart->count()); - - /* Get multipart by name */ - auto part1 = m_multipart->getNamedPart("part1"); - - /* Asser part not-null */ - OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null"); - - /* Print value of "part1" */ - OATPP_LOGD("Multipart", "part1='%s'", part1->getInMemoryData()->c_str()); - - /* Get multipart by name */ - auto filePart = m_multipart->getNamedPart("part2"); - - /* Asser part not-null */ - OATPP_ASSERT_HTTP(filePart, Status::CODE_400, "part2 is null"); - - /* Get part data input stream */ - auto inputStream = filePart->getInputStream(); - - // TODO - process file stream. - - return _return(controller->createResponse(Status::CODE_200, "OK")); - - } - - }; -``` diff --git a/docs/docs/installation/conan/README.md b/docs/docs/installation/conan/README.md deleted file mode 100644 index 14e5a6d12..000000000 --- a/docs/docs/installation/conan/README.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Installation with Conan -description: Get oatpp using Conan -sidebarDepth: 0 ---- - -# Conan - -Check out the community-maintained Conan packages! - -- [Conan Website](https://conan.io/) - learn more about conan. -- [Available Packages](https://conan.io/center/) - Search for 'oatpp'. - -## Credits - -[nicraMarcin](https://github.com/nicraMarcin), -[theirix](https://github.com/theirix), -[hoxnox](https://github.com/hoxnox), -[SpaceIm](https://github.com/SpaceIm), -[Alberto-Izquierdo](https://github.com/Alberto-Izquierdo), -[frek818](https://github.com/frek818) \ No newline at end of file diff --git a/docs/docs/installation/unix-linux/README.md b/docs/docs/installation/unix-linux/README.md deleted file mode 100644 index 3a0a0954c..000000000 --- a/docs/docs/installation/unix-linux/README.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Installation on Unix/Linux -description: Installing oatpp web framework on Unix/Linux -sidebarDepth: 0 ---- - -# Installation on Unix/Linux - -The installation process of Oat++ is simple and straightforward. -If you have all [prerequisites](#prerequisites) installed, jump straight to [Install Oat++](#install-oat). - -[[TOC]] - -## Prerequisites - -- Git -- C++ compiler supporting C++ version >= 11. -- Make -- CMake version >= 3.1 - -For details see [Installing Prerequisites](#installing-prerequisites). - -## Install Oat++ - -Once all prerequisites installed - install Oat++: - -```bash -$ git clone https://github.com/oatpp/oatpp.git -$ cd oatpp/ - -$ mkdir build && cd build - -$ cmake .. -$ make install -``` - -### Installation CMake options: - -|Option|Default|Description| -|---|---|---| -|`CMAKE_BUILD_TYPE`|`Debug`|Build type.| -|`BUILD_SHARED_LIBS`|`OFF`|Leave this option to `OFF`. Oat++ is meant to be used as a static library.| -|`OATPP_BUILD_TESTS`|`ON`|Set it to `OFF` to disable tests build.| -|`OATPP_LINK_ATOMIC`|`OFF`|Explicitly link `libatomic`. This flag is ignored for: MSVC, MINGW, APPLE, FreeBSD.| -|`OATPP_DISABLE_ENV_OBJECT_COUNTERS`|`OFF`|If `ON`, do not count oatpp objects (do not detect memory-leaks). This will increase performance.
**Note:** DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.| -|`OATPP_DISABLE_POOL_ALLOCATIONS`|`OFF`|If `ON`, do not use oatpp memory-pools.| -|`OATPP_COMPAT_BUILD_NO_THREAD_LOCAL`|`OFF`|Build without `thread_local` feature. See [#81](https://github.com/oatpp/oatpp/issues/81).| - -## Installing Prerequisites - -### Ubuntu - -Install prerequisites: - -```bash -$ apt-get install git -$ apt-get install cmake -$ apt-get install build-essential -``` - -### CentOS - -Install prerequisites: - -```bash -$ yum install git -$ yum install cmake -$ yum install gcc gcc-c++ make -$ yum install libatomic -``` - -### Fedora - -Install prerequisites: - -```bash -$ yum install git -$ yum install cmake -$ yum install gcc gcc-c++ make -$ yum install libatomic -``` - -### Alpine - -Install prerequisites: - -```bash -$ apk add git -$ apk add cmake -$ apk add g++ -$ apk add make -``` - -### Arch - -Install prerequisites: - -```bash -$ pacman -S git -$ pacman -S make -$ pacman -S cmake -$ pacman -S gcc -``` - -## Patches - -Some platforms may require patching of build-scripts to properly install oatpp. -You may find what you need in the following repos: - -- **OpenWRT** - see [Oat++ OpenWRT feed](https://github.com/oatpp/oatpp-openwrt-feed) - containing build-scripts, options and patches for applications, modules and libraries provided by Oat++. -- **NixOS** - see [Oat++ NixOS feed](https://github.com/oatpp/oatpp-nixos-feed) - collection of patches to properly install -oatpp on NixOS. Special thanks to David Ibbitson - [dibbitson](https://github.com/dibbitson). diff --git a/docs/docs/installation/vcpkg/README.md b/docs/docs/installation/vcpkg/README.md deleted file mode 100644 index 100a9db34..000000000 --- a/docs/docs/installation/vcpkg/README.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Installation with Vcpkg -description: Get oatpp using Vcpkg -sidebarDepth: 0 ---- - -# Vcpkg - -The community maintained ports are available for the majority of oatpp modules. - -- [Vcpkg Website](https://docs.microsoft.com/en-us/cpp/build/vcpkg) - learn more about vcpkg. -- [Available Ports](https://vcpkg.info/) - Search for 'oatpp'. - -## Credits - -- Special thanks to [mheyman](https://github.com/mheyman) -- [KaungZawHtet](https://github.com/KaungZawHtet), [NancyLi1013](https://github.com/NancyLi1013) \ No newline at end of file diff --git a/docs/docs/installation/windows/README.md b/docs/docs/installation/windows/README.md deleted file mode 100644 index f575def5e..000000000 --- a/docs/docs/installation/windows/README.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Installation on Windows -description: Installing oatpp web framework on Windows -sidebarDepth: 0 ---- - -# Installation on Windows - -## Requirements - -- Microsoft Visual Studio (Tested with Visual Studio 2022) -- CMake (Latest version recommended) -- Git - -## Install Oat++ -Build at an administrator command prompt. - -```bash -$ git clone https://github.com/oatpp/oatpp.git -$ cd oatpp\ -$ MD build -$ cd build\ - -$ cmake .. -$ cmake --build . --target INSTALL -``` - -### Installation CMake options: - -|Option|Default|Description| -|---|---|---| -|`CMAKE_BUILD_TYPE`|`Debug`|Build type.| -|`BUILD_SHARED_LIBS`|`OFF`|Leave this option to `OFF`. Oat++ is meant to be used as a static library.| -|`OATPP_BUILD_TESTS`|`ON`|Set it to `OFF` to disable tests build.| -|`OATPP_DISABLE_ENV_OBJECT_COUNTERS`|`OFF`|If `ON`, do not count oatpp objects (do not detect memory-leaks). This will increase performance.
**Note:** DO NOT use this flags to build/run application tests, as tests won't detect memory-leaks.| -|`OATPP_DISABLE_POOL_ALLOCATIONS`|`OFF`|If `ON`, do not use oatpp memory-pools.| -|`OATPP_COMPAT_BUILD_NO_THREAD_LOCAL`|`OFF`|Build without `thread_local` feature. See [#81](https://github.com/oatpp/oatpp/issues/81).| - -## Application build notes - -To build Oat++ applications under Windows do the following. - -- Add this code to the main program after all the `#includes`: -```cpp -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif -``` - diff --git a/docs/docs/modules/oatpp-consul/README.md b/docs/docs/modules/oatpp-consul/README.md deleted file mode 100644 index b83eb3555..000000000 --- a/docs/docs/modules/oatpp-consul/README.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: oatpp-consul (module) -description: Oatpp module for Consul integration. Consul API client. -sidebarDepth: 0 ---- -# oatpp-consul - -[Github Repository](https://github.com/oatpp/oatpp-consul) -[Example Project](/examples/consul/) - -**oatpp-consul** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides [Consul](https://www.consul.io/) integration for oatpp applications. - -### KV - -```cpp - -#include "oatpp-consul/Client.hpp" - -... - - /* request executor should be previously initialized */ - auto client = oatpp::consul::Client::createShared(requestExecutor); - - /* put value */ - client->kvPut("key1", "value1"); - - /* get value */ - auto value = client->kvGet("key1"); - - /* print value */ - OATPP_LOGD("consul", "value='%s'", value->c_str()); - - /* get kv metadata */ - auto meta = client->kvGetMetadata("key1"); - - /* decode and pring value from metadata */ - OATPP_LOGD("consul", "value='%s'", meta->getValueDecoded()->c_str()); - -... - -``` - -### Register Service - -```cpp - -#include "oatpp-consul/Client.hpp" - -... - - /* request executor should be previously initialized */ - auto client = oatpp::consul::Client::createShared(requestExecutor); - - /* get oatpp::consul::rest::Client */ - auto restClient = client->getRestClient(); - - auto checkPayload = oatpp::consul::rest::AgentCheckRegisterPayload::createShared(); - checkPayload->id = "service_check_id"; - checkPayload->name = "service_check_name"; - checkPayload->notes = "Check on the MyService/Health endpoint"; - checkPayload->http = "http://localhost:8000/check/health"; - checkPayload->method = "GET"; - checkPayload->interval = "30s"; - checkPayload->timeout = "15s"; - - auto payload = oatpp::consul::rest::AgentServiceRegisterPayload::createShared(); - payload->id = "service_id"; - payload->name = "service_name"; - payload->port = 8000; - payload->check = checkPayload; - - /* make API call */ - auto response = restClient->agentServiceRegister(payload); - - OATPP_LOGD("consul", "response='%s'", response->readBodyToString()->c_str()); - -... -``` - diff --git a/docs/docs/modules/oatpp-curl/README.md b/docs/docs/modules/oatpp-curl/README.md deleted file mode 100644 index 114e054f2..000000000 --- a/docs/docs/modules/oatpp-curl/README.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: oatpp-curl (module) -description: Oatpp RequestExecutor for oatpp ApiClient based on libcurl. -sidebarDepth: 0 ---- - -# oatpp-curl - -[Github Repository](https://github.com/oatpp/oatpp-curl) -[Example Project](/examples/api-client/) - -**oatpp-curl** - extension of [oatpp](/docs/modules/oatpp/) module. -It is a wrapper over the libcurl. It adapts libcurl to be used as a [RequestExecutor](/api/latest/oatpp/web/client/RequestExecutor/) for [ApiClient](/docs/components/api-client/). -Supports both "Simple" and "Async" oatpp APIs. - -## Requires - -libcurl installed. - -## oatpp ApiClient ? - -oatpp ```ApiClient``` is a mechanism which enables you to generate Web Api Clients in declarative manner. -Under the hood it uses provided ```RequestExecutor``` (ex.: ```oatpp::curl::RequestExecutor```) to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes. -*Roughly you may treat oatpp ```ApiClient``` as Java Retrofit for C++.* - -### Example - -*This example is partially taken from [oatpp-consul](https://github.com/oatpp/oatpp-consul) implementation* - -#### Declare ApiClient - -Declare ```ApiClient``` for remote service using code-generation - -```cpp -class MyApiClient : public oatpp::web::client::ApiClient { -#include OATPP_CODEGEN_BEGIN(ApiClient) - - API_CLIENT_INIT(DemoApiClient) - - API_CALL("GET", "v1/kv/{key}", kvGet, PATH(String, key)) - API_CALL("GET", "v1/kv/{key}", kvGetInDC, PATH(String, key), QUERY(String, datacenter, "dc")) - - API_CALL("GET", "v1/kv/{key}?raw", kvGetRaw, PATH(String, key)) - API_CALL("GET", "v1/kv/{key}?raw&dc={dc}", kvGetRawInDC, PATH(String, key), PATH(String, datacenter, "dc")) - - API_CALL("PUT", "v1/kv/{key}", kvPut, PATH(String, key), BODY_STRING(String, data)) - API_CALL("PUT", "v1/kv/{key}", kvPutInDC, PATH(String, key), BODY_STRING(String, data), QUERY(String, datacenter, "dc")) - -#include OATPP_CODEGEN_END(ApiClient) -}; -``` - -#### Create ApiClient instance - -Create MyApiClient instance and configure it to use ```oatpp::curl::RequestExecutor``` - -```cpp -/* Create ObjectMapper for serialization of DTOs */ -auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); - -/* Create oatpp-curl RequestExecutor with baseUrl */ -auto requestExecutor = oatpp::curl::RequestExecutor::createShared("http://localhost:8500/"); - -/* Instantiate MyApiClient */ -auto myApiClient = MyApiClient::createShared(requestExecutor, objectMapper); -``` - -#### Make calls - -```cpp - -// like that... - -auto value = myApiClient->kvGetRaw("key")->readBodyToString(); -OATPP_LOGD("response", "value='%s'", value->c_str()); - -// or like that... - -auto response = myApiClient->kvPut("key", "some-value"); -if(response->statusCode == 200){ - auto body = response->readBodyToString(); - if(body && body == "true") { - OATPP_LOGD("response", "value successfully saved"); - } -} -``` - -## More - -- [oatpp-examples/ApiClient-Demo](https://github.com/oatpp/oatpp-examples/tree/master/ApiClient-Demo) - Full example project. ApiClient to ```http://httpbin.org/``` API with Sync and Async examples. -- [oatpp-consul](https://github.com/oatpp/oatpp-consul) - oatpp-consul integration based on ```ApiClient```. diff --git a/docs/docs/modules/oatpp-libressl/README.md b/docs/docs/modules/oatpp-libressl/README.md deleted file mode 100644 index 12c6c3d26..000000000 --- a/docs/docs/modules/oatpp-libressl/README.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: oatpp-libressl (module) -description: Secure server and client connection providers for oatpp applications. Based on LibreSSL. -sidebarDepth: 0 ---- - -# oatpp-libressl - -[Github Repository](https://github.com/oatpp/oatpp-libressl) -[Example Project](/examples/libressl/) - -**oatpp-libressl** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides secure server and client connection providers for oatpp applications. Based on [LibreSSL](https://www.libressl.org/). -Supports both "Simple" and "Async" oatpp APIs. - -## Requires - -- **LibreSSL** - minimum version 3.0.0 - -## Example - -See: [Full example project TLS-Libressl](https://github.com/oatpp/example-libressl) - -### Create server connection provider - -```cpp - -#include "oatpp-libressl/server/ConnectionProvider.hpp" -#include "oatpp-libressl/Config.hpp" - -... - -const char* crtFile = "path/to/file.crt"; -const char* pemFile = "path/to/file.pem"; - -auto config = oatpp::libressl::Config::createDefaultServerConfigShared(crtFile, pemFile /* private key */); -auto connectionProvider = oatpp::libressl::server::ConnectionProvider::createShared(config, 8443); - -``` - -### Create client connection provider - -```cpp - -#include "oatpp-libressl/client/ConnectionProvider.hpp" -#include "oatpp-libressl/Config.hpp" - -... - -auto config = oatpp::libressl::Config::createShared(); -auto connectionProvider = oatpp::libressl::client::ConnectionProvider::createShared(config, "httpbin.org", 443); - -``` - -## Don't forget! - -Set libressl lockingCallback and SIGPIPE handler on program start! - -```cpp - -#include "oatpp-libressl/Callbacks.hpp" - -... - -/* set lockingCallback for libressl */ -oatpp::libressl::Callbacks::setDefaultCallbacks(); - -``` - -```cpp -#include - -... - -/* ignore SIGPIPE */ -std::signal(SIGPIPE, SIG_IGN); -``` - -## See more - -- [oatpp-mbedtls](/docs/modules/oatpp-mbedtls/) diff --git a/docs/docs/modules/oatpp-mbedtls/README.md b/docs/docs/modules/oatpp-mbedtls/README.md deleted file mode 100644 index 9db72f579..000000000 --- a/docs/docs/modules/oatpp-mbedtls/README.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: oatpp-mbedtls (module) -description: Secure server and client connection providers for oatpp applications. Based on MbedTLS. -sidebarDepth: 0 ---- - -# oatpp-mbedtls - -[Github Repository](https://github.com/oatpp/oatpp-mbedtls) - -**oatpp-mbedtls** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides secure server and client connection providers for oatpp applications. Based on [MbedTLS](https://tls.mbed.org/). -Supports both "Simple" and "Async" oatpp APIs. - -## Requires - -MbedTLS installed. - -## APIs - -### Server - -#### ConnectionProvider - -Create `ConnectionProvider` - -```cpp -const char* serverCertificateFile = "path/to/server/certificate"; -const char* serverPrivateKeyFile = "path/to/server/private/key"; - -/* Create Config */ -auto config = oatpp::mbedtls::Config::createDefaultServerConfigShared(serverCertificateFile, serverPrivateKeyFile); - -/* Create Secure Connection Provider */ -auto connectionProvider = oatpp::mbedtls::server::ConnectionProvider::createShared(config, 443 /* port */); - -/* Get Secure Connection Stream */ -auto connection = connectionProvider->getConnection(); -``` - -#### Custom Transport Stream - -Create `ConnectionProvider` with custom transport stream. - -```cpp -const char* serverCertificateFile = "path/to/server/certificate"; -const char* serverPrivateKeyFile = "path/to/server/private/key"; - -/* Create Config */ -auto config = oatpp::mbedtls::Config::createDefaultServerConfigShared(serverCertificateFile, serverPrivateKeyFile); - -/* Create Transport Stream Provider */ -/* Replace With Your Custom Transport Stream Provider */ -auto transportStreamProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 443, oatpp::network::Address::IP_4}); - -/* Create Secure Connection Provider */ -auto connectionProvider = oatpp::mbedtls::server::ConnectionProvider::createShared(config, transportStreamProvider); - -/* Get Secure Connection Stream over Custom Transport Stream */ -auto connection = connectionProvider->getConnection(); -``` - -**Note:** To use `oatpp-mbedtls` for server connections with custom transport stream you should implement: - -- [oatpp::network::ServerConnectionProvider](https://oatpp.io/api/latest/oatpp/network/ConnectionProvider/#serverconnectionprovider). -- [oatpp::data::stream::IOStream](https://oatpp.io/api/latest/oatpp/core/data/stream/Stream/#iostream) - to be returned by `ConnectionProvider`. - -### Client - -#### ConnectionProvider - -Create `ConnectionProvider` - -```cpp -/* Create Config */ -auto config = oatpp::mbedtls::Config::createDefaultClientConfigShared(); - -/* Create Secure Connection Provider */ -auto connectionProvider = oatpp::mbedtls::client::ConnectionProvider::createShared(config, "httpbin.org", 443 /* port */); - -/* Get Secure Connection Stream */ -auto connection = connectionProvider->getConnection(); -``` - -#### Custom Transport Stream - -Create `ConnectionProvider` with custom transport stream. - -```cpp -/* Create Config */ -auto config = oatpp::mbedtls::Config::createDefaultClientConfigShared(); - -/* Create Transport Stream Provider */ -/* Replace With Your Custom Transport Stream Provider */ -auto transportStreamProvider = oatpp::network::tcp::client::ConnectionProvider::createShared({"httpbin.org", 443, oatpp::network::Address::IP_4}); - -/* Create Secure Connection Provider */ -auto connectionProvider = oatpp::mbedtls::client::ConnectionProvider::createShared(config, transportStreamProvider); - -/* Get Secure Connection Stream over Custom Transport Stream */ -auto connection = connectionProvider->getConnection(); -``` - -**Note:** To use `oatpp-mbedtls` for client connections with custom transport stream you should implement: - -- [oatpp::network::ClientConnectionProvider](https://oatpp.io/api/latest/oatpp/network/ConnectionProvider/#clientconnectionprovider). -- [oatpp::data::stream::IOStream](https://oatpp.io/api/latest/oatpp/core/data/stream/Stream/#iostream) - to be returned by `ConnectionProvider`. - - -## See more - -- [oatpp-libressl](/docs/modules/oatpp-libressl/) diff --git a/docs/docs/modules/oatpp-mongo/README.md b/docs/docs/modules/oatpp-mongo/README.md deleted file mode 100644 index 1ea99b16f..000000000 --- a/docs/docs/modules/oatpp-mongo/README.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: oatpp-mongo (module) -description: Oat++ native BSON + MongoDB driver implementation based on Oat++ object-mapping sub-framework. -sidebarDepth: 0 ---- - -# oatpp-mongo - -[Github Repository](https://github.com/oatpp/oatpp-mongo) -[Example Project](https://github.com/oatpp/example-mongodb) - -:::warning -- **BSON ObjectMapper** - is ready-to-use. -- **Database driver** - is **in development**. While you can do basic CRUD operations, it's still on POC stage. API is not ready and it's not recommended to use. -To work with MongoDB - use BSON ObjectMapper + mongocxx driver. -::: - -**oatpp-mongo** is the oatpp native client for MongoDB. It contains DTO to BSON mapper plus database driver. - -Find the complete example project using **oatpp-mongo** [here](https://github.com/oatpp/example-mongodb) - -## How To Build - -`oatpp-mongo` has no extrernal dependencies (*The main oatpp module is still required*). -`libmongoxcc` is used (and linked) in module **tests only**. Use `-DOATPP_BUILD_TESTS=OFF` option to build without tests and without dependency on `libmongoxcc`. - -### Install oatpp-mongo - -- Clone this repository. -- In the root of the repository run: - - ```bash - mkdir build && cd build - cmake -DOATPP_BUILD_TESTS=OFF .. - make install - ``` - -## API - -### Temporary API (using libmongoxcc) - -Since oatpp driver is not ready yet, you can use `libmongoxcc` together with oatpp BSON. - -**Why using oatpp BSON?** - because it's based on oatpp object-mapping framework and -it's **extremely easy to use**. - -#### Create `bsonxx::document` From Any oatpp Object - -```cpp -/** - * This is the utility function that you'll need while working libmongoxcc - */ -bsoncxx::document::value Database::createMongoDocument(const oatpp::Void &polymorph) { - // if you have huge docs, you may want to increase starting BufferOutputStream size. - // Or you may want to use oatpp::data::stream::ChunkedBuffer instead - for no-copy growth. - oatpp::data::stream::BufferOutputStream stream; - - m_objectMapper.write(&stream, polymorph); //< Serialize oatpp object to BSON. - - bsoncxx::document::view view(stream.getData(), stream.getCurrentPosition()); - return bsoncxx::document::value(view); -} -``` - -Where `m_objectMapper` - is `oatpp::mongo::bson::mapping::ObjectMapper`. - -#### Insert Document - -Let's say you have such DTO defined: - -```cpp -class User : public oatpp::DTO { - - DTO_INIT(User, DTO) - - DTO_FIELD(String, _id); - DTO_FIELD(String, username); - DTO_FIELD(Boolean, active); - DTO_FIELD(String, role); - -}; -``` - -Then you can insert your DTO in the database like this: - -```cpp -collection.insert_one(createMongoDocument(myDto)); -``` - -You can also insert an arbitrary document using `oatpp::Any` - -```cpp -collection.insert_one(createMongoDocument( - oatpp::Fields({ - - {"username", oatpp::String("Mr. Porridge")}, - {"role", oatpp::String("Admin")}, - {"jacket-color", oatpp::List({"red", "green", "blue"})} - - }) -)); -``` - -#### Read Document - -Let's say we have the same DTO - `User`: - -```cpp - auto result = - collection.find_one(createMongoDocument( // <-- Filter - oatpp::Fields({ - {"_id", oatpp::String("")} - }) - )); - - if(result) { - auto view = result->view(); - auto bson = oatpp::String((const char*)view.data(), view.length(), false /* to not copy view data */); - auto user = m_objectMapper.readFromString>(bson); - // TODO - do somthing with user:) - // You can then serialize it to JSON using oatpp::parser::json::mapping::ObjectMapper - } -``` - -## Examples - -- [example-mongodb](https://github.com/oatpp/example-mongodb) - CRUD with MongoDB and Swagger-UI. diff --git a/docs/docs/modules/oatpp-postgresql/README.md b/docs/docs/modules/oatpp-postgresql/README.md deleted file mode 100644 index 51a402e4b..000000000 --- a/docs/docs/modules/oatpp-postgresql/README.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: oatpp-postgresql (module) -description: PostgreSQL adapter for Oat++ ORM -sidebarDepth: 0 ---- - -# oatpp-postgresql - -[Github Repository](https://github.com/oatpp/oatpp-postgresql) -[Example Project](https://github.com/oatpp/example-postgresql) - -PostgreSQL adapter for Oat++ ORM.. -*Note: this alpha version, which means that not all PostgreSQL data-types are supported.* - -## Build And Install - -*Note: you need to install the main [oatpp](https://github.com/oatpp/oatpp) module and PostgreSQL dev package first.* - -- Clone this repository. -- In the root of the repository run: - ```bash - mkdir build && cd build - cmake .. - make install - ``` - -## API - -Detailed documentation on Oat++ ORM you can find [here](https://oatpp.io/docs/components/orm/). - -### Connect to Database - -All you need to start using oatpp ORM with PostgreSQL is to create `oatpp::postgresql::Executor` and provide it to your `DbClient`. - -```cpp -#include "db/MyClient.hpp" -#include "oatpp-postgresql/orm.hpp" - -class AppComponent { -public: - - /** - * Create DbClient component. - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, myDatabaseClient)([] { - /* Create database-specific ConnectionProvider */ - auto connectionProvider = std::make_shared(""); - - /* Create database-specific ConnectionPool */ - auto connectionPool = oatpp::postgresql::ConnectionPool::createShared(connectionProvider, - 10 /* max-connections */, - std::chrono::seconds(5) /* connection TTL */); - - /* Create database-specific Executor */ - auto executor = std::make_shared(connectionPool); - - /* Create MyClient database client */ - return std::make_shared(executor); - }()); - -}; -``` diff --git a/docs/docs/modules/oatpp-sqlite/README.md b/docs/docs/modules/oatpp-sqlite/README.md deleted file mode 100644 index 44156f07e..000000000 --- a/docs/docs/modules/oatpp-sqlite/README.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: oatpp-sqlite (module) -description: SQLite adapter for Oat++ ORM -sidebarDepth: 0 ---- - -# oatpp-sqlite - -[Github Repository](https://github.com/oatpp/oatpp-sqlite) -[Example Project](https://github.com/oatpp/example-crud) - -SQLite adapter for Oat++ ORM. - -## Build And Install - -*Note: you need to install the main [oatpp](https://github.com/oatpp/oatpp) module first.* - -- Clone this repository. -- In the root of the repository run: - ```bash - mkdir build && cd build - cmake .. - make install - ``` - -*This module uses [SQLite amalgamation](https://www.sqlite.org/amalgamation.html) which will be installed as a part of this module.* - -## API - -Detailed documentation on Oat++ ORM you can find [here](https://oatpp.io/docs/components/orm/). - -### Connect to Database - -All you need to start using oatpp ORM with SQLite is to create `oatpp::sqlite::Executor` and provide it to your `DbClient`. - -```cpp -#include "db/MyClient.hpp" -#include "oatpp-sqlite/orm.hpp" - -class AppComponent { -public: - - /** - * Create DbClient component. - * SQLite is used as an example here. For other databases declaration is similar. - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, myDatabaseClient)([] { - /* Create database-specific ConnectionProvider */ - auto connectionProvider = std::make_shared("/path/to/database.sqlite"); - - /* Create database-specific ConnectionPool */ - auto connectionPool = oatpp::sqlite::ConnectionPool::createShared(connectionProvider, - 10 /* max-connections */, - std::chrono::seconds(5) /* connection TTL */); - - /* Create database-specific Executor */ - auto executor = std::make_shared(connectionPool); - - /* Create MyClient database client */ - return std::make_shared(executor); - }()); - -}; -``` diff --git a/docs/docs/modules/oatpp-ssdp/README.md b/docs/docs/modules/oatpp-ssdp/README.md deleted file mode 100644 index 202fd2aec..000000000 --- a/docs/docs/modules/oatpp-ssdp/README.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: oatpp-ssdp (module) -description: Oat++ extension module to work with SSDP protocol. -sidebarDepth: 0 ---- - -# oatpp-ssdp - -[Github Repository](https://github.com/oatpp/oatpp-ssdp) -[Example Project](https://github.com/oatpp/example-iot-hue-ssdp) - -Oat++ extension module to work with SSDP (Simple Service Discovery Protocol) protocol. - -## Build And Install - -*Note: you need to install the main [oatpp](https://github.com/oatpp/oatpp) module first.* - - -- Clone this repository. -- In the root of the repository run: - ```bash - mkdir build && cd build - cmake .. - make install - ``` - -## API - -### Declare Necessary Components - -In the `AppComponent.hpp` file: - -```cpp -#include "oatpp-ssdp/SimpleSsdpUdpStreamProvider.hpp" -#include "oatpp-ssdp/SsdpStreamHandler.hpp" - -... - -/** - * Create provider of SSDP-UDP packets stream. - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, ssdpStreamProvider)("ssdp", [] { - return oatpp::ssdp::SimpleSsdpUdpStreamProvider::createShared(); -}()); - -/** - * We can reuse the HttpRouter for SSDP since SSDP message is complient to HTTP1.1. - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, ssdpRouter)("ssdp", [] { - return oatpp::web::server::HttpRouter::createShared(); -}()); - -/** - * Create SsdpStreamHandler component which uses Router component to route requests. - * It looks like a normal ConnectionHandler but is specialized on SsdpStreams and returns something conceptually very different - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, ssdpStreamHandler)("ssdp", [] { - OATPP_COMPONENT(std::shared_ptr, router, "ssdp"); // get Router component - return oatpp::ssdp::SsdpStreamHandler::createShared(router); -}()); -``` - -### Run SSDP Server - -In the `App.cpp` file: - -```cpp -/* Get stream provider component */ -OATPP_COMPONENT(std::shared_ptr, ssdpStreamProvider, "ssdp"); - -/* Get stream handler component */ -OATPP_COMPONENT(std::shared_ptr, ssdpStreamHandler, "ssdp"); - -/* Create server which takes provided streams and passes them to stream handler */ -oatpp::network::Server server(ssdpStreamProvider, ssdpStreamHandler); - -/* Priny info about server port */ -OATPP_LOGD("Server", "Running SSDP on port %s...", ssdpStreamProvider->getProperty("port").getData()); - -/* Run server */ -server.run(); -``` - -### Handle SSDP Messages - -In the `Controller.hpp` file: - -```cpp -/** - * Other devices that want to discover you send 'M-SEARCH *' SSDP packages. - * You have to answer with a corresponding packet on this discovery. - */ -ENDPOINT("M-SEARCH", "*", star) { - auto response = createResponse(Status::CODE_200, "" /* empty body */); - // TODO - add correct response headers. - return response; -} -``` diff --git a/docs/docs/modules/oatpp-swagger/README.md b/docs/docs/modules/oatpp-swagger/README.md deleted file mode 100644 index 247ad0140..000000000 --- a/docs/docs/modules/oatpp-swagger/README.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: oatpp-swagger (module) -description: Swagger UI. Auto-generate api-docs for oatpp Api Controllers. -sidebarDepth: 0 ---- - -# oatpp-swagger - -[Github Repository](https://github.com/oatpp/oatpp-swagger) -[Example Project](/examples/crud/) - -**oatpp-swagger** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides [Swagger-UI](https://swagger.io/tools/swagger-ui/) for oatpp applications. -Supports both "Simple" and "Async" oatpp APIs. - -## Brief - -- Use ```oatpp::swagger::Controller``` with ```oatpp::web::server::HttpConnectionHandler``` -- Use ```oatpp::swagger::AsyncController``` with ```oatpp::web::server::AsyncHttpConnectionHandler``` - -- Swagger UI location - ```http://localhost:/swagger/ui``` -- OpenApi 3.0.0 specification location - ```http://localhost:/api-docs/oas-3.0.0.json``` - -If you are using ```oatpp::web::server::api::ApiController``` most parts of your endpoints are documented automatically like: - -- Endpoint name -- Parameters -- Request Body - -You may add more information to your endpoint like follows: - -```cpp -ENDPOINT_INFO(createUser) { - info->summary = "Create new User"; - info->addConsumes>("application/json"); - info->addResponse>(Status::CODE_200, "application/json"); -} -ENDPOINT("POST", "demo/api/users", createUser, - BODY_DTO(Object, userDto)) { - return createDtoResponse(Status::CODE_200, m_database->createUser(userDto)); -} -``` - -More about endpoint annotation and API documentation [read here](/docs/components/api-controller/#endpoint-annotation-and-api-documentation). - -### How to add Swagger UI to your project - -1) Add ```oatpp::swagger::DocumentInfo``` and ```oatpp::swagger::Resources``` components to your AppComponents: - -```cpp -/** - * General API docs info - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo)([] { - - oatpp::swagger::DocumentInfo::Builder builder; - - builder - .setTitle("User entity service") - .setDescription("CRUD API Example project with swagger docs") - .setVersion("1.0") - .setContactName("Ivan Ovsyanochka") - .setContactUrl("https://oatpp.io/") - - .setLicenseName("Apache License, Version 2.0") - .setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0") - - .addServer("http://localhost:8000", "server on localhost"); - - return builder.build(); - -}()); - - -/** - * Swagger-Ui Resources (/lib/oatpp-swagger/res) - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerResources)([] { - // Make sure to specify correct full path to oatpp-swagger/res folder !!! - return oatpp::swagger::Resources::loadResources("/lib/oatpp-swagger/res"); -}()); - -``` - -2) Create ```oatpp::swagger::Controller``` with list of endpoints you whant to document and add it to router: - -```cpp -auto swaggerController = oatpp::swagger::Controller::createShared(); -router->addController(swaggerController); -``` - -**Done!** diff --git a/docs/docs/modules/oatpp-websocket/README.md b/docs/docs/modules/oatpp-websocket/README.md deleted file mode 100644 index e25bcec19..000000000 --- a/docs/docs/modules/oatpp-websocket/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: oatpp-websocket (module) -description: Websocket server and websocket client. -sidebarDepth: 0 ---- - -# oatpp-websocket - -[Github Repository](https://github.com/oatpp/oatpp-websocket) - -**oatpp-websocket** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides WebSocket server and client functionality. -Supports both "Simple" and "Async" oatpp APIs. - -## API - -| API| Server|Client| -|---|:---:|:---:| -|Simple| + | + | -|Async | + | + | diff --git a/docs/docs/modules/oatpp-zlib/README.md b/docs/docs/modules/oatpp-zlib/README.md deleted file mode 100644 index b1721e687..000000000 --- a/docs/docs/modules/oatpp-zlib/README.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: oatpp-zlib (module) -description: Module oatpp-zlib provides functionality for compressing/decompressing content with deflate and gzip. -sidebarDepth: 0 ---- - -# oatpp-zlib - -[Github Repository](https://github.com/oatpp/oatpp-zlib) - -**oatpp-zlib** - extension of [oatpp](/docs/modules/oatpp/) module. -It provides functionality for compressing/decompressing content with `deflate` and `gzip`. -Supports both "Simple" and "Async" oatpp APIs. - -## How To Build - -### Requires - -- ZLib installed. - -#### Install ZLib - -```bash -sudo apt-get install zlib1g-dev -``` - -### Install oatpp-zlib - -Clone this repository. In the root of the repository run: - -```bash -mkdir build && cd build -cmake .. -make install -``` - -## APIs - -### Automatically Compress Served Content - -Configure `server::ConnectionHandler` in `AppComponent.hpp`. - -```cpp -#include "oatpp-zlib/EncoderProvider.hpp" - -... - - -OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - - /* Create HttpProcessor::Components */ - auto components = std::make_shared(router); - - /* Add content encoders */ - auto encoders = std::make_shared(); - - encoders->add(std::make_shared()); - encoders->add(std::make_shared()); - - /* Set content encoders */ - components->contentEncodingProviders = encoders; - - /* return HttpConnectionHandler */ - return std::make_shared(components); - -}()); - -... -``` - -Now served content will be automatically compressed and streamed to the client if the client sets `Accept-Encoding` header appropriately. - -### Automatically Decompress Uploaded Content - -Configure `server::ConnectionHandler` in `AppComponent.hpp`. - -```cpp -#include "oatpp-zlib/EncoderProvider.hpp" -#include "oatpp/web/protocol/http/incoming/SimpleBodyDecoder.hpp" - -... - -OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - - /* Create HttpProcessor::Components */ - auto components = std::make_shared(router); - - /* Add content decoders */ - auto decoders = std::make_shared(); - - decoders->add(std::make_shared()); - decoders->add(std::make_shared()); - - /* Set Body Decoder */ - components->bodyDecoder = std::make_shared(decoders); - - /* return HttpConnectionHandler */ - return std::make_shared(components); - -}()); - -... -``` - -Now uploaded content will be automatically decompressed if the client sets `Content-Encoding` header properly. diff --git a/docs/docs/modules/oatpp/README.md b/docs/docs/modules/oatpp/README.md deleted file mode 100644 index d050b323c..000000000 --- a/docs/docs/modules/oatpp/README.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: oatpp (module) -description: Main oatpp module and it's functionality -sidebarDepth: 0 ---- - -# Module oatpp - -[Github Repository](https://github.com/oatpp/oatpp) - -`oatpp` - Main module. Other modules depend on it. - -## Inside - -- Rest framework (`ApiController`, `ApiClient`) -- Simple DI framework -- Object Mapping framework -- Simple Test framework (`oatpp-test` library) -- Asynchronous Server -- Multithreaded Server -- HTTP 1.1 - -## Examples using standalone `oatpp` module - -- [HTTP Live Streaming Server](/examples/hls-media-stream/) -- [Asynchronous API](/examples/async-api/) \ No newline at end of file diff --git a/docs/docs/monolithization/README.md b/docs/docs/monolithization/README.md deleted file mode 100644 index b8001067e..000000000 --- a/docs/docs/monolithization/README.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Monolithization -description: Monolithization of microservices in Oat++ Web Framework. -sidebarDepth: 2 ---- - -# Monolithization - -Monolithization is the technique that enables you to scale your microservices better. -You can develop regular microservices in Oat++, and when there is a little to no load in your system, -you can consolidate your services in a single monolith. Also, consolidated services perform better and consume less memory. -Thus you can reduce your infrastructure costs by reducing network overhead and minimizing the number of running instances. - -The best way to understand Monolithization and how it works is through example. - -[[toc]] - -## Example - -Consider the following system consisting of three trivial microservices: - -- User Service -- Book Service -- Facade - -Example microservices system - -Facade requests user information from User-Service, book information from Book-Service. Then merges the data and returns to the client. - -## The Problem - -When there is a little load in this system, there is no need to scale its parts. -Thus it would be better to have this system as a monolith in order not to spawn multiple instances or containers. -But you want to keep microservices architecture, in order to be flexible in the future when there is a load. - -You could probably deploy all services on a single instance running in separate processes. -But in this case, it's additional dev-ops effort. Plus, you still have the network overhead, as communicating through localhost decreases performance. - - -## The Concept of Monolithization - -The concept is simple. - We are going to put all the services in a single process. -And we are going to make services communicate through the Oat++ **virtual connections**. - -Monolithization concept - -The Oat++ virtual connections substitute the network transport layer, so that your application logic can stay isolated. -And they utilize internal buffers so that there is no network overhead as in case of communicating through the localhost. - -### Service Interfaces - -Consolidated services can keep their network interfaces, to be available for remote services. -And they have to expose the virtual interface to communicate with consolidated services via virtual connections. - -Service interfaces - -### Build Pipeline - -The good thing is that you don't have to change your build pipeline. Each team can develop its microservices independently from others. -All you need to do is to create a monolithic configuration for each set of microservices you want to consolidate. - -Build pipeline - -### Scaling - -With Monolithization, you can scale gradually. -Step by step, adding new monolithic deployments and decoupling your monolith into smaller pieces so that you can achieve the best configuration for your cloud. - - - - - - - - - - - - -
Step 1Step 2Step 3
Scaling step 1Scaling step 2Scaling step 3
- -## Performance - -Below is the performance comparison of Oat++ microservices(deployed on the same instance) versus same microservices consolidated via Monolithization. - -Performance test setup - -### Requests Per Second - -Requests per second - -### Memory Usage (Mb) - -||Facade|User Service|Book Service|Total| -|---|---|---|---|---| -|Oat++ (micro-svc) idle|25|3 |3 |31 | -|Oat++ (micro-svc) load|45|3.2|3.2|49.4| -|Oat++ (monolith) idle |- |- |- |26.7| -|Oat++ (monolith) load |- |- |- |37.7| - - -## Links - -[Example Project Repository](https://github.com/oatpp/example-microservices) diff --git a/docs/docs/oatpp-coroutines/README.md b/docs/docs/oatpp-coroutines/README.md deleted file mode 100644 index 169f8974f..000000000 --- a/docs/docs/oatpp-coroutines/README.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Coroutines -description: Coroutines and Async Executor in Oat++ (AKA oatpp) web framework. -sidebarDepth: 0 ---- - -# Coroutines in Oat++ - -Coroutines in Oat++ are not regular coroutines. -Oat++ implements custom stateless coroutines with scheduling. Scheduling gives additional space for optimization and better CPU utilization. - -Coroutines in Oat++ are executed via [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/). On each iteration, coroutine returns an -[oatpp::async::Action](/api/latest/oatpp/core/async/Coroutine/#action) which tells executor what to do next. -Based on the Action, the Oat++ async processor reschedules coroutines to the corresponding worker. - -## Async Executor - -The [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/) allocates three groups of workers with the specified number of threads for each group. - -```cpp -oatpp::async::Executor executor( - 1 /* data-processing workers */, - 1 /* I/O workers */, - 1 /* timer workers */ -); -``` - -All coroutines initially are placed to the "data-processing" worker-group and may be rescheduled to the I/O or Timer workers - depending on the -[oatpp::async::Action](/api/latest/oatpp/core/async/Coroutine/#action) returned in Coroutine iteration. - - - -::: tip -Even though the Oat++ async processor may reschedule coroutine to a different thread - coroutine is guaranteed to be destroyed on the same thread as it was created. -::: - -### I/O Worker - -For I/O `oatpp::async::Executor` uses [IOEventWorker](/api/latest/oatpp/core/async/worker/IOEventWorker/) -with event-based I/O implementations: - -- kqueue based implementation - for Mac/BSD systems. -- epoll based implementation - for Linux systems. - -When coroutine returns Action of type [TYPE_IO_WAIT](/api/latest/oatpp/core/async/Coroutine/#action-type-io-wait), -it gets rescheduled to I/O worker placing file-descriptor provided in Action to kqueue/epoll. -**Thus oatpp-coroutines are not wasting CPU resources spinning and polling long-waiting connections.** - - -## API - -In oatpp, Coroutine is the class extended from [oatpp::async::Coroutine](/api/latest/oatpp/core/async/Coroutine/#coroutine) or from -[oatpp::async::CoroutineWithResult](/api/latest/oatpp/core/async/Coroutine/#coroutinewithresult). -Coroutines are processed in the [oatpp::async::Executor](/api/latest/oatpp/core/async/Executor/). - -```cpp -class MyCoroutine : public oatpp::async::Coroutine { -public: - - /* - * act() - entrypoint of Coroutine - * returns Action - what to do next - */ - Action act() override { - OATPP_LOGD("MyCoroutine", "act()"); - return yieldTo(&MyCoroutine::step2); - } - - Action step2() { - OATPP_LOGD("MyCoroutine", "step2"); - return yieldTo(&MyCoroutine::step3); - } - - Action step3() { - OATPP_LOGD("MyCoroutine", "step3"); - return finish(); - } - -}; - -oatpp::async::Executor executor(); - -executor.execute(); - -executor.waitTasksFinished(); -executor.stop(); -executor.join(); -``` - -Output: -``` -MyCoroutine:act() -MyCoroutine:step2 -MyCoroutine:step3 -``` - -## Call Coroutine from Coroutine - -```cpp -class OtherCoroutine : public oatpp::async::Coroutine { -public: - Action act() override { - OATPP_LOGD("OtherCoroutine", "act()"); - return finish(); - } -}; - -class MyCoroutine : public oatpp::async::Coroutine { -public: - - Action act() override { - OATPP_LOGD("MyCoroutine", "act()"); - return OtherCoroutine::start().next(finish()); /* Action to do after OtherCoroutine finished */); - } - -}; - -oatpp::async::Executor executor(); - -executor.execute(); - -executor.waitTasksFinished(); -executor.stop(); -executor.join(); -``` - -Output: -``` -MyCoroutine:act() -OtherCoroutine:act() -``` - -## Call Coroutine and return Result - -```cpp -class CoroutineWithResult : public oatpp::async::CoroutineWithResult { -public: - Action act() override { - OATPP_LOGD("CoroutineWithResult", "act()"); - return _return(""); - } -}; - -class MyCoroutine : public oatpp::async::Coroutine { -public: - - Action act() override { - OATPP_LOGD("MyCoroutine", "act()"); - return CoroutineWithResult::startForResult().callbackTo(&MyCoroutine::onResult); - } - - Action onResult(const char* result) { - OATPP_LOGD("MyCoroutine", "result='%s'", result); - return finish(); - } - -}; - -oatpp::async::Executor executor(); - -executor.execute(); - -executor.waitTasksFinished(); -executor.stop(); -executor.join(); -``` - -Output: - -``` -MyCoroutine:act() -CoroutineWithResult:act() -MyCoroutine:result='' -``` - -## Counter - -```cpp -class MyCoroutineCounter : public oatpp::async::Coroutine { -private: - const char* m_name; - v_int32 m_counter = 0; -public: - - MyCoroutineCounter(const char* name) : m_name(name) {} - - Action act() override { - OATPP_LOGD(m_name, "counter=%d", m_counter); - if(m_counter < 10) { - m_counter ++; - return repeat(); - } - return finish(); - } - -}; - -oatpp::async::Executor executor(); - -executor.execute("A"); -executor.execute("B"); -executor.execute("C"); - -executor.waitTasksFinished(); -executor.stop(); -executor.join(); -``` - -Possible Output: - -``` -A:counter=0 -B:counter=0 -C:counter=0 -A:counter=1 -B:counter=1 -C:counter=1 -A:counter=2 -B:counter=2 -C:counter=2 -A:counter=3 -B:counter=3 -C:counter=3 -A:counter=4 -B:counter=4 -C:counter=4 -A:counter=5 -B:counter=5 -C:counter=5 -A:counter=6 -B:counter=6 -C:counter=6 -A:counter=7 -B:counter=7 -C:counter=7 -A:counter=8 -B:counter=8 -C:counter=8 -A:counter=9 -B:counter=9 -C:counter=9 -A:counter=10 -B:counter=10 -C:counter=10 -``` \ No newline at end of file diff --git a/docs/docs/simple-vs-async/README.md b/docs/docs/simple-vs-async/README.md deleted file mode 100644 index 1d6f6a15e..000000000 --- a/docs/docs/simple-vs-async/README.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Simple vs Async API -description: Simple and Async oatpp APIs. Pros and Cons. Configuration difference. -sidebarDepth: 0 ---- - -# API - Simple vs Async - -## Brief - -**Simple** - (multithreading plus blocking-IO approach) smaller latency, simple API, less coding. Disadvantages - comparable smaller limit of max simultaneous connections. -**Async** - (oatpp-coroutines plus non-blocking-IO approach) High performance, ability to handle tens of thousand simultaneous connections, less resources needed. Disadvantages - comparable higher latency, more complex API, more coding. - -## Thread Usage - -**Simple** - (1 thread) / (1 connection) + (1 thread for accepting connections) -**Async** - (1 thread) / (1 AsyncProcessor) + (1 thread for accepting connections) - -## Api Difference - -- Simple - - `ConnectionHandler = HttpConnectionHandler` - - In `ApiController` - use [ENDPOINT](/docs/components/api-controller/#endpoint-specifics) - -- Async - - `ConnectionHandler = AsyncHttpConnectionHandler` - - In `ApiController` - use [ENDPOINT_ASYNC](/docs/components/api-controller/#endpoint-async-specifics) - -### Simple - -#### Config - -```cpp{1,29} -#include "oatpp/web/server/HttpConnectionHandler.hpp" -#include "oatpp/web/server/HttpRouter.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" -#include "oatpp/core/macro/component.hpp" - -class AppComponent { -public: - - /** - * Create ConnectionProvider component which listens on the port - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - }()); - - /** - * Create Router component - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); - - /** - * Create ConnectionHandler component which uses Router component to route requests - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - return oatpp::web::server::HttpConnectionHandler::createShared(router); - }()); - -}; -``` - -#### Controller - -```cpp -ENDPOINT("POST", "demo/api/json", postJson, - BODY_DTO(Object, dto)) { - auto dtoMessage = dto->message; - return createResponse(Status::CODE_200, "dtoMessage: " + dtoMessage); -} -``` - -### Async - -```cpp{1,29} -#include "oatpp/web/server/AsyncHttpConnectionHandler.hpp" -#include "oatpp/web/server/HttpRouter.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" -#include "oatpp/core/macro/component.hpp" - -class AppComponent { -public: - - /** - * Create ConnectionProvider component which listens on the port - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - }()); - - /** - * Create Router component - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); - - /** - * Create ConnectionHandler component which uses Router component to route requests - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - return oatpp::web::server::AsyncHttpConnectionHandler::createShared(router); - }()); - -}; -``` - -#### Controller - -```cpp -ENDPOINT_ASYNC("POST", "demo/api_async/json", PostJSONAsync) { - - ENDPOINT_ASYNC_INIT(PostJSONAsync) - - Action act() override { - return request->readBodyToDtoAsync>(controller->getDefaultObjectMapper()) - .callbackTo(&PostJSONAsync::onBodyObtained); - } - - Action onBodyObtained(const oatpp::Object& dto) { - return _return(controller->createResponse(Status::CODE_200, "dtoMessage: " + dto->message)); - } - -}; -``` \ No newline at end of file diff --git a/docs/docs/start/README.md b/docs/docs/start/README.md deleted file mode 100644 index 1cc1da3da..000000000 --- a/docs/docs/start/README.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Getting started -description: Getting started with Oat++ (AKA oatpp) C++ Web Framework. -sidebarDepth: 0 ---- - -# Getting Started - -Welcome to :seedling:Oat++ - -## The recommended way to go - -1. Install **oatpp**: - - [Unix/Linux](/docs/installation/unix-linux/) - - [Windows](/docs/installation/windows/) - - For exotic platforms look for stories on the [Supported Platforms](/supported-platforms/) page. - -3. Take a look at: - - [High Level Overview](/docs/start/high-level-overview/) - Learn about the main components and features of Oat++. - - [Step By Step Guide](/docs/start/step-by-step/) - How to create an Oat++ project from scratch. Get more low-level details. - -4. Check out [examples](/docs/start/#examples) and starter-projects: - - [Starter Project - Simple API](/docs/start/project/) - - [Starter project - Async API](/docs/start/project-async-api/) - -5. :point_right:Join dev community and don't hesitate to ask questions - [Chat On Gitter](https://gitter.im/oatpp-framework/Lobby):point_left::v: - -## Examples - -### REST-API - -- [REST Service](/examples/crud/) - A complete example of a "CRUD" service (UserService) built with Oat++. REST + Swagger-UI + SQLite. -- [REST Client](https://github.com/oatpp/example-api-client) - Example project of how-to use Retrofit-like client wrapper (ApiClient) and how it works. - -### WebSocket - -- [Can Chat](https://github.com/lganzzzo/canchat) - Feature-complete rooms-based chat for tens of thousands users. Client plus Server. -- [WebSocket](https://github.com/oatpp/example-websocket) - Collection of oatpp WebSocket examples. -- [YUV Websocket Stream](https://github.com/oatpp/example-yuv-websocket-stream) - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets. - -### Databases - -- [SQLite](/examples/crud/) - A complete example of a "CRUD" service. REST + Swagger-UI + SQLite. -- [PostgreSQL](/examples/postgresql/) - Example of a production-grade entity service storing information in PostgreSQL. With Swagger-UI and configuration profiles. -- [MongoDB](https://github.com/oatpp/example-mongodb) - Example project how to work with MongoDB using **oatpp-mongo** mondule. Project is a web-service with basic CRUD and Swagger-UI. - -### IoT - -- [Example-IoT-Hue](https://github.com/oatpp/example-iot-hue-ssdp) - Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo. - -### Streaming - -- [HTTP Live Streaming Server](/examples/hls-media-stream/) - Example project on how to build an HLS-streaming server using Oat++ asynchronous API. -- [YUV Websocket Stream](https://github.com/oatpp/example-yuv-websocket-stream) - Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets. - -### TLS - -- [TLS With Libressl](https://github.com/oatpp/example-libressl) - Example project how-to setup secure connection and serve via HTTPS. - -### Microservices - -- [Consul Integration](https://github.com/oatpp/example-consul) - Example project on how to use [oatpp::consul::Client](/api/latest/oatpp-consul/rest/Client/). Consul integration. -- [Microservices](https://github.com/oatpp/example-microservices) - Example project on how to build microservices with Oat++, -and example on how to consolidate those microservices using [monolithization](/docs/monolithization/) technique. - -### Asynchronous API - -- [Async Service](https://github.com/oatpp/example-async-api) - Example project on how to use asynchronous API to handle a large number of simultaneous connections. \ No newline at end of file diff --git a/docs/docs/start/high-level-overview/README.md b/docs/docs/start/high-level-overview/README.md deleted file mode 100644 index 3e08d02c0..000000000 --- a/docs/docs/start/high-level-overview/README.md +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: High Level Overview -description: High level overview of Oat++ web framework components. -sidebarDepth: 2 ---- - -# High Level Overview - -This is the high level overview of Oat++ API. - -[[toc]] - -## API Controller - Request Mapping - -For more info see [Api Controller](/docs/components/api-controller/) - -### Declare Endpoint - -```cpp -ENDPOINT("PUT", "/users/{userId}", putUser, - PATH(Int64, userId), - BODY_DTO(Object, userDto)) -{ - userDto->id = userId; - return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto)); -} -``` - -### Add CORS for Endpoint - -For more info see [Api Controller / CORS](/docs/components/api-controller/#cors) - -```cpp -ADD_CORS(putUser) -ENDPOINT("PUT", "/users/{userId}", putUser, - PATH(Int64, userId), - BODY_DTO(Object, userDto)) -{ - userDto->id = userId; - return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto)); -} -``` - -### Endpoint with Authorization - -For more info see [Api Controller / Authorization](/docs/components/api-controller/#authorization-basic) - -```cpp -using namespace oatpp::web::server::handler; - -ENDPOINT("PUT", "/users/{userId}", putUser, - AUTHORIZATION(std::shared_ptr, authObject), - PATH(Int64, userId), - BODY_DTO(Object, userDto)) -{ - OATPP_ASSERT_HTTP(authObject->userId == "Ivan" && authObject->password == "admin", Status::CODE_401, "Unauthorized"); - userDto->id = userId; - return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto)); -} -``` - -## API Client - Retrofit / Feign Like Client - -For more info see [Api Client](/docs/components/api-client/) - -### Declare Client - -```cpp -class UserService : public oatpp::web::client::ApiClient { -public: - - API_CLIENT_INIT(UserService) - - API_CALL("GET", "users", getUsers) - API_CALL("GET", "users/{userId}", getUserById, PATH(Int64, userId)) - -}; -``` - -### Using API Client - -```cpp -auto response = userService->getUserById(id); -auto user = response->readBodyToDto>(objectMapper); -``` - -## Object Mapping - -For more info see [Data Transfer Object (DTO)](/docs/components/dto/). - -### Declare DTO - -```cpp -class UserDto : public oatpp::Object { - - DTO_INIT(UserDto, Object) - - DTO_FIELD(Int64, id); - DTO_FIELD(String, name); - -}; -``` - -### Serialize DTO Using ObjectMapper - -```cpp -using namespace oatpp::parser::json::mapping; - -/* Create JSON object mapper */ -ObjectMapper objectMapper; - -auto user = UserDto::createShared(); -user->id = 1; -user->name = "Ivan"; - -/* Serialize DTO to JSON */ -auto json = objectMapper.writeToString(user); -``` - -Output: - -```json -{ - "id": 1, - "name": "Ivan" -} -``` - -## Swagger-UI Annotations - -For more info see [Endpoint Annotation And API Documentation](/docs/components/api-controller/#endpoint-annotation-and-api-documentation) - -### Additional Endpoint Info - -```cpp -ENDPOINT_INFO(putUser) { - // general - info->summary = "Update User by userId"; - info->addConsumes>("application/json"); - info->addResponse>(Status::CODE_200, "application/json"); - info->addResponse(Status::CODE_404, "text/plain"); - // params specific - info->pathParams["userId"].description = "User Identifier"; -} -ENDPOINT("PUT", "/users/{userId}", putUser, - PATH(Int64, userId), - BODY_DTO(Object, userDto)) -{ - userDto->id = userId; - return createDtoResponse(Status::CODE_200, m_database->updateUser(userDto)); -} -``` - -## ORM Framework - -For more info see [Oat++ ORM Framework](/docs/components/orm/) - -### Declare DbClient - -```cpp -class MyClient : public oatpp::orm::DbClient { -public: - - MyClient(const std::shared_ptr& executor) - : oatpp::orm::DbClient(executor) - {} - - QUERY(createUser, - "INSERT INTO users (username, email, role) VALUES (:username, :email, :role);", - PARAM(oatpp::String, username), - PARAM(oatpp::String, email), - PARAM(oatpp::Enum::AsString, role)) - - QUERY(getUserByName, - "SELECT * FROM users WHERE username=:username;", - PARAM(oatpp::String, username)) - -}; -``` - -### DbClient Usage Example - -```cpp -... - -/* Create MyClient database client */ -MyClient client(executor); - -/* Create new user in the database */ -client.createUser("admin", "admin@domain.com", UserRoles::ADMIN); - -/* Find user by username in the database */ -auto result = client.getUserByUsername("admin"); - -/* Retrieve query result as a vector of UserDto objects */ -/* Of cause, UserDto had to be previously defined */ -auto dataset = result->fetch>>(); - -/* And we can easily serialize result as a json string using json object mapper */ -auto json = jsonObjectMapper.writeToString(dataset); - -/* Print the resultant json */ -std::cout << json->c_str() << std::endl; -``` - -Output: - -```json -[ - { - "name": "admin", - "email": "admin@domain.com", - "role": "ROLE_ADMIN" - } -] -``` - -## Modules And Build Status - -To get an overview of oatpp modules, their hierarchy, and build status - see [build status](/status/build/). - -## Read Next - -- [Well Structured Project](/docs/start/step-by-step/#well-structured-project) - - diff --git a/docs/docs/start/module/README.md b/docs/docs/start/module/README.md deleted file mode 100644 index bc4b0f4b0..000000000 --- a/docs/docs/start/module/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Module starter project -description: Starter project for Oat++ (AKA oatpp) module. -sidebarDepth: 0 ---- - -# Starter Project - Oat++ Module - -[Github Repository](https://github.com/oatpp/oatpp-starter-module) - -Starter project for oatpp-module - diff --git a/docs/docs/start/project-async-api/README.md b/docs/docs/start/project-async-api/README.md deleted file mode 100644 index 99aca51e2..000000000 --- a/docs/docs/start/project-async-api/README.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Async Starter Project -description: Starter project based on oatpp asynchronous API. -sidebarDepth: 0 ---- - -# Starter Project - Async API - -[Github Repository](https://github.com/oatpp/oatpp-starter-async) - -Starter project for Oat++ (AKA oatpp) application. Based on oatpp Async API. - -::: tip - -Async API suits best for services dedicated to a single type of tasks that run at high concurrency levels. -Example: -- Simultanious download of multiple files. -- Streaming to large number of clients (1K or more). -- Chats. - -**For all other purposes use simple API**. - -::: - -## Before you start - -Read: - -- [Simple API vs Async API](/docs/simple-vs-async/) -- [Async](/docs/async/) -- [Oatpp-Coroutines](/docs/oatpp-coroutines/) -- [ENDPOINT_ASYNC](/docs/components/api-controller/#endpoint-async-specifics) - -## Overview - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing UserController where all endpoints are declared -| |- dto/ // DTOs are declared here -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp` module installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -```bash -$ mkdir build && cd build -$ cmake .. -$ make -$ ./my-project-exe # - run application. - -``` - -#### In Docker - -```bash -$ docker build -t oatpp-starter-async . -$ docker run -p 8000:8000 -t oatpp-starter-async -``` diff --git a/docs/docs/start/project/README.md b/docs/docs/start/project/README.md deleted file mode 100644 index d8969a9bf..000000000 --- a/docs/docs/start/project/README.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Starter Project -description: Starter project based on oatpp simple API. -sidebarDepth: 0 ---- - -# Starter Project - -[Github Repository](https://github.com/oatpp/oatpp-starter) - -Starter project for Oat++ (AKA oatpp) application. Based on oatpp Multithreaded (Simple) API. - -## Overview - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing MyController where all endpoints are declared -| |- dto/ // DTOs are declared here -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp` module installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -```bash -$ mkdir build && cd build -$ cmake .. -$ make -$ ./my-project-exe # - run application. - -``` - -#### In Docker - -```bash -$ docker build -t oatpp-starter . -$ docker run -p 8000:8000 -t oatpp-starter -``` diff --git a/docs/docs/start/step-by-step/README.md b/docs/docs/start/step-by-step/README.md deleted file mode 100644 index c75c64a69..000000000 --- a/docs/docs/start/step-by-step/README.md +++ /dev/null @@ -1,886 +0,0 @@ ---- -title: Step by step -description: Step-by-step guide how to setup and build oatpp project from scratch. -sidebarDepth: 2 ---- - -# Step By Step Guide - -This step-by-step guide will help you start developing using oatpp framework. -After finishing it, you’ll have a well-structured and extendable web-service with basic endpoints. - -[[toc]] - -## Simplest Project - -### API - Low Level Components Overview - -To get basic components overview let's take a look at the simplest oatpp server application first. - -```cpp -#include "oatpp/web/server/HttpConnectionHandler.hpp" - -#include "oatpp/network/Server.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" - -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif - -void run() { - - /* Create Router for HTTP requests routing */ - auto router = oatpp::web::server::HttpRouter::createShared(); - - /* Create HTTP connection handler with router */ - auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router); - - /* Create TCP connection provider */ - auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Print info about server port */ - OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); -} - -int main() { - - /* Init oatpp Environment */ - oatpp::base::Environment::init(); - - /* Run App */ - run(); - - /* Destroy oatpp Environment */ - oatpp::base::Environment::destroy(); - - return 0; - -} - -``` - -Classes used: - -- [HttpRouter](/api/latest/oatpp/web/server/HttpRouter/) - -Router of HTTP requests. It maps URLs to endpoint handlers. -Our app has no endpoints declared so far hence the server will always return `404 not found`. -- [HttpConnectionHandler](/api/latest/oatpp/web/server/HttpConnectionHandler/) - This is a simple HTTP connection handler. -It handles incoming connections in a multi threaded manner, creating one thread per each connection. -- [ConnectionProvider](/api/latest/oatpp/network/tcp/server/ConnectionProvider/) - Provider of `TCP` connections. -It binds to a specified port. -- [Server](/api/latest/oatpp/network/Server/) - Server runs a loop which takes connections from `ConnectionProvider` -and passes them to `ConnectionHandler`. - -### Add Request Handler - -Application above does nothing but respond `404` to all client requests. -To add a custom response we have to add [HttpRequestHandler](/api/latest/oatpp/web/server/HttpRequestHandler/) and route -requests to it via `Router`: - -```cpp{6-19,26-27} -#include "oatpp/web/server/HttpConnectionHandler.hpp" - -#include "oatpp/network/Server.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" - -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif - -/** - * Custom Request Handler - */ -class Handler : public oatpp::web::server::HttpRequestHandler { -public: - - /** - * Handle incoming request and return outgoing response. - */ - std::shared_ptr handle(const std::shared_ptr& request) override { - return ResponseFactory::createResponse(Status::CODE_200, "Hello World!"); - } - -}; - -void run() { - - /* Create Router for HTTP requests routing */ - auto router = oatpp::web::server::HttpRouter::createShared(); - - /* Route GET - "/hello" requests to Handler */ - router->route("GET", "/hello", std::make_shared()); - - /* Create HTTP connection handler with router */ - auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router); - - /* Create TCP connection provider */ - auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Priny info about server port */ - OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); -} - -int main() { - - /* Init oatpp Environment */ - oatpp::base::Environment::init(); - - /* Run App */ - run(); - - /* Destroy oatpp Environment */ - oatpp::base::Environment::destroy(); - - return 0; - -} - -``` - -Now if we go to `http:/localhost:8000/hello` in browser - we get `Hello World!` message. - -```bash -$ curl http://localhost:8000/hello -Hello World! -``` - -### Respond With JSON Object - -In order to Serialize/Deserialize objects oatpp uses special [Data-Transfer-Objects (DTO)](/docs/components/dto/) and -[ObjectMappers](/api/latest/oatpp/core/data/mapping/ObjectMapper/). - -The format in which DTO is serialized is defined by Object Mapper. -In this particular example we are using [JSON ObjectMapper](/api/latest/oatpp/parser/json/mapping/ObjectMapper/). So our message -will be serialized to JSON. - -```cpp{1,8,10-26,33,36-42,48-51,59,65} -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" - -#include "oatpp/web/server/HttpConnectionHandler.hpp" - -#include "oatpp/network/Server.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" - -#include "oatpp/core/macro/codegen.hpp" - -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif - -/* Begin DTO code-generation */ -#include OATPP_CODEGEN_BEGIN(DTO) - -/** - * Message Data-Transfer-Object - */ -class MessageDto : public oatpp::DTO { - - DTO_INIT(MessageDto, DTO /* Extends */) - - DTO_FIELD(Int32, statusCode); // Status code field - DTO_FIELD(String, message); // Message field - -}; - -/* End DTO code-generation */ -#include OATPP_CODEGEN_END(DTO) - -/** - * Custom Request Handler - */ -class Handler : public oatpp::web::server::HttpRequestHandler { -private: - std::shared_ptr m_objectMapper; -public: - - /** - * Constructor with object mapper. - * @param objectMapper - object mapper used to serialize objects. - */ - Handler(const std::shared_ptr& objectMapper) - : m_objectMapper(objectMapper) - {} - - /** - * Handle incoming request and return outgoing response. - */ - std::shared_ptr handle(const std::shared_ptr& request) override { - auto message = MessageDto::createShared(); - message->statusCode = 1024; - message->message = "Hello DTO!"; - return ResponseFactory::createResponse(Status::CODE_200, message, m_objectMapper); - } - -}; - -void run() { - - /* Create json object mapper */ - auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); - - /* Create Router for HTTP requests routing */ - auto router = oatpp::web::server::HttpRouter::createShared(); - - /* Route GET - "/hello" requests to Handler */ - router->route("GET", "/hello", std::make_shared(objectMapper /* json object mapper */ )); - - /* Create HTTP connection handler with router */ - auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router); - - /* Create TCP connection provider */ - auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Priny info about server port */ - OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); -} - -int main() { - - /* Init oatpp Environment */ - oatpp::base::Environment::init(); - - /* Run App */ - run(); - - /* Destroy oatpp Environment */ - oatpp::base::Environment::destroy(); - - return 0; - -} -``` - -Now if we go to `http:/localhost:8000/hello` in browser - we get the JSON response. - -```bash -$ curl http://localhost:8000/hello -{"statusCode": 1024, "message": "Hello DTO!"} -``` - -## Well Structured Project - -While creating request handler for each custom endpoint (*as described above in simplest example*) may be suitable for small projects, -it is recommended to follow oatpp-project-structure in order to have easily configurable and extandable code. - -### Project Layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- dto/ // Folder containing DTOs definitions -| | | -| | |- DTOs.hpp // DTOs are declared here -| | -| |- controller/ // Folder containing API Controllers where all endpoints are declared -| | | -| | |- MyController.hpp // Sample - MyController is declared here -| | -| |- AppComponent.hpp // Application Components configuration -| |- App.cpp // main() is here -| -|- test/ // test folder - | - |- app/ - | | - | |- MyApiTestClient.hpp // Api client for test API calls is declared here - | |- TestComponent.hpp // Test application components configuration - | - |- MyControllerTest.cpp // MyController test logic is here - |- MyControllerTest.hpp // MyController test header - |- Tests.cpp // tests main() is here -``` - -### Application Components Configuration - -Use oatpp provided dependency injection in order to configure your application. - -Create environment component via [OATPP_CREATE_COMPONENT](/api/latest/oatpp/core/macro/component/#oatpp-create-component) -and inject it where needed using [OATPP_COMPONENT](/api/latest/oatpp/core/macro/component/#oatpp-component). - -#### Modify Simple Example to use Dependency Injection - -Create file `AppComponent.hpp` in you projects `src` folder and move there initialization of all application components. - -`AppComponent.hpp`: - -```cpp -#ifndef AppComponent_hpp -#define AppComponent_hpp - -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" - -#include "oatpp/web/server/HttpConnectionHandler.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" - -#include "oatpp/core/macro/component.hpp" - -/** - * Class which creates and holds Application components and registers components in oatpp::base::Environment - * Order of components initialization is from top to bottom - */ -class AppComponent { -public: - - /** - * Create ConnectionProvider component which listens on the port - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - return oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4}); - }()); - - /** - * Create Router component - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); - - /** - * Create ConnectionHandler component which uses Router component to route requests - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - return oatpp::web::server::HttpConnectionHandler::createShared(router); - }()); - - /** - * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { - return oatpp::parser::json::mapping::ObjectMapper::createShared(); - }()); - -}; - -#endif /* AppComponent_hpp */ -``` - -Now all major components are initialized in one place which makes it easy to configure application by substituting components. - -`App.cpp` (main) can be rewritten as follows: - -```cpp{31,49} -#include "AppComponent.hpp" - -#include "oatpp/network/Server.hpp" - -#include "oatpp/core/macro/codegen.hpp" - -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif - -/* Begin DTO code-generation */ -#include OATPP_CODEGEN_BEGIN(DTO) - -/** - * Message Data-Transfer-Object - */ -class MessageDto : public oatpp::DTO { - - DTO_INIT(MessageDto, DTO /* Extends */) - - DTO_FIELD(Int32, statusCode); // Status code field - DTO_FIELD(String, message); // Message field - -}; - -/* End DTO code-generation */ -#include OATPP_CODEGEN_END(DTO) - -/** - * Custom Request Handler - */ -class Handler : public oatpp::web::server::HttpRequestHandler { -private: - /* Inject object mapper component */ - OATPP_COMPONENT(std::shared_ptr, m_objectMapper); -public: - - /** - * Handle incoming request and return outgoing response. - */ - std::shared_ptr handle(const std::shared_ptr& request) override { - auto message = MessageDto::createShared(); - message->statusCode = 1024; - message->message = "Hello DTO!"; - return ResponseFactory::createResponse(Status::CODE_200, message, m_objectMapper); - } - -}; - -void run() { - - /* Register Components in scope of run() method */ - AppComponent components; - - /* Get router component */ - OATPP_COMPONENT(std::shared_ptr, router); - - /* Route GET - "/hello" requests to Handler */ - router->route("GET", "/hello", std::make_shared()); - - /* Get connection handler component */ - OATPP_COMPONENT(std::shared_ptr, connectionHandler); - - /* Get connection provider component */ - OATPP_COMPONENT(std::shared_ptr, connectionProvider); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Priny info about server port */ - OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); -} - -int main() { - - /* Init oatpp Environment */ - oatpp::base::Environment::init(); - - /* Run App */ - run(); - - /* Destroy oatpp Environment */ - oatpp::base::Environment::destroy(); - - return 0; - -} -``` - -### Move DTO definitions to a separate file - -In folder `src/dto/` create file `DTOs.hpp`. -Move `MessageDto` definition to `DTOs.hpp`: - -```cpp -#ifndef DTOs_hpp -#define DTOs_hpp - -#include "oatpp/core/data/mapping/type/Object.hpp" -#include "oatpp/core/macro/codegen.hpp" - -/* Begin DTO code-generation */ -#include OATPP_CODEGEN_BEGIN(DTO) - -/** - * Message Data-Transfer-Object - */ -class MessageDto : public oatpp::DTO { - - DTO_INIT(MessageDto, DTO /* Extends */) - - DTO_FIELD(Int32, statusCode); // Status code field - DTO_FIELD(String, message); // Message field - -}; - -/* TODO - Add more DTOs here */ - -/* End DTO code-generation */ -#include OATPP_CODEGEN_END(DTO) - -#endif /* DTOs_hpp */ -``` - -### Use API Controller - -Instead of using bare HttpRequestHandler creating new Request Handler for every new endpoint, it is recommened to -use [Api Controller](/docs/components/api-controller/). - -API Controller makes process of adding new endpoints much easier by generating boilerplate code for you. It also helps -to organize your endpoints grouping them in different API Controllers. - -#### Create Api Controller - -In folder `src/controller/` create file `MyController.hpp`. -Add the following code to `MyController.hpp`: - -```cpp -#ifndef MyController_hpp -#define MyController_hpp - -#include "dto/DTOs.hpp" - -#include "oatpp/web/server/api/ApiController.hpp" -#include "oatpp/core/macro/codegen.hpp" -#include "oatpp/core/macro/component.hpp" - -#include OATPP_CODEGEN_BEGIN(ApiController) ///< Begin Codegen - -/** - * Sample Api Controller. - */ -class MyController : public oatpp::web::server::api::ApiController { -public: - /** - * Constructor with object mapper. - * @param objectMapper - default object mapper used to serialize/deserialize DTOs. - */ - MyController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) - : oatpp::web::server::api::ApiController(objectMapper) - {} -public: - - ENDPOINT("GET", "/hello", root) { - auto dto = MessageDto::createShared(); - dto->statusCode = 200; - dto->message = "Hello World!"; - return createDtoResponse(Status::CODE_200, dto); - } - - // TODO Insert Your endpoints here !!! - -}; - -#include OATPP_CODEGEN_END(ApiController) ///< End Codegen - -#endif /* MyController_hpp */ -``` - -### Add Controller Endpoints to Router - -In order to serve endpoints declared in Api Controller we have to add those endpoints to the Router. -And the final look of the App.cpp is as follows: - -```cpp{15-16} -#include "controller/MyController.hpp" -#include "AppComponent.hpp" - -#include "oatpp/network/Server.hpp" - -void run() { - - /* Register Components in scope of run() method */ - AppComponent components; - - /* Get router component */ - OATPP_COMPONENT(std::shared_ptr, router); - - /* Create MyController and add all of its endpoints to router */ - auto myController = std::make_shared(); - router->addController(myController); - - /* Get connection handler component */ - OATPP_COMPONENT(std::shared_ptr, connectionHandler); - - /* Get connection provider component */ - OATPP_COMPONENT(std::shared_ptr, connectionProvider); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Priny info about server port */ - OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); - -} - -int main(int argc, const char * argv[]) { - - /* Init oatpp Environment */ - oatpp::base::Environment::init(); - - /* Run App */ - run(); - - /* Destroy oatpp Environment */ - oatpp::base::Environment::destroy(); - - return 0; -} -``` - -## Testing Oat++ Application - -Testing of a oatpp application generally means the following: - -- Create application test configuration in order to run application in test-mode. -- Define [ApiClient](/docs/components/api-client/) for Application's API. -- Create test which runs application using test-configuration and makes API calls via test Api Client. - -### Application Test Components Configuration - -In folder `test/app/` create file `TestComponent.hpp` (similar to `AppComponent`): - -```cpp{24,32,40} -#ifndef TestComponent_htpp -#define TestComponent_htpp - -#include "oatpp/web/server/HttpConnectionHandler.hpp" - -#include "oatpp/network/virtual_/client/ConnectionProvider.hpp" -#include "oatpp/network/virtual_/server/ConnectionProvider.hpp" -#include "oatpp/network/virtual_/Interface.hpp" - -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" - -#include "oatpp/core/macro/component.hpp" - -/** - * Test Components config - */ -class TestComponent { -public: - - /** - * Create oatpp virtual network interface for test networking - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, virtualInterface)([] { - return oatpp::network::virtual_::Interface::obtainShared("virtualhost"); - }()); - - /** - * Create server ConnectionProvider of oatpp virtual connections for test - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - OATPP_COMPONENT(std::shared_ptr, interface); - return oatpp::network::virtual_::server::ConnectionProvider::createShared(interface); - }()); - - /** - * Create client ConnectionProvider of oatpp virtual connections for test - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, clientConnectionProvider)([] { - OATPP_COMPONENT(std::shared_ptr, interface); - return oatpp::network::virtual_::client::ConnectionProvider::createShared(interface); - }()); - - /** - * Create Router component - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); - - /** - * Create ConnectionHandler component which uses Router component to route requests - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - return oatpp::web::server::HttpConnectionHandler::createShared(router); - }()); - - /** - * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { - return oatpp::parser::json::mapping::ObjectMapper::createShared(); - }()); - -}; - - -#endif // TestComponent_htpp -``` - -Notice usage of: - -- [Network Virtual Interface](/api/latest/oatpp/network/virtual_/Interface/) -- [Server Virtual ConnectionProvider](/api/latest/oatpp/network/virtual_/server/ConnectionProvider/) -- [Client Virtual ConnectionProvider](/api/latest/oatpp/network/virtual_/client/ConnectionProvider/) - -oatpp virtual network stack enables you to run application tests down to low (protocol) level without occupying the "real" -port of the host. - -### API Test Client - -Create test [ApiClient](/docs/components/api-client/) in order to test application API. -In folder `test/app/` create file `MyApiTestClient.hpp` with api calls corresponding to application APIs: - -```cpp{18} -#ifndef MyApiTestClient_hpp -#define MyApiTestClient_hpp - -#include "oatpp/web/client/ApiClient.hpp" -#include "oatpp/core/macro/codegen.hpp" - -/* Begin Api Client code generation */ -#include OATPP_CODEGEN_BEGIN(ApiClient) - -/** - * Test API client. - * Use this client to call application APIs. - */ -class MyApiTestClient : public oatpp::web::client::ApiClient { - - API_CLIENT_INIT(MyApiTestClient) - - API_CALL("GET", "hello", getHello) - - // TODO - add more client API calls here - -}; - -/* End Api Client code generation */ -#include OATPP_CODEGEN_END(ApiClient) - -#endif // MyApiTestClient_hpp - -``` - -### Create Test - -In folder `test/` create file `MyControllerTest.hpp`: - -```cpp -#ifndef MyControllerTest_hpp -#define MyControllerTest_hpp - -#include "oatpp-test/UnitTest.hpp" - -class MyControllerTest : public oatpp::test::UnitTest { -public: - - MyControllerTest() : UnitTest("TEST[MyControllerTest]" /* Test TAG for logs */){} - void onRun() override; - -}; - -#endif // MyControllerTest_hpp -``` - -In folder `test/` create file `MyControllerTest.cpp`: - -```cpp{15,21,40} -#include "MyControllerTest.hpp" - -#include "controller/MyController.hpp" - -#include "app/MyApiTestClient.hpp" -#include "app/TestComponent.hpp" - -#include "oatpp/web/client/HttpRequestExecutor.hpp" - -#include "oatpp-test/web/ClientServerTestRunner.hpp" - -void MyControllerTest::onRun() { - - /* Register test components */ - TestComponent component; - - /* Create client-server test runner */ - oatpp::test::web::ClientServerTestRunner runner; - - /* Add MyController endpoints to the router of the test server */ - runner.addController(std::make_shared()); - - /* Run test */ - runner.run([this, &runner] { - - /* Get client connection provider for Api Client */ - OATPP_COMPONENT(std::shared_ptr, clientConnectionProvider); - - /* Get object mapper component */ - OATPP_COMPONENT(std::shared_ptr, objectMapper); - - /* Create http request executor for Api Client */ - auto requestExecutor = oatpp::web::client::HttpRequestExecutor::createShared(clientConnectionProvider); - - /* Create Test API client */ - auto client = MyApiTestClient::createShared(requestExecutor, objectMapper); - - /* Call server API */ - /* Call hello endpoint of MyController */ - auto response = client->getHello(); - - /* Assert that server responds with 200 */ - OATPP_ASSERT(response->getStatusCode() == 200); - - /* Read response body as MessageDto */ - auto message = response->readBodyToDto>(objectMapper.get()); - - /* Assert that received message is as expected */ - OATPP_ASSERT(message); - OATPP_ASSERT(message->statusCode->getValue() == 200); - OATPP_ASSERT(message->message == "Hello World!"); - - }, std::chrono::minutes(10) /* test timeout */); - - /* wait all server threads finished */ - std::this_thread::sleep_for(std::chrono::seconds(1)); - -} -``` - -The test above tests that on API call `GET /hello` server responds with expected message. -It uses [ClientServerTestRunner](/api/latest/oatpp-test/web/ClientServerTestRunner/) to run test server. - -### Run Tests - -In folder `test/` create file `Tests.cpp`: - -```cpp -#include "MyControllerTest.hpp" - -#include - -#if defined(WIN32) || defined(_WIN32) -#pragma comment(lib, "Ws2_32.lib") -#endif - -void runTests() { - - OATPP_RUN_TEST(MyControllerTest); - - // TODO - Add more tests here: - // OATPP_RUN_TEST(MyAnotherTest); - -} - -int main() { - - oatpp::base::Environment::init(); - - runTests(); - - /* Print how much objects were created during app running, and what have left-probably leaked */ - /* Disable object counting for release builds using '-D OATPP_DISABLE_ENV_OBJECT_COUNTERS' flag for better performance */ - std::cout << "\nEnvironment:\n"; - std::cout << "objectsCount = " << oatpp::base::Environment::getObjectsCount() << "\n"; - std::cout << "objectsCreated = " << oatpp::base::Environment::getObjectsCreated() << "\n\n"; - - OATPP_ASSERT(oatpp::base::Environment::getObjectsCount() == 0); - - oatpp::base::Environment::destroy(); - - return 0; -} -``` - -At the end of each test (and at the end of all tests) oatpp Environment is checked for leaking objects. -Test will fail if objects leaks found (Counts only objects extending [Countable](/api/latest/oatpp/core/base/Countable/)). - -::: warning -Tests binary should NOT link oatpp built with `-DOATPP_DISABLE_ENV_OBJECT_COUNTERS` flag. -::: - -## Complete Project Code - -[Github Repository](https://github.com/oatpp/oatpp-starter) - diff --git a/docs/examples/api-client/README.md b/docs/examples/api-client/README.md deleted file mode 100644 index bfa936b0b..000000000 --- a/docs/examples/api-client/README.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Example ApiClient -description: Example project how-to use oatpp ApiClient and how it works. -sidebarDepth: 0 ---- - -# ApiClient Example - -[Github Repository](https://github.com/oatpp/example-api-client) - -Example project how-to use oatpp [ApiClient](/docs/components/api-client/) and how it works - -## About ApiClient - -Oatpp [ApiClient](/docs/components/api-client/) is a mechanism which enables you to generate Web Api Clients in declarative manner. -Under the hood it uses provided [RequestExecutor](/api/latest/oatpp/web/client/RequestExecutor/) to perform http requests. Thus you are abstracted from the low-level http-client library implementation and can substitute any other http-client library at any time with zero code changes. -*Roughly you may treat oatpp [ApiClient](/docs/components/api-client/) as Java Retrofit for C++.* - -In this example you can configure to use such RequestExecutors: -- [oatpp::curl::RequestExecutor](/api/latest/oatpp-curl/RequestExecutor/) - RequestExecutor for oatpp ApiClient based on libcurl. -- [oatpp::web::client::HttpRequestExecutor](/api/latest/oatpp/web/client/HttpRequestExecutor/) - oatpp out-of-the-box provided [RequestExecutor](/api/latest/oatpp/web/client/RequestExecutor/). - -## Example overview - -In this example you will find: -- ApiClient built for http://httpbin.org/ web service. -- Simple (Synchronous) API calls example. -- Async API calls example processed with `oatpp::async::Executor`. See [Oatpp Coroutines](/docs/oatpp-coroutines/). - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| |- DemoApiClient.hpp // ApiClient built for http://httpbin.org/ web service -| |- DemoApiModels.hpp // DTOs objects for DemoApiClient -| |- SimpleExample.hpp // Simple (Synchronous) API calls example -| |- AsyncExample.hpp // Async API calls example -| |- App.cpp // main is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- Curl installed. You may refer to this sh script - how to install curl - -[install-curl.sh](https://github.com/oatpp/oatpp-curl/blob/master/utility/install-deps/install-curl.sh). -Or try something like ```$ apk add curl-dev``` - -- `oatpp` and `oatpp-curl` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -```bash -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-api-client-exe # - run application. -``` - -#### In Docker - -```bash -$ docker build -t example-api-client . -$ docker run -t example-api-client -``` ---- - -### ApiClient declaration overview - -Use ```API_CALL``` for simple (synchronous) calls. -Use ```API_CALL_ASYNC``` for non-blocking Async calls. - -```cpp -class DemoApiClient : public oatpp::web::client::ApiClient { -#include OATPP_CODEGEN_BEGIN(ApiClient) - - API_CLIENT_INIT(DemoApiClient) - - ... - - API_CALL("GET", "get", doGet) - API_CALL("POST", "post", doPost, BODY_STRING(String, body)) - - ... - - API_CALL_ASYNC("GET", "get", doGetAsync) - API_CALL_ASYNC("POST", "post", doPostAsync, BODY_STRING(String, body)) - - ... - -#include OATPP_CODEGEN_END(ApiClient) -}; -``` - -### Example calls overview - -#### SimpleExample.hpp - -```cpp -{ - auto data = client->doGet()->readBodyToString(); - OATPP_LOGD(TAG, "[doGet] data='%s'", data->c_str()); -} - -{ - auto data = client->doPost("Some data passed to POST")->readBodyToString(); - OATPP_LOGD(TAG, "[doPost] data='%s'", data->c_str()); -} -``` - -#### AsyncExample.hpp - -```cpp -class SendCoroutine : public oatpp::async::Coroutine { -private: - std::shared_ptr m_client; -public: - - SendCoroutine(const std::shared_ptr client) : m_client(client) {} - - Action act() override { - return m_client->doPostAsync("").callbackTo(&SendDtoCoroutine::onResponse); - } - - Action onResponse(const std::shared_ptr& response) { - return response->readBodyToStringAsync().callbackTo(&SendDtoCoroutine::onBody); - } - - Action onBody(const oatpp::String& body) { - OATPP_LOGD(TAG, "[SendCoroutine. doPostAsync] data='%s'", body->c_str()); - return finish(); - } - -}; -``` - -### Request executor configuration - -In ```App.cpp``` method ```run```. -Try to substitute different ```RequestExecutors``` by switching from Curl to oatpp built-in request executor. - -```cpp - -void run(){ - - /* Create ObjectMapper for serialization of DTOs */ - auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); - - /* Create RequestExecutor which will execute ApiClient's requests */ - //auto requestExecutor = createOatppExecutor(); // <-- Uncomment this - auto requestExecutor = createCurlExecutor(); // <-- Comment this - - /* DemoApiClient uses DemoRequestExecutor and json::mapping::ObjectMapper */ - /* ObjectMapper passed here is used for serialization of outgoing DTOs */ - auto client = DemoApiClient::createShared(requestExecutor, objectMapper); - - SimpleExample::runExample(client); - AsyncExample::runExample(client); - -} - -``` diff --git a/docs/examples/async-api/README.md b/docs/examples/async-api/README.md deleted file mode 100644 index b6d2c877c..000000000 --- a/docs/examples/async-api/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Example Async API -description: Example project how-to use oatpp asynchronous API. -sidebarDepth: 0 ---- - -# Async API Example - -[Github Repository](https://github.com/oatpp/example-async-api) - -Example project how-to use oatpp asynchronous API. - -## Overview - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing controller where all endpoints are declared -| |- dto/ // DTOs are declared here -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp` module installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-async-api-exe # - run application. - -``` - -#### In Docker - -``` -$ docker build -t example-async-api . -$ docker run -p 8000:8000 -t example-async-api -``` - -## Read More - -- [Simple API vs Async API](/docs/simple-vs-async/) -- [Async](/docs/async/) -- [Oatpp-Coroutines](/docs/oatpp-coroutines/) -- [ENDPOINT_ASYNC](/docs/components/api-controller/#endpoint-async-specifics) diff --git a/docs/examples/consul/README.md b/docs/examples/consul/README.md deleted file mode 100644 index d94bd667d..000000000 --- a/docs/examples/consul/README.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Example Consul Integration -description: Example project how-to use oatpp-consul module. -sidebarDepth: 0 ---- - -# Consul Integration Example - -[Github Repository](https://github.com/oatpp/example-consul) - -Example project how-to use [oatpp-consul](/docs/modules/oatpp-consul/) module. - -## Overview -This project is using [oatpp](/docs/modules/oatpp/) and [oatpp-consul](/docs/modules/oatpp-consul/) modules. - -Currently this is trivial example.- Read/Write from/to Consul KV via endpoints declared in Controller. -More complex example later. - -In this example Consul is expected to run at port 8500. - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing controller where all endpoints are declared -| |- dto/ // DTOs are declared here -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp` and `oatpp-consul` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -```bash -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-consul-exe # - run application. -``` - -#### In Docker - -```bash -$ docker build -t example-consul . -$ docker run -p 8000:8000 -t example-consul -``` diff --git a/docs/examples/crud/README.md b/docs/examples/crud/README.md deleted file mode 100644 index f0f5db41a..000000000 --- a/docs/examples/crud/README.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Example CRUD -description: Example project how-to create basic CRUD endpoints and document them with Swagger-UI and OpenApi 3.0.0. -sidebarDepth: 0 ---- - -# Example-CRUD - -[Github Repository](https://github.com/oatpp/example-crud) - -A complete example of a "CRUD" service (UserService) built with Oat++. - -In this example: - -- How to create CRUD endpoint. -- How to use [oatpp ORM](/docs/components/orm/) - SQLite example. -- How to document API with Swagger-UI and OpenApi 3.0.0. - -## Overview - -This project is using the following oatpp modules: - -- [oatpp](https://github.com/oatpp/oatpp) -- [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) -- [oatpp-sqlite](https://github.com/oatpp/oatpp-sqlite) - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- sql/ // SQL migration scripts for SQLite database -|- src/ -| | -| |- controller/ // Folder containing REST Controllers (UserController) -| |- db/ // Folder containing the database client -| |- dto/ // DTOs are declared here -| |- service/ // Service business logic classes (UserService) -| |- AppComponent.hpp // Service config -| |- DatabaseComponent.hpp // Database config -| |- SwaggerComponent.hpp // Swagger-UI config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp`, `oatpp-swagger` and `oatpp-sqlite` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./crud-exe # - run application. -``` - -#### In Docker - -``` -$ docker build -t example-crud . -$ docker run -p 8000:8000 -t example-crud -``` - ---- - -### Endpoints - -#### HTML - -|HTTP Method|URL|Description| -|---|---|---| -|`GET`|http://localhost:8000/ | Root page | -|`GET`|http://localhost:8000/swagger/ui | Swagger UI page | - -#### User Service - -|HTTP Method|URL|Description| -|---|---|---| -|`POST`|http://localhost:8000/users | Create new User | -|`PUT`|http://localhost:8000/users/{userId} | Update User by ID | -|`GET`|http://localhost:8000/users/{userId} | Get User by ID | -|`DELETE`|http://localhost:8000/users/{userId} | Delete User by ID | -|`GET`|http://localhost:8000/users/offset/{offset}/limit/{limit} | Get All Users with Paging | diff --git a/docs/examples/hls-media-stream/README.md b/docs/examples/hls-media-stream/README.md deleted file mode 100644 index 9e245a11d..000000000 --- a/docs/examples/hls-media-stream/README.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Example HLS Stream -description: Example project how-to build HTTP Live Streaming server using oat++ Async-API. -sidebarDepth: 0 ---- - -# Example-HLS-Media-Stream - -[Github Repository](https://github.com/oatpp/example-hls-media-stream) - -Example project how-to build HLS-streaming server using oat++ Async-API. -*Live stream tested with Safari-Browser and VLC-player.* - -## Overview - -Server generates infinite .m3u8 playlist from the pre-generated -```playlist_live.m3u8``` file in the ```video``` folder. -File ```video/playlist_live.m3u8``` together with video chunks is generated using ```ffmpeg```. - -Server is built using oat++ Async-Api and has following endpoints: - -- ```("GET", "/", Root)``` - Starting html-page aka index.html -- ```("GET", "video/*", Video)``` - Embedded video html-page -- ```("GET", "media/live", Live)``` - Infinite HLS playlist for live-stream describing video chunks -- ```("GET", "media/*", Static)``` - Endpoint serving media files with range requests support - -### Project layout - -``` - -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ // source folder -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -| -|- video/ // media files and playlists here - |- generate_pls.sh // example how to use ```ffmpeg``` to generate initial playlist and video chunks - |- playlist_live.m3u8 // playlist used to generate infinite playlist for http-live-streaming - -``` -``` -- src/ - | - |- controller/ // Folder containing UserController where all endpoints are declared - |- hls/ // Playlist generator is here - |- Utils.hpp // Utils - |- AppComponent.hpp // Service config - |- App.cpp // main() is here - -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp` module installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./hls-example-exe # - run application. -``` - -#### In Docker - -``` -$ docker build -t example-hls . -$ docker run -p 8000:8000 -t example-hls -``` - ---- - -### Screenshots - -
- - - -
- ---- -## Notes - -### Urls -- localhost:8000 - Index page -- localhost:8000/media/live - Live stream made from {repo}/video/video1.mp4 and {repo}/video/video2.mp4 played in the loop - -### Files -- {repo}/video/playlist_live.m3u8 - playlist used for live HLS streaming -- {repo}/video/generate_pls.sh - example script used to generate sub-playlists and video fragmets using ffmpeg tool. #EXTINF sections of sub-playlists then have to be manualy moved to playlist_live.m3u8. - -### Note -If app can't find playlist of video files then specify full-file-paths for {repo}/video/playlist_live.m3u8 file and {repo}/video folder in AppComponent.hpp diff --git a/docs/examples/iot-hue-ssdp/README.md b/docs/examples/iot-hue-ssdp/README.md deleted file mode 100644 index 6c5a6aa5d..000000000 --- a/docs/examples/iot-hue-ssdp/README.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: IoT-Hue-SSDP Example -description: Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo. -sidebarDepth: 0 ---- - -# Example-IoT-Hue - -Example project how-to create an Philips Hue compatible REST-API that is discovered and controllable by Hue compatible Smart-Home devices like Amazon Alexa or Google Echo. - -It demonstrates how Oat++ can be used to develop an Amazon Alexa or Google Home compatible REST-API which emulates Philips Hue bulbs. -Oat++ answers to search requests of you favorite SmartHome hub and you can register your fake bulbs to it. -After the registration of your fake bulbs to your Hub/Alexa/Google Home, you can control your Oat++ application -with 🗣️"Alexa, turn on <your fake device name>"! - -For this discoverability, the `oatpp-ssdp` module is used to receive and answer SSDP searches. - -This REST-API was implemented with the help of the [Hue API unofficial reference documentation by burgestrand.se](http://www.burgestrand.se/hue-api/) - -## Overview - -This project is using [oatpp](https://github.com/oatpp/oatpp), [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) and [oatpp-ssdp](https://github.com/oatpp/oatpp-ssdp) modules. - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing HueDeviceController and SsdpController where all endpoints are declared -| |- db/ // Folder with database mock -| |- dto/ // DTOs are declared here -| |- SwaggerComponent.hpp // Swagger-UI config -| |- DeviceDescriptorComponent.hpp // Component describing your "Hue Hub" (YOU HAVE TO CONFIGURE THIS FILE TO FIT YOUR ENVIRONMENT) -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Build and Run - -Before you run this example you have to edit `src/DeviceDescriptorComponent.hpp` to match your IP address. -Since this is only an example and to keep it simple this is not automated or parameterised! -You have to come up with your own implementation that fits your environment. - -```cpp -OATPP_CREATE_COMPONENT(std::shared_ptr, deviceDescriptor)("deviceDescriptor", [] { -auto desc = std::make_shared(); -// ToDo: Add your machines Address and Port here! You have to come up with your own way to automate this... -desc->ipPort = "192.168.100.100:80"; // your real IP and Port your HTTP-Controller is running on - -// assignable -desc->mac = "be5t0a70cafe"; // can be a fake one - -// fixed -desc->sn = "1000000471337"; -desc->uuid = "2f402f80-da50-11e1-9b23-" + desc->mac; -return desc; -}()); -``` - -#### Using CMake - -**Requires** - -- `oatpp`, `oatpp-ssdp` and `oatpp-swagger` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-iot-hue-ssdp-exe # - run application. -``` - -#### In Docker - -``` -$ docker build -t example-iot-hue-ssdp . -$ docker run -p 8000:8000 -t example-iot-hue-ssdp -``` - -#### Usage - -Configure the example (`src/DeviceDescriptorComponent.hpp`) and run it. Now tell your Alexa or Echo to search for new devices. -They should come up with two new Devices `Oat` and `Grain`. -After you configured them in your Smart-Home App just say something like "Alexa, turn on Oat" and you should see the correspoding `PUT` request in the console. - ---- - -### Endpoints declaration - -All implemented endpoints are compatible to a Philips Hue bridge (V1 and V3). -**Their path and structure are fixed!** - -#### SSDP: Search Responder -```cpp -ENDPOINT("M-SEARCH", "*", star) -``` -This Endpoint accepts and answers to `M-SEARCH` SSDP packets like a Philips Hue hub would do. - -#### HTTP: description.xml -```cpp -ENDPOINT("GET", "/description.xml", description) -``` -In the discovery answer, a reference to this endpoint is send back. -This endpoints emulates a static `desciption.xml` which includes all necessary information required to act as an Philips Hue hub. - -See [Bridge discovery (burgestrand.se)](http://www.burgestrand.se/hue-api/api/discovery/) - -#### HTTP: One-Shot 'user' registration -```cpp -ENDPOINT("POST", "/api", appRegister, BODY_DTO(oatpp::Object, userRegister)) -``` - -This endpoint just emulates a valid user-registration on a Philips Hue hub. - -See [Application registration (burgestrand.se)](http://www.burgestrand.se/hue-api/api/auth/registration/) - -#### HTTP: Get all 'lights' -```cpp -ENDPOINT("GET", "/api/{username}/lights", getLights, PATH(String, username)) -``` - -This endpoint returns a **object** of all devices in a Philips Hue compatible fashion. -However, formally this endpoint should just return the names. But returning the full list is fine too. - -See [Lights (burgestrand.se)](http://www.burgestrand.se/hue-api/api/lights/) - -#### HTTP: Get state of a specific light -```cpp -ENDPOINT("GET", "/api/{username}/lights/{hueId}", getLight, PATH(String, username), PATH(Int32, hueId)) -``` -This endpoint returns the state of the light given in `{hueId}` in a Philips Hue compatible fashion. - -See [Lights (burgestrand.se)](http://www.burgestrand.se/hue-api/api/lights/) - -#### HTTP: Set state of a specific light -```cpp -ENDPOINT("PUT", "/api/{username}/lights/{hueId}/state", updateState, - PATH(String, username), - PATH(Int32, hueId), - BODY_DTO(Object, state)) -``` - -This endpoint accepts a Philips Hue compatible state-object and sets the state in the internal database accordingly. -It is called e.g. by Alexa if you tell it 🗣️"Alexa, turn on <devicename>". -Finally it returns a "success" or "error" object. - -See [Lights (burgestrand.se)](http://www.burgestrand.se/hue-api/api/lights/) diff --git a/docs/examples/libressl/README.md b/docs/examples/libressl/README.md deleted file mode 100644 index 9dc18fe11..000000000 --- a/docs/examples/libressl/README.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Example TLS-Libressl -description: Example project how-to build HTTPS server using oatpp-libressl module. -sidebarDepth: 0 ---- - -# TLS-LibreSSL Example - -[Github Repository](https://github.com/oatpp/example-libressl) - -Example project how-to use [oatpp-libressl](/docs/modules/oatpp-libressl/) module. -- Serve via HTTPS -- Make client calls via HTTPS. -- Using oatpp Async API. - -## Overview - -This project is using [oatpp](https://github.com/oatpp/oatpp) and [oatpp-libressl](https://github.com/oatpp/oatpp-libressl) modules. - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing Controller where all endpoints are declared -| |- client/ // HTTP client is here. Used in "proxy" endpoint /api/get -| |- dto/ // DTOs are declared here -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -|- cert/ // folder with test certificates -``` - ---- - -### Build and Run - -#### Using CMake - -**Requires** - -- LibreSSL installed. You may refer to this sh script - how to install libressl - -[install-libressl.sh](https://github.com/oatpp/oatpp-libressl/blob/master/utility/install-deps/install-libressl.sh). -Or try something like ```$ apk add libressl-dev``` - -- `oatpp` and `oatpp-libressl` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -```bash -$ mkdir build && cd build -$ cmake .. -$ make -$ ././example-libressl-exe # - run application. -``` - -#### In Docker - -```bash -$ docker build -t example-libressl . -$ docker run -p 8443:8443 -t example-libressl -``` - ---- - -### Configure AppComponent - -Configure server secure connection provider - -```cpp -/** - * Create ConnectionProvider component which listens on the port - */ -OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - /* non_blocking connections should be used with AsyncHttpConnectionHandler for AsyncIO */ - auto config = oatpp::libressl::Config::createDefaultServerConfig("cert/test_key.pem", "cert/test_cert.crt"); - return oatpp::libressl::server::ConnectionProvider::createShared(config, 8443, true /* true for non_blocking */); -}()); - -``` - -Configure client secure connection provider - -```cpp -OATPP_CREATE_COMPONENT(std::shared_ptr, sslClientConnectionProvider) ([] { - auto config = oatpp::libressl::Config::createShared(); - tls_config_insecure_noverifycert(config->getTLSConfig()); - tls_config_insecure_noverifyname(config->getTLSConfig()); - return oatpp::libressl::client::ConnectionProvider::createShared(config, "httpbin.org", 443); -}()); -``` - -### Endpoints - ---- - -"Hello Async" root endpoint with json response - -```cpp -ENDPOINT_ASYNC("GET", "/", Root) { - - ENDPOINT_ASYNC_INIT(Root) - - Action act() override { - auto dto = HelloDto::createShared(); - dto->message = "Hello Async!"; - dto->server = Header::Value::SERVER; - dto->userAgent = request->getHeader(Header::USER_AGENT); - return _return(controller->createDtoResponse(Status::CODE_200, dto)); - } - -}; -``` - -result: -```bash -$ curl -X GET "https://localhost:8443/" --insecure -{"user-agent": "curl\/7.54.0", "message": "Hello Async!", "server": "oatpp\/0.19.1"} -``` ---- -Async proxy endpoint to ```https://httpbin.org/get``` - -```cpp -ENDPOINT_ASYNC("GET", "/api/get", TestApiGet) { - - ENDPOINT_ASYNC_INIT(TestApiGet) - - Action act() override { - return controller->myApiClient->apiGetAsync().callbackTo(&TestApiGet::onResponse); - } - - Action onResponse(const std::shared_ptr& response){ - return response->readBodyToStringAsync().callbackTo(&TestApiGet::returnResult); - } - - Action returnResult(const oatpp::String& body) { - return _return(controller->createResponse(Status::CODE_200, body)); - } - -}; -``` - -result: -```bash -$ curl -X GET "https://localhost:8443/api/get" --insecure -{ - "args": {}, - "headers": { - "Connection": "close", - "Host": "httpbin.org" - }, - "origin": "176.37.47.230", - "url": "https://httpbin.org/get" -} -``` \ No newline at end of file diff --git a/docs/examples/microservices/README.md b/docs/examples/microservices/README.md deleted file mode 100644 index 5ef4bd330..000000000 --- a/docs/examples/microservices/README.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Example Microservices -description: Example project on how to build microservices with Oat++, and example on how to consolidate those microservices using monolithization technique. -sidebarDepth: 0 ---- - -# Microservices Example - -[Github Repository](https://github.com/oatpp/example-microservices) - -This is an example project on how to build microservices with Oat++ Web Framework, and how to utilize the [Monolithization](/docs/monolithization/) feature. - -## Note - -For more information about this example, see the [Monolithization](/docs/monolithization/) article. - -## Inside This Repository - -``` -|- user-service/ // User-Service source code -|- book-service/ // Book-Service source code -|- facade/ // Facade source code -|- monolith/all-services/ // Monolithic config to build all services as a Monolith -|- build_all.sh // Utility script. Build all services -|- run_all_microservices.sh // Utility script. Run all services as separate applications -``` - -## Build And Run - -### Pre Requirements - -- Install the [oatpp](https://github.com/oatpp/oatpp) -- Install the [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) - -### Build all - -```bash -$ ./build_all.sh -``` - -### Run as microservices - -```bash -$ ./run_all_microservices.sh -``` - -### Run as monolith - -```bash -$ ./monolith/all-services/build/all-services-exe -``` - -## Overview - - - -Facade takes book info from book-service, user info from user-service, merges data, and returns to the client. - -### Service ports - - - Facade - 8000 - - User - 8001 - - Book - 8002 - -### Example curl - -``` -$ curl http://localhost:8000/books/4 -{"id": 4, "title": "1984", "author": {"id": 4, "name": "George Orwell"}} -``` diff --git a/docs/examples/mongodb/README.md b/docs/examples/mongodb/README.md deleted file mode 100644 index ea0fd8711..000000000 --- a/docs/examples/mongodb/README.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Example MongoDB -description: Example project how to work with MongoDB using oatpp-mongo mondule. -sidebarDepth: 0 ---- - -# MongoDB Example - -[Github Repository](https://github.com/oatpp/example-mongodb) - -Example project how to work with MongoDB using [oatpp-mongo](https://github.com/oatpp/oatpp-mongo) mondule. -Project is a web-service with basic CRUD and Swagger-UI. -*Dockerfile and docker-compose.yaml files included.* - -## Overview - -### Dependencies - -- [oatpp](https://github.com/oatpp/oatpp) -- [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) -- [oatpp-mongo](https://github.com/oatpp/oatpp-mongo) -- [mongocxx](http://mongocxx.org/) - Temporary dependency. Until the oatpp-mongo driver will be ready-to-use* - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing Controller where all endpoints are declared -| |- db/ // Database class is here -| |- dto/ // DTOs are declared here -| |- App.cpp // main() is here -| |- AppComponent.hpp // Service configuration is loaded here -| |- SwaggerComponent.hpp // Configuration for swagger-ui -| -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -|- Dockerfile // Dockerfile -|- docker-compose.yaml // Docker-compose with this service and postgresql -``` - -## Build and Run - -### Using CMake - -**Requires** - -- mongocxx installed. To install mongocxx: - - On Mac `$ brew install mongo-cxx-driver` - - On Linux - See [installing mongocxx on Linux](#installing-mongocxx-on-linux). - -- `oatpp`, `oatpp-swagger`, `oatpp-mongo` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-mongodb # - run application. -``` - -### In Docker - -#### Dockerfile - -To run the web-service only: - -``` -$ docker build -t example-mongodb . -$ docker run -p 8000:8000 -e DEMO_MONGO_CONN_STR='mongodb://localhost/UserDB' -t example-mongodb -``` - -#### docker-compose - -To run both web-service and mongodb: - -``` -$ docker-compose up -``` - - -### After run - -Go to [http://localhost:8000/swagger/ui](http://localhost:8000/swagger/ui) to try endpoints. - -## Installing mongocxx on Linux - -Installing mongocxx on Linux is an unclear and painful process. -See [ubuntu-cmake-mongocxx/Dockerfile](https://github.com/oatpp/dockerfiles/blob/master/ci/ubuntu-cmake-mongocxx/Dockerfile) -for instructions that worked for us. diff --git a/docs/examples/postgresql/README.md b/docs/examples/postgresql/README.md deleted file mode 100644 index c6d154fca..000000000 --- a/docs/examples/postgresql/README.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Example PostgreSQL -description: Example of a production grade entity service with Swagger-UI and configuration profiles. Storing information in PostgreSQL. Using libpq. -sidebarDepth: 0 ---- - -# PostgreSQL Example - -[Github Repository](https://github.com/oatpp/example-postgresql) - -A complete example of a "CRUD" service (UserService) built with Oat++ and using oatpp ORM with PostgreSQL. - -In this example: - -- How to create CRUD endpoints. -- How to use [oatpp ORM](/docs/components/orm/) - PostgreSQL example. -- How to document API with Swagger-UI and OpenApi 3.0.0. - -## Overview - -This project is using the following oatpp modules: - -- [oatpp](https://github.com/oatpp/oatpp) -- [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) -- [oatpp-postgresql](https://github.com/oatpp/oatpp-postgresql) - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing Controller where all endpoints are declared -| |- db/ // Folder containing the database client -| |- dto/ // DTOs are declared here -| |- service/ // Service business logic classes (UserService) -| |- ServiceComponent.hpp // Service configuration (port, ObjectMapper, Database) -| |- SwaggerComponent.hpp // Configuration for swagger-ui -| |- AppComponent.hpp // Service configuration is loaded here -| |- DatabaseComponent.hpp // Database config -| |- App.cpp // main() is here -| -|- test/ // test folder -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -|- resources/config.json // configuration file with configuration profiles -|- Dockerfile // Dockerfile -|- docker-compose.yaml // Docker-compose with this service and postgresql -``` - ---- - -## Build and Run - -### Using CMake - -**Requires** - -- This example also requires the PostgreSQL package installed. - - On Alpine `$ apk add postgresql-dev` - - On Ubuntu `$ apt-get install postgresql-server-dev-all` - - For more info see [oatpp-postgresql/README.md](https://github.com/oatpp/oatpp-postgresql/blob/master/README.md) -- `oatpp`, `oatpp-swagger` and `oatpp-postgresql` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-postgresql-exe # - run application. -``` - -*PostgreSQL is expected running as for `dev` config profile* - -### In Docker - -#### Dockerfile - -``` -$ docker build -t example-postgresql . -$ docker run -p 8000:8000 -e CONFIG_PROFILE='dev' -t example-postgresql -``` - -#### docker-compose - -``` -$ docker-compose up -``` - -*docker-compose will run service with `local-docker` config profile* - -### After run - -Go to [http://localhost:8000/swagger/ui](http://localhost:8000/swagger/ui) to try endpoints. diff --git a/docs/examples/websocket/README.md b/docs/examples/websocket/README.md deleted file mode 100644 index 02fac5bc1..000000000 --- a/docs/examples/websocket/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: WebSocket Example -description: Collection of oatpp WebSocket examples. -sidebarDepth: 0 ---- - -# example-websocket - -[Github Repository](https://github.com/oatpp/example-websocket) - -Collection of oatpp WebSocket examples. - -In the box: - -- [async-server](https://github.com/oatpp/example-websocket/tree/master/async-server) - Asynchronous WebSocket server example. -- [async-server-rooms](https://github.com/oatpp/example-websocket/tree/master/async-server-rooms) - Asynchronous Room-Based chat server. -- [server](https://github.com/oatpp/example-websocket/tree/master/server) - Multithreaded WebSocket server example. -- [client](https://github.com/oatpp/example-websocket/tree/master/client) - Simple WebSocket client example. -- [client-binance.com](https://github.com/oatpp/example-websocket/tree/master/client-binance.com) - Example client for reading crypto trading event stream from binance.com. -- [client-mbedtls](https://github.com/oatpp/example-websocket/tree/master/client-mbedtls) - Secure WebSocket client example. TLS backend - MbedTLS. diff --git a/docs/examples/yuv-websocket-stream/README.md b/docs/examples/yuv-websocket-stream/README.md deleted file mode 100644 index 34bbf6ec8..000000000 --- a/docs/examples/yuv-websocket-stream/README.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: YUV-WebSocket-Stream Example -description: Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets. -sidebarDepth: 0 ---- - -# Example-YUV-Websocket-Stream - -[Github Repository](https://github.com/oatpp/example-yuv-websocket-stream) - -Example project how-to create a YUV image stream from a V4L device (i.E. Webcam) using websockets. -The raw YUV image stream is send via a websocket connection. In the example Webpage, this YUV stream is converted to an HTML5 Canvas using JavaScript. -If you experience lag in the video its either your PC not being fast enough for the JavaScript conversion or the V4L2 stack. -The example webpage also runs fine on newer Smartphones! - -## Overview - -This project is using [oatpp](https://github.com/oatpp/oatpp), [oatpp-websocket](https://github.com/oatpp/oatpp-websocket) and [oatpp-swagger](https://github.com/oatpp/oatpp-swagger) modules. - -### Project layout - -``` -|- CMakeLists.txt // projects CMakeLists.txt -|- src/ -| | -| |- controller/ // Folder containing CamAPIController where all endpoints are declared -| |- backend/ // Folder with "business logic" -| |- dto/ // DTOs are declared here -| |- SwaggerComponent.hpp // Swagger-UI config -| |- AppComponent.hpp // Service config -| |- App.cpp // main() is here -| -|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules. -``` - ---- - -### Usage -When running this example, a Oat++ REST-API is launched and a demo webpage is accessible under `:8000/v0/cam/stream`. -The raw data is send out on the websocket (`:8000/v0/cam/stream/ws`) as soon as one client is connected and stops if all clients have disconnected. -Each websocket frame contains a whole image as received from V4L2. - -### Quirks - -#### Hardcoded Dimensions - -The dimensions are Hardcoded to *640x480* interlaced YUYV. Thus each image _complete_ image is 614400 bytes. -You can change the dimensions in `src/backend/V4LGrabber.cpp:589` and have to update them in `res/cam/wsImageView.html:31-32` - -**src/backend/V4LGrabber.cpp:589** - -```cpp -fmt.fmt.pix.width = 640; -fmt.fmt.pix.height = 480; -fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; -fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; -``` - -**res/cam/wsImageView.html:31-32** -```js -const imgData = ctx.createImageData(640, 480); -const grayScale = new Uint8Array(640*480); -``` - -#### Partial Images -Some webcams or V4L2 implementations are buggy and (sometimes) transfer partial images (only). -When you know your image size, you must come up with your own stiching mechanism. - -#### Video Lags -Depending on the used IO method (`read`, `mmap` or `userptr`) between V4L2<->Oat++ some lag can occur or the stream does not work at all. -The example is programmed to use `mmap` in `src/controller/CamAPIController.cpp:31`. - -```cpp -m_grabber = std::make_shared(device, &CamAPIController::handle_frame, m_imageReceivers.get(), V4LGrabber::IO_METHOD_MMAP); -``` - - -The methods can roughly be described by: - -- **read:** Simple `read` calls on `/dev/videoX` (most simple, widely supported) -- **mmap:** Memory mapping the data to the user-memory (should be a lot faster, memory efficient) -- **userptr:** User created memory region is given to kernel and the kernel uses this region as buffer (potentially dangerous, memory efficient) - - -### Build and Run - -#### Using CMake - -**Requires** - -- `oatpp`, `oatpp-websocket` and `oatpp-swagger` modules installed. You may run `utility/install-oatpp-modules.sh` -script to install required oatpp modules. -- Linux with `V4L2` development libraries installed - -``` -$ mkdir build && cd build -$ cmake .. -$ make -$ ./example-yuv-websocket-stream-exe # - run application. -``` - -#### In Docker - -``` -$ docker build -t example-yuv-websocket-stream . -$ docker run -p 8000:8000 -t example-yuv-websocket-stream-exe -``` diff --git a/docs/logo_x64.png b/docs/logo_x64.png deleted file mode 100644 index 6494e203ebac8c230413bb0b77f006fc3bc824d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2162 zcmV-&2#xoNP)R96r-4|&LADo?3Y#| z73vN{CCB>~cE+!GY0KSKCO-%PW!*&S0@DQ&nXR1^7iAi2%%h+uE+V-`wmx)z>wV zx0koxULds`O`y&tBJA3xfEZdswM%v_fUD0uLQRvZq#zP3)iy#v(7 z`wa{X(f0PX-RH$ckKIQA*j-*;mfam!z~_R!n_s>dL?w^PX?l7_Hfnx;fv-f4Ap$bf zZ^(z++1a6~scE{IcaPT(wi_4dA4xB&YUI88`UZ_;6k`O0g~Z7lP4Zogiby(ioX-V+ zN{r8-r6r3zzPqbeHvvHbQPQ_8<_-^!O6#dzOEDHi#YCmJhk$F@x8#jX?DkhK1*?wF z%FMI7yQwMHbP@32{v$cCuCA_9cxaraZHtRba_mV{>~pLHN3f55Oeg{HZ^Is5w=Dde0|(PKvqVsY*;_vH5@`~4vZ0V5F`WHz10W+ zsYq}5Ij&Gja<(qpgr{LnYOV0rnsLxCn{N$fY9Jr`R8M! z zGC{U0;|vI_^Ye@HoO@hY890w|0wTf^Xk>Uy-msN}Tu5+?)A2}^dwbTgqwLaQwutVG z01&#nV;w&|Jxg&hsZQ69i%nypwQQFzk%HYy0L0MsoI894b`;;#2YOgsCd*#9y<{L8 z-`LQyuLZh$W%pFe0+6*L20_300bXY zXhIrm0q(C1Xlew+MyE(srJi+rd;6uz)0HzEi2woU?k8o>si&up%$$N2*%jdh3mlk` z#yUH?Dep!;tHuz!d0Mpqu1ZniW9s1fD1osa3M(i+j5qOq_wtKfw)@x!5J2#X;cqS_ zDO+;KqWJ>A_O^L9O zSY46Wm5vblhzN*@w*8Qz#|0vc6A&4mAl*Mb0jlj?r_(&HhX5Q1 zUN!t-^gvc{#Maif6o(vR&9M`JfalnSfz(Ad5QX&u4TEbu2 z50&GMoZHl`D4)AJd)!wGAm9jBgszW^Njr2L-0=3T0@)+rF?F@CbrXP$@}}jTLgg*e zo!bRY`wyrv#n^FatpxWFfWRjeK8A0_fz* zUemwdv2{iOBEPu%YisLLUr}ohcz~!&;0Xrm0%HWkDDIk6+J-j<2oS)7h2ujgR3elZ9z$>!l}ZjMe^M#WS4)FUOsH}mdH{HdYJJnj>znxh z7Q4@J_@aVRUDxs02*5Xqmss(Hr3IuXX&V8mn!UwnEr9lTOY>VAADfh(#Ic?j4}E~Au*UjkO*QIv0vv%D zfm%STDPpuCf^Qh>Vtudk$7ZkRm!v!dcnI(i;342d2tY*tFf=0l(nNF9TM7ws{=oXb zBmh+$N@W0=-bEqvb%7 diff --git a/docs/res/aws-1.png b/docs/res/aws-1.png deleted file mode 100644 index d29034512c664628f8ce6b9bb44f113535804f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84729 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

htk2s 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 diff --git a/docs/res/aws-2.png b/docs/res/aws-2.png deleted file mode 100644 index 742cd53d52ee7305716afd31aa6111787faeb36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103279 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�WQ`q5 z5bz6RECG~U7!R#8N-9_QUy9ELxV(K9dItxu@(tGy8~iv74ax*RKV-ZN*$%oXf-;+H zg&$KN^&DS+iW%)pf{2kT5-_l-V(p#Kdn($-*u2f*Kl@ssa`92;wq-K!viBzDRzgPX)16_ zkWRkA6_N!l5sTX~73oAJZn?9GGL0CxNF!$w%IbH+?+wa}GDjt%rV|7VeSrM=wUX9y zVR^p>k2Gnk~O8_0p*E>$MDROSFR9Z$-3w1TTL{9u51bocQn zuw)ulRr=TNGaSv*s>$g+X##7xnV+%WE|a-PGRyUJIa%n2JBB(j^bSo@4vqZpbxX9& z9j_4Wxhk!dDvRJ-rXIgVFB=fOYD~h8nq36|>p#_D2!+@G9pwT>Y`=g?Q`PU?G77sz z6t}W1QEcI_9+x~^*5ISa=!dWEvwORNKGsfIf1Pm@@i!|aY}*jB#K<>6Gn6gwMw<-G zoKgjTv04y21~+5CYE?B=$*f{%uWE-X@Bh? zUSsc-uMXCd>xS3+E|g0KEo6oAMdQbV`M}O2Q(U?d62Va}24y95xx5Iv_2pQ3iE8Nw z1XmW8Afr=lRg92VO!QSoc0lsdx40ywBNgIE8uCuu3OpV$lOI+CE;(D1dmw-0jYnPz zAf^6JZs~-szUMxgx!6IVT9^gD?5BsQb$p2 zim)tc;p3`y`2%^c50IF>r?nN}yW+r`E>S5%wf>{OwRFN8=~zTD)rE|0k>w(7 zA5h_&ewBq)&B8hCdZiLi%R@1(9qLi?0ZuV4k9*&N7`3l+GK#IH0+9ti5NG}r3u1$3O%i@b+tsr#qD=N>!KKxG(7oh(#rJuiTXb@y83psqxHUFPL zT;N)r9?&Ka(Y}-|9LM{X+_rqX!DGN__qVO3@*l;mjZ%8<|wK0E%T#)IY;QM4U4`X;-yS%8a3DZJ-1WVV=W|ve-BT^qFx51lmjCM8@=E8tn z62UeN62kmgGm~qsuaECH&$7b|X|P4$k8KR+f1SE-0yLMn#8^lZMgqBH#Sj;Rv-4<} zQ@F{57J)w&EG!_j9PWEvod3T}Z?&xSOFYjdvogdBQi&>Zy>A(ixmDn;3>U4?Z$s-E ze{c8Qw(p}MAPNdTRl}`l|5Cxc#@FXW@xD}T`b)%0Rw{l9fMns}KX^ z&;HV5cQMeK$$fu^{e~eV&-MPb&Va+Z$Hg%5hy0%SPr*5StO3h55| zWFHKuBDJQ}%#tr4rBEmYR_?Th)sP)5xaWD}YzC7yY;#tyTpK4cTK`_p-&C#Qo%+Ap z(4@X`A-9R+txa(>+k}+>?J`mhjz@5;FVtV{ZquYDBgYXiBod?k;){G_4js`8*Q!l^ zky)Q<`~jCDm#0tc%oofs{2wb^;Zf^CSHu0zS3qO6Q!3#Qstrse|N9Nfb`fNV%ef&V z*{4B$!;z|B0MA*+2xzRHkGs8`Q0$xfl~Q92U{!qTLIE^M?2c2CbRz5DK-lsTaGr

AwTFkjl{ziRtaEshfb; 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 diff --git a/docs/status/build/README.md b/docs/status/build/README.md deleted file mode 100644 index 6851756a9..000000000 --- a/docs/status/build/README.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Build status -description: Build status of oatpp repos. -sidebarDepth: 0 ---- - -# Project Build Status - -## Modules - -|Module|Status|Dependencies|3rd party libs| -|:---|---|:---:|:---:| -|[oatpp](https://github.com/oatpp/oatpp)|[![oatpp build status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=1&branchName=master)||| -|[oatpp-consul](https://github.com/oatpp/oatpp-consul)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-consul?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=7&branchName=master)|oatpp|| -|[oatpp-curl](https://github.com/oatpp/oatpp-curl)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-curl?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=5&branchName=master)|oatpp|Curl| -|[oatpp-libressl](https://github.com/oatpp/oatpp-libressl)|[![oatpp build status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-libressl)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=3&branchName=master)|oatpp|LibreSSL| -|[oatpp-mbedtls](https://github.com/oatpp/oatpp-mbedtls)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-mbedtls?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=18&branchName=master)|oatpp|MbedTLS| -|[oatpp-mongo](https://github.com/oatpp/oatpp-mongo)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-mongo?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=26&branchName=master)|oatpp|libmongoxcc| -|[oatpp-openssl](https://github.com/oatpp/oatpp-openssl)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-openssl?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=32&branchName=master)|oatpp|OpenSSL| -|[oatpp-postgresql](https://github.com/oatpp/oatpp-postgresql)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-postgresql?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=31&branchName=master)|oatpp|PostgreSQL| -|[oatpp-protobuf](https://github.com/oatpp/oatpp-protobuf)||oatpp|protobuf| -|[oatpp-sqlite](https://github.com/oatpp/oatpp-sqlite)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-sqlite?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=30&branchName=master)|oatpp|SQLite| -|[oatpp-ssdp](https://github.com/oatpp/oatpp-ssdp)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-ssdp?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=28&branchName=master)|oatpp|| -|[oatpp-swagger](https://github.com/oatpp/oatpp-swagger)|[![oatpp build status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-swagger)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=2&branchName=master)|oatpp|| -|[oatpp-websocket](https://github.com/oatpp/oatpp-websocket)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-websocket?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=6&branchName=master)|oatpp|| -|[oatpp-zlib](https://github.com/oatpp/oatpp-zlib)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-zlib?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=23&branchName=master)|oatpp|zlib| - -## Starters - -|Starter|Status|Dependencies|3rd party libs| -|:---|---|:---:|:---:| -|[oatpp-starter](https://github.com/oatpp/oatpp-starter)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=10&branchName=master)|oatpp|| -|[oatpp-starter-async](https://github.com/oatpp/oatpp-starter-async)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter-async?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=11&branchName=master)|oatpp|| -|[oatpp-starter-module](https://github.com/oatpp/oatpp-starter-module)|[![oatpp build status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.oatpp-starter-module)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=4&branchName=master)|oatpp|| - -## Examples - -|Example|Status|Dependencies|3rd party libs| -|:---|---|:---:|:---:| -|[example-api-client](https://github.com/oatpp/example-api-client)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-api-client?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=14&branchName=master)|oatpp|Curl| -|[example-async-api](https://github.com/oatpp/example-async-api)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-async-api?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=16&branchName=master)|oatpp|| -|[example-consul](https://github.com/oatpp/example-consul)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-consul?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=15&branchName=master)|oatpp, oatpp-consul|| -|[example-crud](https://github.com/oatpp/example-crud)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-crud?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=9&branchName=master)|oatpp, oatpp-swagger, oatpp-sqlite|SQLite| -|[example-hls-media-stream](https://github.com/oatpp/example-hls-media-stream)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-hls-media-stream?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=12&branchName=master)|oatpp|| -|[example-iot-hue-ssdp](https://github.com/oatpp/example-iot-hue-ssdp)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-iot-hue-ssdp?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=29&branchName=master)|oatpp, oatpp-ssdp|| -|[example-libressl](https://github.com/oatpp/example-libressl)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-libressl?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=13&branchName=master)|oatpp, oatpp-libressl|LibreSSL| -|[example-microservices](https://github.com/oatpp/example-microservices)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-microservices?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=22&branchName=master)|oatpp, oatpp-swagger|| -|[example-mongodb](https://github.com/oatpp/example-mongodb)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-mongodb?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=27&branchName=master)|oatpp, oatpp-swagger, oatpp-mongo|libmongoxcc| -|[example-postgresql](https://github.com/oatpp/example-postgresql)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-postgresql?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=17&branchName=master)|oatpp, oatpp-swagger, oatpp-postgresql|PostgreSQL| -|[example-websocket](https://github.com/oatpp/example-websocket)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-websocket?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=20&branchName=master)|oatpp, oatpp-websocket, oatpp-mbedtls|MbedTLS| -|[example-yuv-websocket-stream](https://github.com/oatpp/example-yuv-websocket-stream)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.example-yuv-websocket-stream?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=25&branchName=master)| oatpp, oatpp-swagger, oatpp-websocket|| - -## Benchmark Projects - -|Project|Status|Dependencies|3rd party libs| -|:---|---|:---:|:---:| -|[benchmark-websocket](https://github.com/oatpp/benchmark-websocket)|[![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/oatpp.benchmark-websocket?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=19&branchName=master)|oatpp, oatpp-websocket|| diff --git a/docs/support/README.md b/docs/support/README.md deleted file mode 100644 index 45f0f14aa..000000000 --- a/docs/support/README.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Support -sidebarDepth: 0 ---- - -# Support - -Oat++ community is always willing to help! - -Connect with Oat++ developers and Oat++ users on the following public channels: - -

- -## Paid Professional Support - -Our services: - -- Private email support from Oat++ developers. -- Tailored modifications of oatpp and its modules. -- Custom software development. - -For more information contact us - :mailbox_with_mail: [consultancy@oatpp.io](mailto:consultancy@oatpp.io) diff --git a/docs/supported-platforms/README.md b/docs/supported-platforms/README.md deleted file mode 100644 index dcac413b5..000000000 --- a/docs/supported-platforms/README.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Supported Platforms -description: List of platforms and operating systems supported by oatpp web framework. -sidebarDepth: 0 ---- - -# Supported Platforms - -## Maintained on regular basis - -- **Linux** -- **BSD** -- **MacOS** -- **Windows** - special thanks to Benedikt-Alexander Mokroß - [bamkrs](https://github.com/bamkrs) - -## Special Support - -- **OpenWRT** - see [Oat++ OpenWRT feed](https://github.com/oatpp/oatpp-openwrt-feed) -containing build-scripts, options and patches for applications, modules and libraries provided by Oat++. - -## Known Builds - -- **NixOS** - see [Oat++ NixOS feed](https://github.com/oatpp/oatpp-nixos-feed) - collection of patches to properly install -oatpp on NixOS. Special thanks to David Ibbitson - [dibbitson](https://github.com/dibbitson). -- **Android** - see story on Github - -- **iOS** - see story on Github - -- **iOS 8 and earlier** - with special `-DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL` flag. -See story on Github - -- **Nvidia Jetson Xavier** - see story on Github - -- **Odroid XU4(Ubuntu)** -- **Onion Omega2S+ (600mhz RAMIPS with 128mb RAM) running OpenWRT** - with `-DOATPP_DISABLE_POOL_ALLOCATIONS` flag. -Makefile - . -- **Allwinner V3s (cortexa7, 64mb RAM, 1.2GHz) running OpenWRT** - with `-DOATPP_DISABLE_POOL_ALLOCATIONS` flag. -Makefile - diff --git a/package.json b/package.json deleted file mode 100644 index 2c590530b..000000000 --- a/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "vuepress-prp", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "docs:build": "vuepress build docs" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "vuepress": "^1.5.2" - }, - "resolutions": { - "webpack-dev-middleware": "3.6.0" - }, - "dependencies": { - "@vuepress/plugin-google-analytics": "^1.5.2", - "axios": "^0.18.0" - } -} diff --git a/server/.dockerignore b/server/.dockerignore deleted file mode 100644 index d16386367..000000000 --- a/server/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -build/ \ No newline at end of file diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index 08d819ba8..000000000 --- a/server/.gitignore +++ /dev/null @@ -1,105 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -run_site - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -.idea - -.idea/ - -# custom build -build/ -main/build/ - -# idea -cmake-build-debug/ -*/cmake-build-debug/ - -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app \ No newline at end of file diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt deleted file mode 100644 index 870c8d92d..000000000 --- a/server/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -cmake_minimum_required(VERSION 3.1) - -set(project_name oatpp-website) ## rename your project here - -project(${project_name}-loader) - -include(ExternalProject) - -############################################################################# -## load all dependencies - -ExternalProject_Add(oatpp - GIT_REPOSITORY "https://github.com/oatpp/oatpp.git" - GIT_TAG origin/master - CMAKE_ARGS -DOATPP_BUILD_TESTS=OFF -) - -ExternalProject_Add(oatpp-libressl - GIT_REPOSITORY "https://github.com/oatpp/oatpp-libressl.git" - GIT_TAG origin/master - CMAKE_ARGS -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} - DEPENDS oatpp -) - - -ExternalProject_Add(main - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/main - INSTALL_COMMAND cmake -E echo "SKIP INSTALL" - DEPENDS oatpp oatpp-libressl -) - -############################################################################# -## make run command - -ExternalProject_Get_Property(main BINARY_DIR) - -add_custom_target(run - COMMAND ${BINARY_DIR}/${project_name}-exe - DEPENDS main - WORKING_DIRECTORY ${BINARY_DIR} -) - -############################################################################# -## make test command - -enable_testing() -add_test(all-tests ${BINARY_DIR}/${project_name}-test) \ No newline at end of file diff --git a/server/Dockerfile b/server/Dockerfile deleted file mode 100644 index 3095e62d9..000000000 --- a/server/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM lganzzzo/alpine-cmake:latest - -ADD . /service - -WORKDIR /service/build - -RUN cmake .. -RUN make - -EXPOSE 8000 8000 - -ENTRYPOINT ["make", "run"] \ No newline at end of file diff --git a/server/main/CMakeLists.txt b/server/main/CMakeLists.txt deleted file mode 100644 index 0daa69409..000000000 --- a/server/main/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -cmake_minimum_required(VERSION 3.1) - -option(RUN_PROD "Prod?" OFF) - -set(project_name oatpp-website) ## rename your project here - -project(${project_name}) - -set(CMAKE_CXX_STANDARD 11) - -add_library(${project_name}-lib - src/AppComponent.hpp - src/SitePath.hpp - src/controller/StaticController.hpp - src/StaticFileManager.cpp - src/StaticFileManager.hpp - src/FilesIndex.cpp - src/FilesIndex.hpp - src/Sitemap.cpp - src/Sitemap.hpp -) - -## link libs - -find_package(oatpp 1.3.0 REQUIRED) -find_package(oatpp-openssl 1.3.0 REQUIRED) -find_package(oatpp-zlib 1.3.0 REQUIRED) -find_package(ZLIB) - -include(FindPkgConfig) # <-- include pkg-config needed by FindLibreSSL.cmake script -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") # <-- use FindLibreSSL.cmake in /cmake folder - -find_package(OpenSSL 1.1 REQUIRED) - -target_link_libraries(${project_name}-lib - PUBLIC oatpp::oatpp - PUBLIC oatpp::oatpp-test - PUBLIC oatpp::oatpp-openssl - PUBLIC oatpp::oatpp-zlib - PUBLIC ZLIB::ZLIB - PUBLIC OpenSSL::SSL - PUBLIC OpenSSL::Crypto -) - -target_include_directories(${project_name}-lib - PUBLIC /usr/local/include -) - -link_directories(/usr/local/lib) - -target_include_directories(${project_name}-lib PUBLIC src) - -add_definitions( - -DSTATIC_RES_PATH="${CMAKE_CURRENT_LIST_DIR}/../../docs/.vuepress/dist" -) - -if(RUN_PROD) - add_definitions(-DOATPP_TARGET_APP) -endif() - -## add executables - -add_executable(${project_name}-exe - src/App.cpp -) - -target_link_libraries(${project_name}-exe ${project_name}-lib) -add_dependencies(${project_name}-exe ${project_name}-lib) - -add_executable(${project_name}-test - test/tests.cpp -) -target_link_libraries(${project_name}-test ${project_name}-lib) -add_dependencies(${project_name}-test ${project_name}-lib) diff --git a/server/main/cmake/FindLibreSSL.cmake b/server/main/cmake/FindLibreSSL.cmake deleted file mode 100644 index a6e8e8c06..000000000 --- a/server/main/cmake/FindLibreSSL.cmake +++ /dev/null @@ -1,225 +0,0 @@ -#[=======================================================================[ - -Copyright (c) 2019 John Norrbin - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -FindLibreSSL ------------- - -Find the LibreSSL encryption library. - -Optional Components -^^^^^^^^^^^^^^^^^^^ - -This module supports two optional components: SSL and TLS. Both -components have associated imported targets, as described below. - -Imported Targets -^^^^^^^^^^^^^^^^ - -This module defines the following imported targets: - -LibreSSL::Crypto - The LibreSSL crypto library, if found. - -LibreSSL::SSL - The LibreSSL ssl library, if found. Requires and includes LibreSSL::Crypto automatically. - -LibreSSL::TLS - The LibreSSL tls library, if found. Requires and includes LibreSSL::SSL and LibreSSL::Crypto automatically. - -Result Variables -^^^^^^^^^^^^^^^^ - -This module will set the following variables in your project: - -LIBRESSL_FOUND - System has the LibreSSL library. If no components are requested it only requires the crypto library. -LIBRESSL_INCLUDE_DIR - The LibreSSL include directory. -LIBRESSL_CRYPTO_LIBRARY - The LibreSSL crypto library. -LIBRESSL_SSL_LIBRARY - The LibreSSL SSL library. -LIBRESSL_TLS_LIBRARY - The LibreSSL TLS library. -LIBRESSL_LIBRARIES - All LibreSSL libraries. -LIBRESSL_VERSION - This is set to $major.$minor.$revision (e.g. 2.6.8). - -Hints -^^^^^ - -Set LIBRESSL_ROOT_DIR to the root directory of an LibreSSL installation. - -]=======================================================================] - -# Set Hints -set(_LIBRESSL_ROOT_HINTS - ${LIBRESSL_ROOT_DIR} - ENV LIBRESSL_ROOT_DIR - ) - -# Set Paths -if (WIN32) - file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) - set(_LIBRESSL_ROOT_PATHS - "${_programfiles}/LibreSSL" - ) - unset(_programfiles) -else() - set(_LIBRESSL_ROOT_PATHS - "/usr/local/" - ) -endif() - -# Combine -set(_LIBRESSL_ROOT_HINTS_AND_PATHS - HINTS ${_LIBRESSL_ROOT_HINTS} - PATHS ${_LIBRESSL_ROOT_PATHS} - ) - -# Find Include Path -find_path(LIBRESSL_INCLUDE_DIR - NAMES - tls.h - ${_LIBRESSL_ROOT_HINTS_AND_PATHS} - PATH_SUFFIXES - include - ) - -# Find Crypto Library -find_library(LIBRESSL_CRYPTO_LIBRARY - NAMES - libcrypto - crypto - NAMES_PER_DIR - ${_LIBRESSL_ROOT_HINTS_AND_PATHS} - PATH_SUFFIXES - lib - ) - -# Find SSL Library -find_library(LIBRESSL_SSL_LIBRARY - NAMES - libssl - ssl - NAMES_PER_DIR - ${_LIBRESSL_ROOT_HINTS_AND_PATHS} - PATH_SUFFIXES - lib - ) - -# Find TLS Library -find_library(LIBRESSL_TLS_LIBRARY - NAMES - libtls - tls - NAMES_PER_DIR - ${_LIBRESSL_ROOT_HINTS_AND_PATHS} - PATH_SUFFIXES - lib - ) - -# Set Libraries -set(LIBRESSL_LIBRARIES ${LIBRESSL_CRYPTO_LIBRARY} ${LIBRESSL_SSL_LIBRARY} ${LIBRESSL_TLS_LIBRARY}) - -# Mark Variables As Advanced -mark_as_advanced(LIBRESSL_INCLUDE_DIR LIBRESSL_LIBRARIES LIBRESSL_CRYPTO_LIBRARY LIBRESSL_SSL_LIBRARY LIBRESSL_TLS_LIBRARY) - -# Find Version File -if(LIBRESSL_INCLUDE_DIR AND EXISTS "${LIBRESSL_INCLUDE_DIR}/openssl/opensslv.h") - - # Get Version From File - file(STRINGS "${LIBRESSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSLV.H REGEX "#define LIBRESSL_VERSION_TEXT[ ]+\".*\"") - - # Match Version String - string(REGEX REPLACE ".*\".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\"" "\\1;\\2;\\3" LIBRESSL_VERSION_LIST "${OPENSSLV.H}") - - # Split Parts - list(GET LIBRESSL_VERSION_LIST 0 LIBRESSL_VERSION_MAJOR) - list(GET LIBRESSL_VERSION_LIST 1 LIBRESSL_VERSION_MINOR) - list(GET LIBRESSL_VERSION_LIST 2 LIBRESSL_VERSION_REVISION) - - # Set Version String - set(LIBRESSL_VERSION "${LIBRESSL_VERSION_MAJOR}.${LIBRESSL_VERSION_MINOR}.${LIBRESSL_VERSION_REVISION}") - -endif() - -# Set Find Package Arguments -find_package_handle_standard_args(LibreSSL - REQUIRED_VARS - LIBRESSL_CRYPTO_LIBRARY - LIBRESSL_INCLUDE_DIR - VERSION_VAR - LIBRESSL_VERSION - HANDLE_COMPONENTS - FAIL_MESSAGE - "Could NOT find LibreSSL, try setting the path to LibreSSL using the LIBRESSL_ROOT_DIR environment variable" - ) - -# LibreSSL Found -if(LIBRESSL_FOUND) - - # Set LibreSSL::Crypto - if(NOT TARGET LibreSSL::Crypto AND EXISTS "${LIBRESSL_CRYPTO_LIBRARY}") - - # Add Library - add_library(LibreSSL::Crypto UNKNOWN IMPORTED) - - # Set Properties - set_target_properties( - LibreSSL::Crypto - PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${LIBRESSL_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${LIBRESSL_CRYPTO_LIBRARY}" - ) - - endif() # LibreSSL::Crypto - - # Set LibreSSL::SSL - if(NOT TARGET LibreSSL::SSL AND EXISTS "${LIBRESSL_SSL_LIBRARY}") - - # Add Library - add_library(LibreSSL::SSL UNKNOWN IMPORTED) - - # Set Properties - set_target_properties( - LibreSSL::SSL - PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${LIBRESSL_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${LIBRESSL_SSL_LIBRARY}" - INTERFACE_LINK_LIBRARIES LibreSSL::Crypto - ) - - endif() # LibreSSL::SSL - - # Set LibreSSL::TLS - if(NOT TARGET LibreSSL::TLS AND EXISTS "${LIBRESSL_TLS_LIBRARY}") - add_library(LibreSSL::TLS UNKNOWN IMPORTED) - set_target_properties( - LibreSSL::TLS - PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${LIBRESSL_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${LIBRESSL_TLS_LIBRARY}" - INTERFACE_LINK_LIBRARIES LibreSSL::SSL - ) - - endif() # LibreSSL::TLS - -endif(LIBRESSL_FOUND) diff --git a/server/main/src/App.cpp b/server/main/src/App.cpp deleted file mode 100644 index 15e8183f5..000000000 --- a/server/main/src/App.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// -// main.cpp -// web-starter-project -// -// Created by Leonid on 2/12/18. -// Copyright © 2018 oatpp. All rights reserved. -// - -#include "./controller/StaticController.hpp" -#include "./AppComponent.hpp" - -#include "oatpp/network/Server.hpp" - -#include -#include - -void run() { - - /* ignore SIGPIPE */ - std::signal(SIGPIPE, SIG_IGN); - - AppComponent components; // Create scope Environment components - - /* create ApiControllers and add endpoints to router */ - auto router = components.httpRouter.getObject(); - - router->addController(StaticController::createShared()); - - /* create server */ - std::thread thread1([&components] { - oatpp::network::Server server(components.serverConnectionProvider.getObject(), - components.serverConnectionHandler.getObject()); - - OATPP_LOGD("Server", "http-server on port %s...", components.serverConnectionProvider.getObject()->getProperty("port").toString()->c_str()); - server.run(); - }); - - std::thread thread2([&components] { - oatpp::network::Server server(components.serverSecureConnectionProvider.getObject(), - components.serverSecureConnectionHandler.getObject()); - - OATPP_LOGD("Server", "https-server on port %s...", components.serverSecureConnectionProvider.getObject()->getProperty("port").toString()->c_str()); - server.run(); - }); - - thread1.join(); - thread2.join(); - -} - -/** - * main - */ -int main(int argc, const char * argv[]) { - - oatpp::base::DefaultLogger::Config loggerConfig("%Y-%m-%d %H:%M:%S", false, 0xFFFFFFFF); - oatpp::base::Environment::init(std::make_shared(loggerConfig)); - - run(); - - /* Print how much objects were created during app running, and what have left-probably leaked */ - /* Disable object counting for release builds using '-D OATPP_DISABLE_ENV_OBJECT_COUNTERS' flag for better performance */ - std::cout << "\nEnvironment:\n"; - std::cout << "objectsCount = " << oatpp::base::Environment::getObjectsCount() << "\n"; - std::cout << "objectsCreated = " << oatpp::base::Environment::getObjectsCreated() << "\n\n"; - - oatpp::base::Environment::destroy(); - - return 0; -} diff --git a/server/main/src/AppComponent.hpp b/server/main/src/AppComponent.hpp deleted file mode 100644 index a8ad65f3c..000000000 --- a/server/main/src/AppComponent.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// -// AppComponent.hpp -// oatpp-web-starter -// -// Created by Leonid on 3/2/18. -// Copyright © 2018 lganzzzo. All rights reserved. -// - -#ifndef AppComponent_hpp -#define AppComponent_hpp - -#include "SitePath.hpp" -#include "StaticFileManager.hpp" -#include "FilesIndex.hpp" - -#include "oatpp-openssl/server/ConnectionProvider.hpp" - -#include "oatpp-zlib/EncoderProvider.hpp" - -#include "oatpp/web/server/AsyncHttpConnectionHandler.hpp" -#include "oatpp/web/server/HttpRouter.hpp" - -#include "oatpp/network/monitor/ConnectionMaxAgeChecker.hpp" -#include "oatpp/network/monitor/ConnectionInactivityChecker.hpp" -#include "oatpp/network/monitor/ConnectionMonitor.hpp" -#include "oatpp/network/tcp/server/ConnectionProvider.hpp" - -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" - -#include "oatpp/core/macro/component.hpp" - -/** - * Class which creates and holds Application components and registers components in oatpp::base::Environment - * Order of components initialization is from top to bottom - */ -class AppComponent { -public: - - /** - * Create ConnectionProvider component which listens on the port - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)("http-provider", [] { - /* non_blocking connections should be used with AsyncHttpConnectionHandler for AsyncIO */ -#if !defined(OATPP_TARGET_APP) - v_uint16 port = 8000; -#else - v_uint16 port = 80; -#endif - return oatpp::network::tcp::server::ConnectionProvider::createShared({"0.0.0.0", port, oatpp::network::Address::IP_4}); - }()); - - OATPP_CREATE_COMPONENT(std::shared_ptr, serverSecureConnectionProvider)("https-provider", [] { - /* non_blocking connections should be used with AsyncHttpConnectionHandler for AsyncIO */ -#if !defined(OATPP_TARGET_APP) - v_uint16 port = 8443; - const char* keyFile = "/usr/local/include/certificate/oatpp.io.key"; - const char* certFile = "/usr/local/include/certificate/oatpp.io.crt"; -#else - v_uint16 port = 443; - const char* keyFile = "/certificate/oatpp.io.key"; - const char* certFile = "/certificate/oatpp.io.crt"; -#endif - auto config = oatpp::openssl::Config::createDefaultServerConfigShared(certFile, keyFile); - auto sslProvider = oatpp::openssl::server::ConnectionProvider::createShared(config, {"0.0.0.0", port, oatpp::network::Address::IP_4}); - - auto monitor = std::make_shared(sslProvider); - - monitor->addMetricsChecker(std::make_shared( - std::chrono::minutes(5), - std::chrono::minutes(5) - )); - monitor->addMetricsChecker(std::make_shared( - std::chrono::minutes(30) - )); - - return monitor; - - }()); - - /** - * Create Router component - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); - - /** - * Create ConnectionHandler component which uses Router component to route requests - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)("http-handler", [] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - /* Async ConnectionHandler for Async IO and Coroutine based endpoints */ - auto handler = std::make_shared(router); - handler->addRequestInterceptor(std::make_shared()); - return handler; - }()); - - OATPP_CREATE_COMPONENT(std::shared_ptr, serverSecureConnectionHandler)("https-handler", [] { - OATPP_COMPONENT(std::shared_ptr, router); // get Router component - - /* Create HttpProcessor::Components */ - auto components = std::make_shared(router); - - /* Add content encoders */ - auto encoders = std::make_shared(); - - encoders->add(std::make_shared()); - encoders->add(std::make_shared()); - - components->contentEncodingProviders = encoders; - - /* Async ConnectionHandler for Async IO and Coroutine based endpoints */ - auto handler = std::make_shared(components); - handler->addRequestInterceptor(std::make_shared()); - return handler; - }()); - - /** - * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API - */ - OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { - auto serializerConfig = oatpp::parser::json::mapping::Serializer::Config::createShared(); - auto deserializerConfig = oatpp::parser::json::mapping::Deserializer::Config::createShared(); - deserializerConfig->allowUnknownFields = false; - auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(serializerConfig, deserializerConfig); - return objectMapper; - }()); - - OATPP_CREATE_COMPONENT(std::shared_ptr, filesIndex)([] { - auto files = std::make_shared(STATIC_RES_PATH); - files->buildIndex(); - return files; - }()); - - OATPP_CREATE_COMPONENT(std::shared_ptr, staticFilesManager)([] { - return std::make_shared(); - }()); - -}; - -#endif /* AppComponent_hpp */ diff --git a/server/main/src/FilesIndex.cpp b/server/main/src/FilesIndex.cpp deleted file mode 100644 index 688fddb0e..000000000 --- a/server/main/src/FilesIndex.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// -// Created by Leonid on 2019-02-10. -// - -#include "FilesIndex.hpp" - -#include - -bool FilesIndex::isValidDirName(const oatpp::String& name){ - - if(name->size() == 0){ - return false; - } - - for(v_int32 i = 0; i < name->size(); i++){ - v_char8 a = name->data()[i]; - if(a == '.' || a == ' '){ - return false; - } - } - - return true; - -} - -bool FilesIndex::isValidFileName(const oatpp::String& name){ - - if(name->size() == 0){ - return false; - } - - if(name->data()[0] == '.'){ - return false; - } - - for(v_int32 i = 0; i < name->size(); i++){ - v_char8 a = name->data()[i]; - if(a == ' ' || a == '/' || a == '\\' || a == '&' || a == '@'){ - return false; - } - } - - return true; - -} - -void FilesIndex::scanDir(const oatpp::String& relPath, std::list& dirsFound) { - - oatpp::String fullDirPath; - if(relPath->size() > 0) { - fullDirPath = m_baseDir + oatpp::String("/") + relPath; - } else { - fullDirPath = m_baseDir; - } - - DIR *d; - struct dirent *dir; - d = opendir((const char*)fullDirPath->data()); - - if(d){ - while ((dir = readdir(d)) != NULL){ - if(dir->d_type == DT_DIR){ - if(isValidDirName(dir->d_name)) { - - if(relPath->size() > 0) { - dirsFound.push_back(relPath + oatpp::String("/") + dir->d_name); - } else { - dirsFound.push_back(dir->d_name); - } - } - - }else if(dir->d_type == DT_REG){ - if(isValidFileName(dir->d_name)) { - auto info = std::make_shared(); - info->path = fullDirPath + "/" + dir->d_name; - if(oatpp::String(dir->d_name) == "index.html") { - info->key = relPath + "/"; - if(relPath->size() > 0) { - m_sitemap.addUrl(SitePath::CanonicalBase + oatpp::String("/") + info->key); - } else { - m_sitemap.addUrl(SitePath::CanonicalBase + info->key); - } - } else { - if(relPath->size() > 0) { - info->key = relPath + "/" + dir->d_name; - } else { - info->key = dir->d_name; - } - } - m_files[info->key] = info; - } - } - } - closedir(d); - } - -} - -void FilesIndex::buildIndex() { - - OATPP_LOGD("FilesIndex", "scanning dir '%s'", m_baseDir->c_str()); - - std::list scanDirs; - scanDirs.push_back(""); - - do { - - std::list newDirs; - - auto it = scanDirs.begin(); - while (it != scanDirs.end()) { - auto str = *it++; - OATPP_LOGD("FilesIndex", "scanning dir '%s'", str->c_str()); - scanDir(str, newDirs); - } - - scanDirs = newDirs; - - } while(!scanDirs.empty()); - - OATPP_LOGD("\nFilesIndex", "%d files found", m_files.size()); - - auto it = m_files.begin(); - while(it != m_files.end()) { - OATPP_LOGD("FilesIndex", "file '%s' --> '%s'", it->first->c_str(), it->second->path->c_str()); - it ++; - } - - m_sitemap.build(); - -} \ No newline at end of file diff --git a/server/main/src/FilesIndex.hpp b/server/main/src/FilesIndex.hpp deleted file mode 100644 index 71934c9b0..000000000 --- a/server/main/src/FilesIndex.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// -// Created by Leonid on 2019-02-10. -// - -#ifndef OATPP_WEBSITE_FILESINDEX_HPP -#define OATPP_WEBSITE_FILESINDEX_HPP - -#include "Sitemap.hpp" -#include "SitePath.hpp" -#include "oatpp/core/Types.hpp" -#include - -/** - * Index of all files in the baseDir; - */ -class FilesIndex { -public: - struct FileInfo { - oatpp::String key; // relative path key // ex. for "/path/index.html" key="/path/" for "/path/file.js" key="path/file.js" - oatpp::String path; // abs path - oatpp::String mimeType; - }; -private: - oatpp::String m_baseDir; - Sitemap m_sitemap; - std::unordered_map> m_files; // relative path to FileInfo - -private: - bool isValidDirName(const oatpp::String& name); - bool isValidFileName(const oatpp::String& name); - void scanDir(const oatpp::String& relPath, std::list& dirsFound); -public: - - - FilesIndex(const oatpp::String& baseDir) - : m_baseDir(baseDir) - , m_sitemap(SitePath::CanonicalBase + oatpp::String("/sitemap/")) - {} - - void buildIndex(); - - std::shared_ptr getFileInfo(const oatpp::String& key) { - auto it = m_files.find(key); - if(it != m_files.end()) { - return it->second; - } - return nullptr; - } - - Sitemap& getSitemap() { - return m_sitemap; - } - - -}; - - -#endif //OATPP_WEBSITE_FILESINDEX_HPP diff --git a/server/main/src/SitePath.hpp b/server/main/src/SitePath.hpp deleted file mode 100644 index 98c655212..000000000 --- a/server/main/src/SitePath.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// -// SitePath.hpp -// Site -// -// Created by Leonid on 5/2/18. -// Copyright © 2018 oatpp. All rights reserved. -// - -#ifndef SitePath_hpp -#define SitePath_hpp - -#include "oatpp/web/server/interceptor/RequestInterceptor.hpp" -#include "oatpp/web/protocol/http/outgoing/BufferBody.hpp" - -class SitePath { -public: -#if !defined(OATPP_TARGET_APP) - constexpr static const char* SiteHost = "localhost:8443"; - constexpr static const char* CanonicalBase = "https://localhost:8443"; - constexpr static bool doRedirect = true; -#else - constexpr static const char* SiteHost = "oatpp.io"; - constexpr static const char* CanonicalBase = "https://oatpp.io"; - constexpr static bool doRedirect = true; -#endif - -public: - - class RedirectInterceptor : public oatpp::web::server::interceptor::RequestInterceptor { - public: - - std::shared_ptr intercept(const std::shared_ptr& request) override { - if(doRedirect) { - auto host = request->getHeader(oatpp::web::protocol::http::Header::HOST); - if(!host || host != SiteHost) { - //OATPP_LOGD("Interceptor", "do redirect from https to https"); - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - response->putHeader("Location", CanonicalBase + request->getStartingLine().path.toString()); - return response; - } - } - return nullptr; - } - }; - - class RedirectToSecureInterceptor : public oatpp::web::server::interceptor::RequestInterceptor { - public: - std::shared_ptr intercept(const std::shared_ptr& request) override { - if(doRedirect) { - //OATPP_LOGD("Interceptor", "do redirect from http to https"); - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - response->putHeader("Location", CanonicalBase + request->getStartingLine().path.toString()); - return response; - } - return nullptr; - } - }; - -}; - -#endif /* SitePath_hpp */ diff --git a/server/main/src/Sitemap.cpp b/server/main/src/Sitemap.cpp deleted file mode 100644 index e0270ce3e..000000000 --- a/server/main/src/Sitemap.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// -// Created by Leonid on 2019-02-10. -// - -#include "Sitemap.hpp" - -Sitemap::Sitemap(const oatpp::String& baseUrl) - : m_baseSitemapUrl(baseUrl) - , m_indexStream(oatpp::data::stream::ChunkedBuffer::createShared()) - , m_currUrlsStream(oatpp::data::stream::ChunkedBuffer::createShared()) - , m_urlCounter(0) - , m_currUrlsStreamIndex(0) - , m_indexFile(nullptr) -{ - - *m_indexStream - << "\n" - << "\n"; - -} - -void Sitemap::startNewUrlsFile(){ - *m_currUrlsStream - << "\n" - << "\n"; - m_currUrlsStreamIndex ++; -} - -void Sitemap::finishUrlsFile(){ - if(m_currUrlsStream->getSize() > 0) { - *m_currUrlsStream << ""; - m_urlsByIndex[m_currUrlsStreamIndex] = oatpp::String(m_currUrlsStream->toString()); - m_currUrlsStream->clear(); - *m_indexStream - << "" - << "" - << m_baseSitemapUrl << m_currUrlsStreamIndex - << "" - << "\n"; - } -} - -void Sitemap::addUrl(const oatpp::String url) { - if(m_urlCounter % URLS_PER_FILE == 0) { - finishUrlsFile(); - startNewUrlsFile(); - } - *m_currUrlsStream - << ""<< "" << url << "" << "\n"; - m_urlCounter ++; -} - -oatpp::String Sitemap::getIndexFile() const { - return m_indexFile; -} - -oatpp::String Sitemap::getUrlsFile(v_int32 index) const { - auto it = m_urlsByIndex.find(index); - if(it == m_urlsByIndex.end()) { - throw std::runtime_error("No such sitemap"); - } - return it->second; -} - -void Sitemap::build() { - finishUrlsFile(); - *m_indexStream << ""; - m_indexFile = oatpp::String(m_indexStream->toString()); - - - OATPP_LOGD("Sitemap", "page_count=%d", m_urlCounter); - -} \ No newline at end of file diff --git a/server/main/src/Sitemap.hpp b/server/main/src/Sitemap.hpp deleted file mode 100644 index 5fcc98d70..000000000 --- a/server/main/src/Sitemap.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// -// Sitemap.hpp -// Site -// -// Created by Leonid on 4/29/18. -// Copyright © 2018 oatpp. All rights reserved. -// - -#ifndef Sitemap_hpp -#define Sitemap_hpp - -#include "oatpp/core/data/stream/ChunkedBuffer.hpp" -#include - -class Sitemap { -private: - constexpr static v_int32 URLS_PER_FILE = 10000; -private: - - void startNewUrlsFile(); - void finishUrlsFile(); - -private: - std::unordered_map m_urlsByIndex; - oatpp::String m_baseSitemapUrl; - std::shared_ptr m_indexStream; - std::shared_ptr m_currUrlsStream; - v_int32 m_urlCounter; - v_int32 m_currUrlsStreamIndex; - oatpp::String m_indexFile; -public: - - Sitemap(const oatpp::String& baseUrl); - - void addUrl(const oatpp::String url); - - oatpp::String getIndexFile() const; - oatpp::String getUrlsFile(v_int32 index) const; - - void build(); - -}; - -#endif /* Sitemap_hpp */ \ No newline at end of file diff --git a/server/main/src/StaticFileManager.cpp b/server/main/src/StaticFileManager.cpp deleted file mode 100644 index 05ed550bd..000000000 --- a/server/main/src/StaticFileManager.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Leonid on 2019-01-31. -// - -#include "StaticFileManager.hpp" - -oatpp::String StaticFileManager::getFile(const oatpp::String &filename, bool cache) { - - std::lock_guard lock(m_mutex); - - auto it = m_cache.find(filename); - oatpp::String buffer; - if(it == m_cache.end()) { - buffer = oatpp::String::loadFromFile(filename->c_str()); - if(buffer && cache){ - m_cache[filename] = buffer; - } - } else { - buffer = it->second; - } - - return buffer; - -} \ No newline at end of file diff --git a/server/main/src/StaticFileManager.hpp b/server/main/src/StaticFileManager.hpp deleted file mode 100644 index 9e3f4910b..000000000 --- a/server/main/src/StaticFileManager.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Leonid on 2019-01-31. -// - -#ifndef OATPP_STATIC_SERVER_STATICFILEMANAGER_HPP -#define OATPP_STATIC_SERVER_STATICFILEMANAGER_HPP - -#include "oatpp/core/data/share/MemoryLabel.hpp" -#include "oatpp/core/Types.hpp" - -#include - -class StaticFileManager { -private: - std::unordered_map m_cache; - std::mutex m_mutex; -public: - - oatpp::String getFile(const oatpp::String& filename, bool cache); - -}; - - -#endif //OATPP_STATIC_SERVER_STATICFILEMANAGER_HPP diff --git a/server/main/src/controller/StaticController.hpp b/server/main/src/controller/StaticController.hpp deleted file mode 100644 index dd5851e19..000000000 --- a/server/main/src/controller/StaticController.hpp +++ /dev/null @@ -1,195 +0,0 @@ -// -// StaticController.hpp -// web-starter-project -// -// Created by Leonid on 2/12/18. -// Copyright © 2018 oatpp. All rights reserved. -// - -#ifndef StaticController_hpp -#define StaticController_hpp - -#include "SitePath.hpp" -#include "FilesIndex.hpp" -#include "StaticFileManager.hpp" - -#include "oatpp/web/server/api/ApiController.hpp" -#include "oatpp/core/macro/codegen.hpp" -#include "oatpp/core/macro/component.hpp" - -#include - -/** - * EXAMPLE ApiController - * Basic examples of howto create ENDPOINTs - * More details on oatpp.io - */ -class StaticController : public oatpp::web::server::api::ApiController { -public: - typedef StaticController __ControllerType; -protected: - StaticController(const std::shared_ptr& objectMapper) - : oatpp::web::server::api::ApiController(objectMapper) - {} -public: - OATPP_COMPONENT(std::shared_ptr, filesIndex); - OATPP_COMPONENT(std::shared_ptr, staticFileManager); -public: - - /** - * Inject @objectMapper component here as default parameter - * Do not return bare Controllable* object! use shared_ptr! - */ - static std::shared_ptr createShared(OATPP_COMPONENT(std::shared_ptr, - objectMapper)){ - return std::shared_ptr(new StaticController(objectMapper)); - } - - /** - * Begin ENDPOINTs generation ('ApiController' codegen) - */ -#include OATPP_CODEGEN_BEGIN(ApiController) - - ENDPOINT_ASYNC("GET", "/robots.txt", Robots) { - - ENDPOINT_ASYNC_INIT(Robots) - - Action act() override { - const char* robots = - "User-agent: *\n" - "Disallow:\n" - "\n" - "# Sitemap files\n" - "Sitemap: https://oatpp.io/sitemap/\n"; - auto response = controller->createResponse(Status::CODE_200, robots); - response->putHeader(Header::CONTENT_TYPE, "text/plain; charset=utf-8"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "/sitemap", GetSitemap) { - - ENDPOINT_ASYNC_INIT(GetSitemap) - - Action act() override { - auto response = controller->createResponse(Status::CODE_200, controller->filesIndex->getSitemap().getIndexFile()); - response->putHeader(Header::CONTENT_TYPE, "text/xml"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "/sitemap/{page}", GetSitemapUrls) { - - ENDPOINT_ASYNC_INIT(GetSitemapUrls) - - v_int32 verifyInt(const oatpp::String& value) const { - bool success; - auto pageIndexText = value; - OATPP_ASSERT_HTTP(pageIndexText, Status::CODE_400, "Please specify correct page number"); - auto intValue = oatpp::utils::conversion::strToInt32(pageIndexText, success); - OATPP_ASSERT_HTTP(success, Status::CODE_400, "Please specify correct page number"); - return intValue; - } - - Action act() override { - auto pageIndex = verifyInt(request->getPathVariable("page")); - auto response = controller->createResponse(Status::CODE_200, controller->filesIndex->getSitemap().getUrlsFile(pageIndex)); - response->putHeader(Header::CONTENT_TYPE, "text/xml"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "/docs/start/step_by_step", StepByStep) { - - ENDPOINT_ASYNC_INIT(StepByStep) - - Action act() override { - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - response->putHeader("Location", oatpp::String("") + SitePath::CanonicalBase + "/docs/start/step-by-step/"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "/docs/simple_vs_async", SimpleVsAsync) { - - ENDPOINT_ASYNC_INIT(SimpleVsAsync) - - Action act() override { - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - response->putHeader("Location", oatpp::String("") + SitePath::CanonicalBase + "/docs/simple-vs-async/"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "/docs/integrations/swagger", IntegrationsSwagger) { - - ENDPOINT_ASYNC_INIT(IntegrationsSwagger) - - Action act() override { - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - response->putHeader("Location", oatpp::String("") + SitePath::CanonicalBase + "/https://oatpp.io/docs/modules/oatpp-swagger/"); - return _return(response); - } - - }; - - ENDPOINT_ASYNC("GET", "*", Static) { - - ENDPOINT_ASYNC_INIT(Static) - - Action act() override { - auto tail = request->getPathTail(); - OATPP_ASSERT_HTTP(tail, Status::CODE_400, "Empty filename"); - - oatpp::parser::Caret caret(tail); - - auto pathLabel = caret.putLabel(); - caret.findChar('?'); - - auto path = pathLabel.toString(); - - auto queryLabel = caret.putLabel(); - caret.setPosition(tail->size()); - - oatpp::parser::Caret pathCaret(path); - - /* redirect from non canonical urls */ - if(path->size() > 0 && path->data()[path->size() - 1] != '/' && !pathCaret.findChar('.')) { - auto response = OutgoingResponse::createShared(oatpp::web::protocol::http::Status::CODE_301, nullptr); - oatpp::data::stream::ChunkedBuffer stream; - stream.writeSimple(SitePath::CanonicalBase); - stream.writeSimple("/", 1); - stream.writeSimple(path); - stream.writeSimple("/", 1); - stream.writeSimple(queryLabel.toString()); - response->putHeader("Location", stream.toString()); - return _return(response); - } - - auto info = controller->filesIndex->getFileInfo(path); - if(!info) { - info = controller->filesIndex->getFileInfo(path + "/"); - } - OATPP_ASSERT_HTTP(info, Status::CODE_404, "Page not found"); - - auto buffer = controller->staticFileManager->getFile(info->path, true); - OATPP_ASSERT_HTTP(buffer, Status::CODE_500, "Can't read file"); - - return _return(controller->createResponse(Status::CODE_200, buffer)); - } - - }; - - /** - * Finish ENDPOINTs generation ('ApiController' codegen) - */ -#include OATPP_CODEGEN_END(ApiController) - -}; - -#endif /* StaticController_hpp */ diff --git a/server/main/test/tests.cpp b/server/main/test/tests.cpp deleted file mode 100644 index fdf33aaab..000000000 --- a/server/main/test/tests.cpp +++ /dev/null @@ -1,41 +0,0 @@ - -#include "oatpp-test/UnitTest.hpp" -#include - -namespace { - -class Test : public oatpp::test::UnitTest { -public: - Test() : oatpp::test::UnitTest("[MyTest]") - {} - - void onRun() override { - OATPP_LOGD(TAG, "Hello Test"); - // TODO write correct tests - } -}; - -void runTests() { - OATPP_RUN_TEST(Test); -} - -} - -int main() { - - oatpp::base::Environment::init(); - - runTests(); - - /* Print how much objects were created during app running, and what have left-probably leaked */ - /* Disable object counting for release builds using '-D OATPP_DISABLE_ENV_OBJECT_COUNTERS' flag for better performance */ - std::cout << "\nEnvironment:\n"; - std::cout << "objectsCount = " << oatpp::base::Environment::getObjectsCount() << "\n"; - std::cout << "objectsCreated = " << oatpp::base::Environment::getObjectsCreated() << "\n\n"; - - OATPP_ASSERT(oatpp::base::Environment::getObjectsCount() == 0); - - oatpp::base::Environment::destroy(); - - return 0; -} diff --git a/server/prepare.sh b/server/prepare.sh deleted file mode 100755 index 9f9ab0530..000000000 --- a/server/prepare.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh - -cd ../../ - -apt-get install -y zlib1g-dev -apt-get install -y cmake -apt-get install -y pkg-config -apt-get install -y build-essential - -##################################################### - -git clone https://github.com/oatpp/oatpp - -cd oatpp -mkdir build && cd build - -cmake -DCMAKE_BUILD_TYPE=Release -DOATPP_BUILD_TESTS=OFF .. -make install - -cd ../../ - -##################################################### - -git clone https://github.com/oatpp/oatpp-libressl - -cd oatpp-libressl - -./utility/install-deps/install-libressl.sh - -mkdir build && cd build - -cmake -DCMAKE_BUILD_TYPE=Release .. -make install - -cd ../../ - -##################################################### - -git clone https://github.com/oatpp/oatpp-zlib - -cd oatpp-zlib - -mkdir build && cd build - -cmake .. -make install - -cd ../../ - -##################################################### - -cd website/server/main - -mkdir build && cd build - -cmake .. -make - diff --git a/server/run_script.sh b/server/run_script.sh deleted file mode 100755 index ad2bc4cdf..000000000 --- a/server/run_script.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -(while true; do - echo "starting app... `date '+%d.%m.%Y - %H:%M:%S'`" >> log.txt - ./main/build/oatpp-website-exe -done) diff --git a/src/App.cpp b/src/App.cpp new file mode 100644 index 000000000..872dc67ac --- /dev/null +++ b/src/App.cpp @@ -0,0 +1,48 @@ +#include "./AppComponent.hpp" +#include "./controller/ApiController.hpp" + +#include "oatpp/network/Server.hpp" + +#include + +void run() { + + AppComponent components; + + OATPP_COMPONENT(std::shared_ptr, router); + + auto apiController = ApiController::createShared(); + router->addController(apiController); + + OATPP_COMPONENT(std::shared_ptr, connectionHandler); + OATPP_COMPONENT(std::shared_ptr, connectionProvider); + + oatpp::network::Server server(connectionProvider, connectionHandler); + + OATPP_LOGI("Oat++ Showcase", "======================================"); + OATPP_LOGI("Oat++ Showcase", "Server running on port %s", connectionProvider->getProperty("port").getData()); + OATPP_LOGI("Oat++ Showcase", "======================================"); + OATPP_LOGI("Oat++ Showcase", "Endpoints available:"); + OATPP_LOGI("Oat++ Showcase", " GET /api/v1/hello"); + OATPP_LOGI("Oat++ Showcase", " GET /api/v1/stats"); + OATPP_LOGI("Oat++ Showcase", " GET /api/v1/examples"); + OATPP_LOGI("Oat++ Showcase", " GET /api/v1/benchmarks"); + OATPP_LOGI("Oat++ Showcase", " GET /api/v1/features"); + OATPP_LOGI("Oat++ Showcase", " POST /api/v1/subscribe"); + OATPP_LOGI("Oat++ Showcase", " POST /api/v1/contact"); + OATPP_LOGI("Oat++ Showcase", " GET /api/health"); + OATPP_LOGI("Oat++ Showcase", "======================================"); + + server.run(); +} + +int main() { + + oatpp::base::Environment::init(); + + run(); + + oatpp::base::Environment::destroy(); + + return 0; +} \ No newline at end of file diff --git a/src/AppComponent.hpp b/src/AppComponent.hpp new file mode 100644 index 000000000..29c88c0b8 --- /dev/null +++ b/src/AppComponent.hpp @@ -0,0 +1,37 @@ +#ifndef AppComponent_hpp +#define AppComponent_hpp + +#include "oatpp/web/server/HttpConnectionHandler.hpp" +#include "oatpp/web/server/HttpRouter.hpp" +#include "oatpp/network/tcp/server/ConnectionProvider.hpp" +#include "oatpp/parser/json/mapping/ObjectMapper.hpp" +#include "oatpp/core/macro/component.hpp" + +class AppComponent { +public: + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { + return oatpp::network::tcp::server::ConnectionProvider::createShared( + {"0.0.0.0", 8000, oatpp::network::Address::IP_4} + ); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { + return oatpp::web::server::HttpRouter::createShared(); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { + OATPP_COMPONENT(std::shared_ptr, router); + return oatpp::web::server::HttpConnectionHandler::createShared(router); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { + auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); + objectMapper->getDeserializer()->getConfig()->allowUnknownFields = false; + objectMapper->getSerializer()->getConfig()->useBeautifier = true; + return objectMapper; + }()); + +}; + +#endif \ No newline at end of file diff --git a/src/Dockerfile b/src/Dockerfile new file mode 100644 index 000000000..aa0fff9b0 --- /dev/null +++ b/src/Dockerfile @@ -0,0 +1,30 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y \ + build-essential \ + cmake \ + git \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /tmp +RUN git clone https://github.com/oatpp/oatpp.git && \ + cd oatpp && \ + mkdir build && cd build && \ + cmake .. && \ + make -j$(nproc) && \ + make install && \ + cd ../.. && rm -rf oatpp + +WORKDIR /app +COPY . . + +RUN mkdir -p build && cd build && \ + cmake .. && \ + make -j$(nproc) + +EXPOSE 8000 + +CMD ["./build/oatpp-showcase-exe"] \ No newline at end of file diff --git a/src/controller/ApiController.hpp b/src/controller/ApiController.hpp new file mode 100644 index 000000000..504fb3583 --- /dev/null +++ b/src/controller/ApiController.hpp @@ -0,0 +1,370 @@ +#ifndef ApiController_hpp +#define ApiController_hpp + +#include "dto/DTOs.hpp" +#include "oatpp/web/server/api/ApiController.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/macro/component.hpp" +#include +#include + +#include OATPP_CODEGEN_BEGIN(ApiController) + +class ApiController : public oatpp::web::server::api::ApiController { +private: + std::chrono::steady_clock::time_point startTime; + std::atomic requestCounter{0}; + std::atomic activeConnections{0}; + + float getRandomMemoryUsage() { + static std::random_device rd; + static std::mt19937 gen(rd()); + static std::uniform_real_distribution<> dis(10.0, 15.0); + return static_cast(dis(gen)); + } + + // Helper to add CORS headers to any response + void addCorsHeaders(const std::shared_ptr& response) { + response->putHeader("Access-Control-Allow-Origin", "*"); + response->putHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); + response->putHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); + } + +public: + ApiController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) + : oatpp::web::server::api::ApiController(objectMapper) + , startTime(std::chrono::steady_clock::now()) + {} + + static std::shared_ptr createShared( + OATPP_COMPONENT(std::shared_ptr, objectMapper) + ){ + return std::make_shared(objectMapper); + } + + ENDPOINT("OPTIONS", "*", cors) { + auto response = createResponse(Status::CODE_204, ""); + addCorsHeaders(response); + return response; + } + + ENDPOINT("GET", "/", root) { + auto response = createResponse(Status::CODE_200, + "Oat++ Showcase API v1.0 - Visit /api/v1/hello to get started"); + addCorsHeaders(response); + return response; + } + + ENDPOINT("GET", "/api/v1/hello", hello) { + requestCounter++; + auto dto = MessageDto::createShared(); + dto->message = "Hello from Oat++! 🚀"; + dto->framework = "Oat++"; + dto->version = "1.3.1"; + + auto response = createDtoResponse(Status::CODE_200, dto); + addCorsHeaders(response); + return response; + } + + ENDPOINT("GET", "/api/v1/stats", stats) { + requestCounter++; + auto dto = StatsDto::createShared(); + + auto now = std::chrono::steady_clock::now(); + auto uptime = std::chrono::duration_cast(now - startTime).count(); + + dto->totalRequests = requestCounter.load(); + dto->uptime = uptime; + dto->version = "1.3.1"; + dto->memoryUsageMB = getRandomMemoryUsage(); + dto->activeConnections = activeConnections.load(); + + auto response = createDtoResponse(Status::CODE_200, dto); + addCorsHeaders(response); + return response; + } + + ENDPOINT("GET", "/api/v1/examples", examples) { + requestCounter++; + + auto list = oatpp::List>::createShared(); + + // Example 1 + auto ex1 = ExampleDto::createShared(); + ex1->id = "hello-world"; + ex1->title = "Hello World Endpoint"; + ex1->description = "Create your first REST endpoint in Oat++"; + ex1->code = R"(ENDPOINT("GET", "/hello", hello) { + auto dto = MessageDto::createShared(); + dto->message = "Hello World!"; + return createDtoResponse(Status::CODE_200, dto); +})"; + ex1->language = "cpp"; + ex1->category = "basics"; + list->push_back(ex1); + + // Example 2 + auto ex2 = ExampleDto::createShared(); + ex2->id = "post-endpoint"; + ex2->title = "POST Request Handler"; + ex2->description = "Handle POST requests with DTOs"; + ex2->code = R"(ENDPOINT("POST", "/users", createUser, + BODY_DTO(Object, userDto)) { + // Validate and process user data + if(!userDto->email) { + return createResponse(Status::CODE_400, "Email required"); + } + return createDtoResponse(Status::CODE_201, userDto); +})"; + ex2->language = "cpp"; + ex2->category = "rest-api"; + list->push_back(ex2); + + // Example 3 + auto ex3 = ExampleDto::createShared(); + ex3->id = "path-params"; + ex3->title = "Path Parameters"; + ex3->description = "Extract parameters from URL paths"; + ex3->code = R"(ENDPOINT("GET", "/users/{userId}", getUserById, + PATH(Int32, userId)) { + auto dto = UserDto::createShared(); + dto->id = userId; + dto->name = "User " + std::to_string(userId); + return createDtoResponse(Status::CODE_200, dto); +})"; + ex3->language = "cpp"; + ex3->category = "rest-api"; + list->push_back(ex3); + + // Example 4 + auto ex4 = ExampleDto::createShared(); + ex4->id = "query-params"; + ex4->title = "Query Parameters"; + ex4->description = "Handle URL query parameters"; + ex4->code = R"(ENDPOINT("GET", "/search", search, + QUERY(String, q), + QUERY(Int32, limit, "limit")) { + auto response = ResultDto::createShared(); + response->query = q; + response->limit = limit ? limit : 10; + return createDtoResponse(Status::CODE_200, response); +})"; + ex4->language = "cpp"; + ex4->category = "rest-api"; + list->push_back(ex4); + + // Example 5 + auto ex5 = ExampleDto::createShared(); + ex5->id = "async-handler"; + ex5->title = "Async Request Handler"; + ex5->description = "Non-blocking asynchronous endpoints"; + ex5->code = R"(ENDPOINT_ASYNC("GET", "/async", Async) { + ENDPOINT_ASYNC_INIT(Async) + + Action act() override { + auto dto = MessageDto::createShared(); + dto->message = "Async response"; + return _return(controller->createDtoResponse( + Status::CODE_200, dto)); + } +};)"; + ex5->language = "cpp"; + ex5->category = "advanced"; + list->push_back(ex5); + + // Example 6 + auto ex6 = ExampleDto::createShared(); + ex6->id = "websocket"; + ex6->title = "WebSocket Connection"; + ex6->description = "Real-time bidirectional communication"; + ex6->code = R"(ENDPOINT("GET", "/ws", ws, + REQUEST(std::shared_ptr, request)) { + return oatpp::websocket::Handshaker::serversideHandshake( + request->getHeaders(), + std::make_shared() + ); +})"; + ex6->language = "cpp"; + ex6->category = "websocket"; + list->push_back(ex6); + + auto response = createDtoResponse(Status::CODE_200, list); + addCorsHeaders(response); + return response; + } + + ENDPOINT("POST", "/api/v1/subscribe", subscribe, + BODY_DTO(Object, dto)) { + requestCounter++; + + auto response = ResponseDto::createShared(); + + if(!dto->email || dto->email->empty()) { + response->success = false; + response->message = "Email is required"; + auto resp = createDtoResponse(Status::CODE_400, response); + addCorsHeaders(resp); + return resp; + } + + // Email validation regex + std::string email = dto->email->c_str(); + if(email.find('@') == std::string::npos) { + response->success = false; + response->message = "Invalid email format"; + auto resp = createDtoResponse(Status::CODE_400, response); + addCorsHeaders(resp); + return resp; + } + + response->success = true; + response->message = "Successfully subscribed to newsletter!"; + auto resp = createDtoResponse(Status::CODE_200, response); + addCorsHeaders(resp); + return resp; + } + + ENDPOINT("POST", "/api/v1/contact", contact, + BODY_DTO(Object, dto)) { + requestCounter++; + + auto response = ResponseDto::createShared(); + + if(!dto->email || !dto->name || !dto->message) { + response->success = false; + response->message = "All fields are required"; + auto resp = createDtoResponse(Status::CODE_400, response); + addCorsHeaders(resp); + return resp; + } + + response->success = true; + response->message = "Message sent successfully! We'll get back to you soon."; + auto resp = createDtoResponse(Status::CODE_200, response); + addCorsHeaders(resp); + return resp; + } + + ENDPOINT("GET", "/api/v1/benchmarks", benchmarks) { + requestCounter++; + + auto list = oatpp::List>::createShared(); + + auto oatpp = BenchmarkDto::createShared(); + oatpp->framework = "Oat++"; + oatpp->requestsPerSecond = 500000; + oatpp->latencyMs = 0.2f; + oatpp->memoryMB = 12; + oatpp->category = "cpp"; + list->push_back(oatpp); + + auto express = BenchmarkDto::createShared(); + express->framework = "Express.js"; + express->requestsPerSecond = 25000; + express->latencyMs = 8.0f; + express->memoryMB = 45; + express->category = "javascript"; + list->push_back(express); + + auto fastapi = BenchmarkDto::createShared(); + fastapi->framework = "FastAPI"; + fastapi->requestsPerSecond = 18000; + fastapi->latencyMs = 12.0f; + fastapi->memoryMB = 38; + fastapi->category = "python"; + list->push_back(fastapi); + + auto spring = BenchmarkDto::createShared(); + spring->framework = "Spring Boot"; + spring->requestsPerSecond = 22000; + spring->latencyMs = 10.0f; + spring->memoryMB = 150; + spring->category = "java"; + list->push_back(spring); + + auto aspnet = BenchmarkDto::createShared(); + aspnet->framework = "ASP.NET Core"; + aspnet->requestsPerSecond = 85000; + aspnet->latencyMs = 2.5f; + aspnet->memoryMB = 35; + aspnet->category = "csharp"; + list->push_back(aspnet); + + auto resp = createDtoResponse(Status::CODE_200, list); + addCorsHeaders(resp); + return resp; + } + + ENDPOINT("GET", "/api/v1/features", features) { + requestCounter++; + + auto list = oatpp::List>::createShared(); + + auto f1 = FeatureDto::createShared(); + f1->id = "performance"; + f1->title = "Blazing Fast Performance"; + f1->description = "Handle millions of requests per second with minimal latency"; + f1->icon = "zap"; + f1->benefits = {"500K+ req/sec", "Sub-millisecond latency", "Low CPU usage"}; + list->push_back(f1); + + auto f2 = FeatureDto::createShared(); + f2->id = "lightweight"; + f2->title = "Zero Dependencies"; + f2->description = "Pure C++ framework with no external dependencies"; + f2->icon = "feather"; + f2->benefits = {"Small binary size", "Easy deployment", "No bloat"}; + list->push_back(f2); + + auto f3 = FeatureDto::createShared(); + f3->id = "typesafe"; + f3->title = "Type-Safe DTOs"; + f3->description = "Compile-time type checking for all API endpoints"; + f3->icon = "shield"; + f3->benefits = {"Catch errors early", "Auto serialization", "Clear API contracts"}; + list->push_back(f3); + + auto f4 = FeatureDto::createShared(); + f4->id = "async"; + f4->title = "Async/Await Support"; + f4->description = "Non-blocking I/O for maximum concurrency"; + f4->icon = "cpu"; + f4->benefits = {"Handle 10K+ connections", "Efficient resource use", "Scalable design"}; + list->push_back(f4); + + auto resp = createDtoResponse(Status::CODE_200, list); + addCorsHeaders(resp); + return resp; + } + + ENDPOINT("GET", "/api/health", health) { + requestCounter++; + auto response = ResponseDto::createShared(); + response->success = true; + response->message = "Server is healthy"; + auto resp = createDtoResponse(Status::CODE_200, response); + addCorsHeaders(resp); + return resp; + } + + ENDPOINT("GET", "/api/v1/docs/{section}", getDocs, + PATH(String, section)) { + requestCounter++; + + auto dto = DocsSectionDto::createShared(); + dto->id = section; + dto->title = "Documentation: " + section; + dto->content = "Documentation content for " + section + " section"; + dto->category = "documentation"; + dto->tags = {"oatpp", "cpp", "web-framework"}; + + auto resp = createDtoResponse(Status::CODE_200, dto); + addCorsHeaders(resp); + return resp; + } +}; + +#include OATPP_CODEGEN_END(ApiController) + +#endif \ No newline at end of file diff --git a/src/dto/DTOs.hpp b/src/dto/DTOs.hpp new file mode 100644 index 000000000..1f58f8f55 --- /dev/null +++ b/src/dto/DTOs.hpp @@ -0,0 +1,84 @@ +#ifndef DTOs_hpp +#define DTOs_hpp + +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/Types.hpp" + +#include OATPP_CODEGEN_BEGIN(DTO) + +class MessageDto : public oatpp::DTO { + DTO_INIT(MessageDto, DTO) + DTO_FIELD(String, message); + DTO_FIELD(String, framework); + DTO_FIELD(String, version); +}; + +class StatsDto : public oatpp::DTO { + DTO_INIT(StatsDto, DTO) + DTO_FIELD(Int64, totalRequests); + DTO_FIELD(Int64, uptime); + DTO_FIELD(String, version); + DTO_FIELD(Float32, memoryUsageMB); + DTO_FIELD(Int32, activeConnections); +}; + +class ExampleDto : public oatpp::DTO { + DTO_INIT(ExampleDto, DTO) + DTO_FIELD(String, id); + DTO_FIELD(String, title); + DTO_FIELD(String, description); + DTO_FIELD(String, code); + DTO_FIELD(String, language); + DTO_FIELD(String, category); +}; + +class SubscribeDto : public oatpp::DTO { + DTO_INIT(SubscribeDto, DTO) + DTO_FIELD(String, email); + DTO_FIELD(String, name); +}; + +class ContactDto : public oatpp::DTO { + DTO_INIT(ContactDto, DTO) + DTO_FIELD(String, name); + DTO_FIELD(String, email); + DTO_FIELD(String, message); +}; + +class ResponseDto : public oatpp::DTO { + DTO_INIT(ResponseDto, DTO) + DTO_FIELD(Boolean, success); + DTO_FIELD(String, message); + DTO_FIELD(String, data); // Changed from Object to String +}; + +class BenchmarkDto : public oatpp::DTO { + DTO_INIT(BenchmarkDto, DTO) + DTO_FIELD(String, framework); + DTO_FIELD(Int64, requestsPerSecond); + DTO_FIELD(Float32, latencyMs); + DTO_FIELD(Int32, memoryMB); + DTO_FIELD(String, category); +}; + +class FeatureDto : public oatpp::DTO { + DTO_INIT(FeatureDto, DTO) + DTO_FIELD(String, id); + DTO_FIELD(String, title); + DTO_FIELD(String, description); + DTO_FIELD(String, icon); + DTO_FIELD(List, benefits); +}; + +class DocsSectionDto : public oatpp::DTO { + DTO_INIT(DocsSectionDto, DTO) + DTO_FIELD(String, id); + DTO_FIELD(String, title); + DTO_FIELD(String, content); + DTO_FIELD(String, category); + DTO_FIELD(List, tags); +}; + +#include OATPP_CODEGEN_END(DTO) + +#endif \ No newline at end of file